1

我用于谷歌钱包应用内支付的回发 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);

哦哦。有问题。由于技术问题,我们无法完成您的购买。问题详情如下: 很遗憾,我们无法通过商家的服务器确认您的购买。您的订单已被取消。如果此问题仍然存在,请与商家联系。

4

4 回答 4

1

您应该解码发送到您的 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);
?>
于 2012-06-27T11:18:42.467 回答
0

做一个热狗另外这样做:

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

于 2013-07-05T01:12:58.783 回答
0

您的示例完美运行@Pawan。谢谢。我需要的唯一更改是在 JWT.php 的路径上。

我现在用

需要一次(目录名(文件)。“/lib/JWT.php”);

保罗

于 2013-08-31T06:59:56.003 回答
0

您的 postback.php 是否可以在没有 .htaccess 密码和用户名的情况下访问?我有一段时间 - 让我发疯......直到我意识到我的 postback.php 受密码保护 -.-

于 2013-07-05T01:09:18.110 回答