Google 应用内付款:如何处理 Google 的回发 JWT

Posted

技术标签:

【中文标题】Google 应用内付款:如何处理 Google 的回发 JWT【英文标题】:Google in-app payments: howto to handle Google's postback JWT 【发布时间】:2012-03-13 01:00:35 【问题描述】:

也许这是一个愚蠢的问题,但我不是高级程序员。我有 已成功为我的应用设置应用内付款,但它只有效 不使用回发网址。

我已经在 Google 上搜索了好几个小时,试图自己解决这个问题 成功。希望有人可以帮助我。我已经包含了脚本 处理明显有问题的帖子数据。这就是谷歌所说的:

您的服务器必须为每个 HTTP POST 消息发送 200 OK 响应 Google 发送到您的回发 URL。要发送此回复,您的 服务器必须:

解码在 POST 的 jwt 参数中指定的 JWT 信息。检查以确保订单正常。获取值 JWT 的“orderId”字段。发送只有一件事的 200 OK 响应 在正文中:您在第 3 步中获得的“orderId”值。

这是我写的,但据我所知,没有办法对其进行测试(如何模拟来自 Google 的帖子?)。

require_once 'include/jwt.php'; // including luciferous jwt library 

$encoded_jwt = $_POST['jwt']; 
$decoded_jwt = JWT::decode($encoded_jwt, "fdNAbAdfkCDakJQBdViErg"); 
$decoded_jwt_array = (array) $decoded_jwt; 
$orderId = $decoded_jwt_array['response']['orderId']; 

header("HTTP/1.0 200 OK"); 
echo $orderId; 

任何帮助将不胜感激。谢谢蒂姆

【问题讨论】:

【参考方案1】:

一年后我也遇到了同样的问题,用下面的代码解决了:

require_once 'include/jwt.php'; // including luciferous jwt library 

$encoded_jwt = $_POST['jwt']; 
$decodedJWT = JWT::decode($jwt, $sellerSecret);

// get orderId
$orderId = $decodedJWT->response->orderId;

header("HTTP/1.0 200 OK"); 
echo $orderId; 

Google Wallet 的 In App Purchase 文档相对较新,在回调方面缺乏。此代码适用于沙盒和生产端,只需确保您使用自己的卖家密码。

【讨论】:

上面的代码对我有用。 Google 在此处提供了一个更完整的错误检查示例(在 Python 中):developers.google.com/commerce/wallet/digital/training/…【参考方案2】:

在您的 Google 电子钱包设置中将 Sandbox Postback URL 设置为测试页面,然后将请求记录到该页面。您将看到一个 JWT。用于测试。

【讨论】:

以上是关于Google 应用内付款:如何处理 Google 的回发 JWT的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 和 VueJS:如何处理使用 Google 登录但未在我的应用中注册的用户?用户资料管理

如何处理 Google App Engine 中的秘密?

Google API V 3.0 .Net 库和 Google OAuth2 如何处理刷新令牌

如何处理 google firebase web app 的安全性?

如何处理 Google Map Direction API 中的 0,0 标记错误?

是否可以查询 Google Play 服务器以了解用户是否购买了商品?