编程语言
首页 > 编程语言> > PHP回发URL谷歌钱包IAP

PHP回发URL谷歌钱包IAP

作者:互联网

我用于Google钱包应用内付款的回发php如下所示:

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

哦哦出现问题了.
由于技术问题,我们无法完成您的购买.
问题的详细信息如下:
很遗憾,我们无法与商家的商家确认您的购买
服务器.您的订单已被取消.如果有请联系商家
这个问题还在继续.

解决方法:

您应该对发送到postback.php的原始编码jwt数据进行解码.
至少,您的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);
?>

标签:php,in-app-purchase,jwt,postback
来源: https://codeday.me/bug/20191009/1880159.html