Java-google play支付如何用php验证订单完成的合法性

发布于 2016-12-21 09:12:39 字数 843 浏览 1398 评论 4

在接google play的充值渠道,用户购买和支付都在客户端完成操作,用户支付完成后,客户端会下发支付信息给充值平台(php开发的),充值平台需要验证这些信息的合法性。请教有开发过的同学,如何使用php验证支付信息。

订单相关信息
"nonce" : 1836535032137741465,
"orders" :
[{ "notificationId" : "android.test.purchased",
"orderId" : "transactionId.android.test.purchased",
"packageName" : "com.example.dungeons",
"productId" : "android.test.purchased",
"developerPayload" : "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ",
"purchaseTime" : 1290114783411,
"purchaseState" : 0,
"purchaseToken" : "rojeslcdyyiapnqcynkjyyjh" }]
}

这是文档http://developer.android.com/guide/google/play/billing/billing_overview.html

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

虐人心 2017-10-19 15:40:52

得到高人的指点。可以这么验证。

$signture_data = '{"nonce":2923936465474897294,"orders":[{"notificationId":"android.test.purchased","orderId":"transactionId.android.test.purchased","packageName":"com.kunlun.fysg.test","productId":"android.test.purchased","purchaseTime":1346916115611,"purchaseState":0}]}';

$signture = '';

//google app 提供的public key
$public_key = "";

$public_key = chunk_split($public_key, 64, "n") . "-----END PUBLIC KEY-----";

$public_key_handle = openssl_get_publickey($public_key);
$result = openssl_verify($signture_data, base64_decode($signture), $public_key_handle, OPENSSL_ALGO_SHA1);
if ($result == 1)
{
echo "good";
}
elseif ($ok == 0)
{
echo "bad";
}
else
{
echo "ugly, error checking signature";
}

虐人心 2017-04-26 21:59:35

刚刚做完V3版本的解密。

public_key 分隔应该是缺了前面一部分

$public_key = "-----BEGIN PUBLIC KEY-----n" . chunk_split($public_key, 64, "n") . "-----END PUBLIC KEY-----";

解密算法同V2一样

想挽留 2017-02-20 23:32:49

purchaseState The purchase state of the order. Possible values are 0 (purchased), 1 (canceled), 2 (refunded), or 3 (expired, for subscription purchases only).

注意这个参数值

https://developer.android.com/guide/google/play/billing/billing_reference.html#billing-intents

偏爱自由 2017-02-14 23:45:10

你好,我最近也在做google play verifying purchase on server ,但是遇到的问题是客户端传过来的$signture_data 却不是上面那样的json。
客户端传过来的json是这样的:
'{
"orderId":"12999763169054705758.1371079406387615",
"packageName":"com.example.app",
"productId":"exampleSku",
"purchaseTime":1345678900000,
"purchaseState":0,
"developerPayload":"bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ",
"purchaseToken":"rojeslcdyyiapnqcynkjyyjh"
}'

这个是google play的文档:
http://developer.android.com/google/play/billing/billing_integrate.html
客户端用的是v3的api。
请问要怎么去验证支付的正确性?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文