node 百度小程序支付签名/通知支付状态验签

签名:业务私钥;
RSA公私钥生成请移步
公钥需要配置在这儿 ,私钥自己保存(支付时用来签名)公钥需要配置在这儿
验签:平台公钥;(用来验证平台推送的支付消息)
在这里插入图片描述

  • 支付签名
const crypto = require('crypto');
 			//参数见官方文档
 			let text = 'appKey=xxx&dealId=xxx&totalAmount=xx&tpOrderId=xxx'; 
           //业务私钥,和在-开发者设置-配置的公钥时一对,格式 .pem  我是直接导入的
            var key =  fs.readFileSync(this.app.config.baseDir + '/config/rsa_private_key.pem', 'utf-8')  
            var sha=crypto.createSign('RSA-SHA1');
            sha.update(text, 'utf8');
            rsaSign = sha.sign(key, 'base64');  
            console.log('\n使用私钥签名:', rsaSign);  
            拿着签名去支付就ok 
    
            

支付时一般返回code6是签名问题

  • 验签(支付完成后会在你配置的回调地址推送消息)
  • 在这里插入图片描述
    按照文档要去必须验签
// *注意参数  这里是返回的所有参数(除去rsaSign )
 var data = 'count='+param.count+'&dealId='+param.dealId+'&giftCardMoney='+param.giftCardMoney+'&hbBalanceMoney='+param.hbBalanceMoney+'&hbMoney='+param.hbMoney+'&orderId='+param.orderId+'&partnerId='+param.partnerId+'&payMoney='+param.payMoney+'&payTime='+param.payTime+'&payType='+param.payType+'&promoDetail'+param.promoDetail+'=&promoMoney='+param.promoMoney+'&returnData='+param.returnData+'&status='+param.status+'&totalMoney='+param.totalMoney+'&tpOrderId='+param.tpOrderId+'&unitPrice='+param.unitPrice+'&userId='+param.userId+''
            
        var sign = param.rsaSign  //rsaSign 
        //平台公钥,我复制下来装到 pem 文件里了,注意格式,pem导入要有头有尾
        var key =  fs.readFileSync(this.app.config.baseDir + '/config/rsa_public_key.pem', 'utf-8')  
        var verify = crypto.createVerify('RSA-SHA1');
        verify.update(data, 'utf-8');  
        var res=verify.verify(key,sign,'base64');  
        console.log("非对称签名校验结果结果:"+res);  
        

*注意上面参与签名的字符串,哼容易出错.
*pem格式的密钥类似这种格式
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值