微信小程序调用wx.requestPayment(OBJECT)发起微信支付
1、后端通过JSAPI下单接口获取到发起支付的必要参数prepay_id,前端取到prepay_id就可以调用wx.requestPayment发起支付。调起支付的参数需要按照签名规则进行签名计算。微信支付文档
2、前端得到prepay_id后就可以按照规则计算签名了。
2.1 构造签名串,签名串一共有四行,每一行为一个参数。行尾以\n(换行符,ASCII编码值为0x0A)结束,包括最后一行。
如果参数本身以\n结束,也需要附加一个\n。
参与签名字段及格式:
小程序appId
时间戳
随机字符串
订单详情扩展字符串
数据举例:
wx8888888888888888
1414561699
5K8264ILTKCH16CQ2502SI8ZNMTM67VS
prepay_id=wx201410272009395522657a690389285100文章来源:https://www.toymoban.com/news/detail-559748.html
3、计算签名
绝大多数编程语言提供的签名函数支持对签名数据 进行签名。强烈建议商户调用该类函数,使用商户私钥对待签名串进行SHA256 with RSA签名,并对签名结果进行Base64编码得到签名值。
3.1 首先引入rsa插件 ,构造参数文章来源地址https://www.toymoban.com/news/detail-559748.html
var RSA = require('../../../utils/wxapp_rsa.js')
let appid = app.globalData.appid
let nonceStr = utils.getRandomString(27)
let prepay_id = 'wx171603304325421d26220b6300a0690000'
let timeStamp = parseInt(new Date().getTime()/1000)
//构造好的签名串
let paySign = `${appid}\n${timeStamp}\n${nonceStr}\nprepay_id=${prepay_id}\n`
// 私钥、商户API证书下载后,私钥 apiclient_key.pem 的内容
let sikey = `-----BEGIN PRIVATE KEY-----私钥内容-----END PRIVATE KEY-----`
// 加签
var sign_rsa = new RSA.RSAKey();
sign_rsa = RSA.KEYUTIL.getKey(sikey);
console.log('签名RSA:')
console.log(sign_rsa)
var hashAlg = 'sha256';
var hSig = sign_rsa.signString(paySign, hashAlg);
hSig = RSA.hex2b64(hSig); // hex 转 b64
console.log("签名结果:" + hSig)
// 得到签名即可调用支付
wx.requestPayment
(
{
"timeStamp":timeStamp+'',
"nonceStr": nonceStr,
"package": "prepay_id="+prepay_id,
"signType": "RSA",
"paySign": hSig,
"success":function(res){
console.log('调用支付接口成功', res)
},
"fail":function(res){
console.log('调用支付接口fail', res)
},
"complete":function(res){
console.log('调用支付接口完成', res)
}
}
)
到了这里,关于【微信小程序支付计算签名值-前端】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!