PHP обратный URL-адрес кошелька Google IAP - PullRequest
1 голос
/ 14 февраля 2012

Мой постбэк php для платежей через Google-кошелек выглядит так:

<?php
$payload = array(
  "iss" => $sellerIdentifier,
  "aud" => "Google",
  "typ" => "google/payments/inapp/item/v1",
  "exp" => time() + 3600,
  "iat" => time(),
  "request" => array (
    "name" => "pizza ",
    "description" => "yum yum",
    "price" => "10.50",
    "currencyCode" => "USD",
    "sellerData" => "",
  )
);
$testToken = JWT::encode($payload, $sellerSecret);
?>

У меня два вопроса:

1. почему я вижу эту ошибку? Была проблема. Не удалось завершить покупку из-за технической проблемы. Подробности проблемы ниже: К сожалению, мы не смогли подтвердить вашу покупку на сервере продавца. Ваш заказ был отменен. Пожалуйста, свяжитесь с продавцом, если проблема не исчезнет.

2. Как это может работать, если у меня есть несколько предметов для продажи? Пример PHP выше позволяет вам купить «пиццу за 10,50 долларов», как я могу добавить еще один предмет, например «хот-дог за 2,99 долларов»?

пс: я изучил следующую документацию:

https://developers.google.com/in-app-payments/docs/tutorial#4

https://developers.google.com/in-app-payments/docs/jsreference#jwt

https://developers.google.com/in-app-payments/docs/postback

Спасибо за ваше время.

// обновление!

postback.php: require_once 'JWT.php';

JWT.php: $ json = json_encode ($ input, JSON_UNESCAPED_SLASHES);

Э-э-э Была проблема. Не удалось завершить покупку из-за технической проблемы. Подробности проблемы ниже: К сожалению, мы не смогли подтвердить вашу покупку у продавца сервер. Ваш заказ был отменен. Пожалуйста, свяжитесь с продавцом, если эта проблема продолжается.

Ответы [ 4 ]

1 голос
/ 27 июня 2012

Вы должны декодировать необработанные закодированные данные jwt, отправленные на ваш postback.php.Как минимум, ваш postback.php должен выглядеть примерно так, как показано ниже (при условии, что ваш postback.php размещен на сервере apache).Надеюсь, это поможет

<?php
require_once(dirname(__FILE__) . "JWT.php");

$response = isset($HTTP_RAW_POST_DATA) ?
    $HTTP_RAW_POST_DATA : file_get_contents("php://input");
$response = substr_replace($response, "", 0, 4);   //remove "jwt=" from raw http data
$response = JWT::decode($response, "your secret key here");
print_r($response->response);
?>
0 голосов
/ 31 августа 2013

Ваш пример работал отлично @Pawan.Благодарю.Единственное, что мне было нужно, это путь к JWT.php.

Теперь я использую

require_once (dirname ( FILE ). "/ Lib / JWT.php ");

Пол

0 голосов
/ 05 июля 2013

для создания хот-дога дополнительно сделайте это:

<?php
$cake_payload = array(
  "iss" => $sellerIdentifier,
  "aud" => "Google",
  "typ" => "google/payments/inapp/item/v1",
  "exp" => time() + 3600,
  "iat" => time(),
  "request" => array (
    "name" => "cake",
    "description" => "yum yum",
    "price" => "10.50",
    "currencyCode" => "USD",
    "sellerData" => "",
  )
);
$hotdog_payload = array(
  "iss" => $sellerIdentifier,
  "aud" => "Google",
  "typ" => "google/payments/inapp/item/v1",
  "exp" => time() + 3600,
  "iat" => time(),
  "request" => array (
    "name" => "hotdog",
    "description" => "yum yum",
    "price" => "5.99",
    "currencyCode" => "USD",
    "sellerData" => "",
  )
);

$cake_token = JWT::encode($cake_payload, $sellerSecret);
$hotdog_token = JWT::encode($hotdog_payload, $sellerSecret);
?>

передайте обе функции в отдельную покупку () в javascript (так что purchase_hotdog() and purchase_cake()

0 голосов
/ 05 июля 2013

Ваш postback.php доступен без пароля и имени пользователя .htaccess? У меня это было какое-то время - сводило меня с ума ... пока я не понял, что мой postback.php защищен паролем -.-

...