zoukankan      html  css  js  c++  java
  • Android内购订单验证 --- nodejs实现

    主代码:

    function AndroidPlayVerify(inappPurchaseData, inappDataSignature) {
        let verify = crypto.createVerify('RSA-SHA1');//请注意,这里要用RSA-SHA1
    
        if(typeof inappPurchaseData === "object"){
            inappPurchaseData = JSON.stringify(inappPurchaseData);
        }
    
        let PHP_EOL = '
    ';//实际上就是换行符
        //这里要将公钥转换成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 = '
    ') {
        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"
     
  • 相关阅读:
    centos 安装 redis3.2.0 集群
    CentOS7安装配置redis-3.0.0
    CentOS7/RHEL7安装Redis步骤详解
    鸟哥之安裝 CentOS7.x
    Centos 7 学习之静态IP设置
    CentOS7 下linux不能上网解决方法​,centos7 eth0 没有ip,IP突然丢失
    javamail发送邮件(转)
    Apache James使用的方法及相关心得(转)
    Velocity缓存与穿透(转)
    十分钟搞懂什么是CGI(转)
  • 原文地址:https://www.cnblogs.com/cj8988/p/10648749.html
Copyright © 2011-2022 走看看