PHP回传网址,谷歌钱包IAP
我对谷歌钱包应用程序内支付回传的PHP是这样的:PHP回传网址,谷歌钱包IAP
<?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);
?>
是你的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);
?>
传递既在JavaScript单独购买()函数(所以purchase_hotdog() and purchase_cake()
你举的例子非常完美@Pawan谢谢。我唯一需要的变化是路径JWT.php上。
我现在用
require_once(dirname(FILE))。 “/ lib目录/ JWT。PHP的“);
保罗
这实际上不会给你订单ID,谷歌需要,你可以用我的PHP回传解决方案上。http://*.com/a/16845353/ 1418360 – Bashevis 2013-05-30 20:30:56
@Bashevis请注意,如果您忽略了它,我使用了print_r。响应字段包含orderid,请看[这里](https://developers.google.com/commerce/wallet/digital/docs/postback#jwt )。与你的评论相反,这**实际上给了谷歌需要的orderid。 – 2013-06-04 07:07:11