我是靠谱客的博主 香蕉季节,这篇文章主要介绍Android内购订单验证 --- nodejs实现,现在分享给大家,希望可以做个参考。

主代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function AndroidPlayVerify(inappPurchaseData, inappDataSignature) { let verify = crypto.createVerify('RSA-SHA1');//请注意,这里要用RSA-SHA1 if(typeof inappPurchaseData === "object"){ inappPurchaseData = JSON.stringify(inappPurchaseData); } let PHP_EOL = 'n';//实际上就是换行符 //这里要将公钥转换成64个字符一行的文本块。 let publicKey = "-----BEGIN PUBLIC KEY-----" + PHP_EOL + chunk_split(googlePublicKey, 64, PHP_EOL) + "-----END PUBLIC KEY-----"; verify.update(inappPurchaseData); let isSuccess = verify.verify(publicKey, Buffer.from(inappDataSignature, 'base64')); //验证数据 var purcaseTime = 0; var status = 0; if(isSuccess){ let ptimeObj = JSON.parse(inappPurchaseData); if(ptimeObj.purchaseTime != undefined) purcaseTime = ptimeObj.purchaseTime; status = 1; } return {status:status,ptime:purcaseTime}; }

辅助函数:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 把字符串分割为一连串更小的部分 function chunk_split(paramString, paramLength, paramEnd = 'n') { let p = []; let s = paramString; while (s.length > paramLength) { let s1 = s.substr(0, paramLength); let s2 = s.substr(paramLength); s = s2; p.push(s1); } if (s.length > 0) { p.push(s); } p.push(''); return p.join(paramEnd); }

参数说明:

复制代码
1
//receop:字符串或者json对象都可
//receop和sing都是客户端购买时google返回的订单信息
复制代码
1
var receop = '{"orderId":"GPA.33","packageName":"com.fill","productId":"com.word.oin1","purchaseTime":1540265097944,"purchaseState":0,"purchaseToken":"ogiG0n"}';
var sing = "fFbfYThbWc270zrby/ADKiLWHNEdp/mLFvLO+OiryTgAJOgPMuUygCnXYTGBTC+MWazk"
复制代码
1
 

 

转载于:https://www.cnblogs.com/cj8988/p/10648749.html

最后

以上就是香蕉季节最近收集整理的关于Android内购订单验证 --- nodejs实现的全部内容,更多相关Android内购订单验证内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部