PHP回传网址,谷歌钱包IAP

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

这实际上不会给你订单ID,谷歌需要,你可以用我的PHP回传解决方案上。http://*.com/a/16845353/ 1418360 – Bashevis 2013-05-30 20:30:56

+0

@Bashevis请注意,如果您忽略了它,我使用了print_r。响应字段包含orderid,请看[这里](https://developers.google.com/commerce/wallet/digital/docs/postback#jwt )。与你的评论相反,这**实际上给了谷歌需要的orderid。 – 2013-06-04 07:07:11

是你的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的“);

保罗