PHP postback url google wallet IAP

Мой postback php для платежей в google-кошельке 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 доллара»?

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

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);

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

Вы должны декодировать необработанные закодированные данные 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); ?> 

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

чтобы сделать хотдог дополнительно:

 <?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); ?> 

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

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

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

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

Павел