概述
主代码:
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}; }
辅助函数:
// 把字符串分割为一连串更小的部分 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); }
参数说明:
//receop:字符串或者json对象都可
//receop和sing都是客户端购买时google返回的订单信息
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"
转载于:https://www.cnblogs.com/cj8988/p/10648749.html
最后
以上就是香蕉季节为你收集整理的Android内购订单验证 --- nodejs实现的全部内容,希望文章能够帮你解决Android内购订单验证 --- nodejs实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复