主代码:

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"
 

Android内购订单验证 --- nodejs实现的更多相关文章

  1. ios 苹果内购订单验证 --- nodejs实现

    实现代码 function IosPlayVerify(data,orderid,cb) { itunesPost(data,function (error,responseData) { if (e ...

  2. Android内购订单验证 --- php实现

    直接上代码: function googleVerify($sdata,$google_public_key) { $sdata = json_decode($sdata,true); $in_app ...

  3. ios 苹果内购订单验证 --- php实现

    验证函数: function appleVerify($receipt_data,$orderId = 0) { /* * 21000 App Store不能读取你提供的JSON对象 * 21002 ...

  4. php苹果内购订单验证

    /** * 21000 App Store不能读取你提供的JSON对象 * 21002 receipt-data域的数据有问题 * 21003 receipt无法通过验证 * 21004 提供的sha ...

  5. iOS开发 使用RMStore简化内购代码 + 内购买订单验证

    现在很多的app里面都添加了应用内购买,网上关于苹果证书的生成和设置的教程比较多,这里就不多赘述了,推荐几个个人觉得说的比较详细的网址: http://www.jianshu.com/p/86ac7d ...

  6. 苹果开发——App内购以及验证store的收据(二)

    原地址:http://zengwu3915.blog.163.com/blog/static/2783489720137605156966?suggestedreading 三. 客户端使用Store ...

  7. 苹果内购服务器验证之receipt返回多组in_app思考

    最近有部分用户反映,苹果内购充值失败,经过测试总结有几个关键点出现问题 1.app购买成功苹果没有返回票据,属于票据遗漏(取决于苹果服务器的响应状况),只能客户端进行监听刷新等处理 2.app连续购买 ...

  8. 苹果开发——App内购以及验证store的收据(一)

    原地址:http://zengwu3915.blog.163.com/blog/static/27834897201375105236580?suggestedreading 发了几天时间在网上折腾了 ...

  9. c++ boost 苹果内购 IAP验证

    // 1111.cpp: 定义控制台应用程序的入口点. // #include "stdafx.h" #include <cstdlib> #include <i ...

随机推荐

  1. 如何解读IL代码

    如何解读IL代码 关于IL代码,我有将从三个方面去揭开它神秘的面纱.IL代码是什么?我们为什么要去读懂IL代码?我们如何去读懂IL代码?这三个问题的解答,将是我解读IL代码的整体思路. IL代码是什么 ...

  2. CentOS搭建KMS服务器

    安装 使用命令: #CentOS,Redhat,Fedora等请选择CentOS脚本 wget https://raw.githubusercontent.com/dakkidaze/one-key- ...

  3. MySQL的btree索引和hash索引

    Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-T ...

  4. ASP.NET 4.5 尚未在 Web 服务器上注册。您需要手动将 Web 服务器配置为使用 ASP.NET 4.5,这样您的网站才能正确运行。

    系统换成Windows10安装VS2012打开项目总提示:vs2012 aps.NET 4.5尚未在web服务器上注册,您需要手动将Web服务器配置为使用ASP.Net 4.5,这样您的网站才可能正确 ...

  5. 关于UnitOfWork

    按照http://martinfowler.com/eaaCatalog/unitOfWork.html这篇文章的介绍,UnitOfWork是为了维护对象的变化,A Unit of Work keep ...

  6. Angular搭建脚手架

    1.安装CLI: cnpm install -g @angular/cli //卸载: npm uninstall -g @angular/cli   npm cache clean 2.检测是否成功 ...

  7. 【工作中学习1】两个设计模式:Singleton(单例)和 Adapter(适配器)

    好久没有写自己的学习小博客,罪过罪过..最近本菜鸟在项目中接触到经常用到的设计模式,首先是Singleton(单例),这个相信大家都会用到很多,所以自己用代码实现一下,有助于自己学习理解,如有不对,请 ...

  8. android selector中使用shape

    <shape> <!-- 实心 -->     <solid android:color="#ff9d77"/> <!-- 渐变 --&g ...

  9. expres webpack es6 babel 构建多页系统开发架构

    开始写点什么... 只是一个思路........

  10. Linux读取NTFS类型数据盘

    Windows的文件系统通常使用NTFS或者FAT32格式,而Linux的文件系统格式通常是EXT系列,请参考下面方法: 1) 在Linux系统上使用以下命令安装ntfsprogs软件使得Linux能 ...