支付签名验证失败?【闭坑指南】微信小程序支付
开发准备:
const appid = '' // 小程序的appid
const appsecret = '' // 小程序的appsecret
const mch_id = '' // 微信商户号
const mchkey = '' // 微信商户的Key 32位
const notify_url = '' // 通知地址
const trade_type = 'JSAPI'; // 'APP';公众号:'JSAPI'或'NATIVE'
const body = '测试微信支付';
const spbill_create_ip = ''; // 支持IPV4和IPV6两种格式的IP地址。调用微信支付API的机器IP
const url = 'https://api.mch.weixin.qq.com/pay/unifiedorder'; // 统一下单地址
前端数据:
let ress = ctx.query
let orderCode = ress.orderCode // 订单编号 比如 new Date().getTime()
let money = ress.money // 金额 单位是:分
let openid = ress.openId // 用户的唯一识别号
1.第一次签名没啥好注意的,跟官网校验工具对比一下就行
2.组装xml的时候 需要跟签名的参数一一对应。
3.拿到组装的xml去统一下单,
4.解析拿到返回的数据,取值 `prepay_id` 和 `nonce_str`,
5.拿到这俩值以后去实现小程序签名
记住,这里要用统一下单后的 `prepay_id` 和 `nonce_str`, 还有一个就是这里的参数要驼峰命名
比如:
let para = {
appId: appid,
nonceStr: nonce_str,
package: "prepay_id=" + prepay_id,
signType: signType,
timeStamp: timestamp,
}
6.所有的签名都是要'MD5'的
返回给前端的'nonce_str'也必须和统一下单返回的值一致。
大致上就遇到这些坑,欢迎补充!