支付签名验证失败?【闭坑指南】微信小程序支付
发布于 3 年前 作者 dzheng 1826 次浏览 来自 分享
开发准备:

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'也必须和统一下单返回的值一致。

大致上就遇到这些坑,欢迎补充!

1 回复

分享经验,值得点赞~

回到顶部