微信小程序支付及退款整体流程 | 您所在的位置:网站首页 › 怎么查询小程序appid › 微信小程序支付及退款整体流程 |
微信⼩程序⽀付及退款整体流程 最近做了微信⽀付及退款⼀系列操作,微信⽂档写的也⽐较简略,⽹上博客也并不详细,也踩了⼀些坑,在这⾥记录下。当然主要还是得根据微 信⼩程序⽂档⼀步⼀步来。 ⼀、 wx.requestPayment 发起微信⽀付。了解更多信息,请查看 所谓的发起微信⽀付,指的是⽤户侧这边唤起微信⽀付窗⼝的 api ,这个 api 需要按规范传参数 wx.requestPayment({ timeStamp: '' , nonceStr: '' , package: '' , signType: 'MD5' , paySign: '' , success (res) { }, fail (res) { } }) 这些参数均需要从后台获取。那么我们进⼊ “ 微信⽀付接⼝⽂档 ” 查看是怎么个流程 ⼆、微信⽀付具体流程 ⽂档也写的很清楚,不细说,主要看下⾯这个流程 商户系统和微信⽀付系统主要交互: 1 、⼩程序内调⽤登录接⼝,获取到⽤户的 openid,api 参见公共 api 【】 2 、商户 server 调⽤⽀付统⼀下单, api 参见公共 api 【】 3 、商户 server 调⽤再次签名, api 参见公共 api 【】 4 、商户 server 接收⽀付通知, api 参见公共 api 【】 5 、商户 server 查询⽀付结果, api 参见公共 api 【】 1 、调⽤ wx.login 获取 code ,然后通过 code ,调取微信三⽅接⼝,获取 openid 。如果⽤户系统有 openid 记录,可以省略这步操作。 主要是因为下⾯的统⼀下单 api ⾥的参数配置:
openid 参数: trade_type=JSAPI ,此参数必传,⽤户在商户 appid 下的唯⼀标识。 openid 如何获取,可参考【】。 2 、统⼀下单 api 、⼆次签名 api 返回参数 看⽂档⾥的参数,传那些参数,调⽤微信三⽅接⼝即可。⼀般不会有啥问题,主要问题也会在于 2 次签名。 实例代码如下 // 统⼀下单 let unifiedorder = async ( params = {}, ctx) => { let body = '......'
// 商品描述 let notify_url = 'https://....../wxPayBack'
// ⽀付成功的回调地址
可访问
不带参数 let nonce_str = wxConfig.getNonceStr() // 随机数 let out_trade_no = params .orderCode // 商户订单号(⽤户系统⾃定义的商户订单号) let total_fee = ctx.request.body.orderPay * 100
// 订单价格
单位是
分 let bodyData = '' bodyData += `${wxConfig.AppID}` // ⼩程序 ID bodyData += `${wxConfig.Mch_id}` // 商户号 bodyData += `${body}` // 商品描述 bodyData += `${nonce_str}` // 随机字符串 bodyData += `${notify_url}` // ⽀付成功的回调地址 bodyData += `${ params .openid}` // ⽤户标识( openid , JSAPI ⽅式⽀付时必需传该参数) bodyData += `${out_trade_no}` // 商户订单号 bodyData += `${ params .ip}` // 终端 IP bodyData += `${total_fee}` // 总⾦额
单位为分 bodyData += 'JSAPI'
// 交易类型
⼩程序取值: JSAPI // 签名(根据上⾯这些参数,有个签名算法,⽂档⾥也有描述)
var sign = wxConfig.paysignjsapi( wxConfig.AppID, body, wxConfig.Mch_id, nonce_str, notify_url, |
CopyRight 2018-2019 实验室设备网 版权所有 |