绑定商户号等等就不说了……
基本步骤如下:
1、小程序端 调用云函数
2、云函数调用 cloud.cloudPay.unifiedOrder 获取支付参数,返回给 小程序
3、小程序拿到第二步的参数,调用 wx.requestPayment 调用微信支付
4、支付完成的回调
细节部分:
1、小程序端 调用云函数 这一步没啥好说的,给个我的参考:
orderRes = orderInfo // 订单信息,我这里用的预先下订单,也可以支付后创建订单
orderData = {...} // 一些需要传递给云函数的数据,不存在也没有关系,因为我是预先创建订单,所以 后端获取订单,就能补充支付信息(如支付金额)了
http.callFunction('order',orderData)
.then((res:any)=>{
const payment = res.result.payment
wx.requestPayment({ // 这里是第3步的部分
...payment,
success () {
// 支付成功 跳转什么的
},
fail (err:any) {
console.error('pay fail', err)
}
})
})
2 云函数部分:
这里有个小技巧,就是加个支付流水,这样可以做到订单支付失败后,重新进订单还能重新支付同一个订单,但是如果你上一步做的是支付完成后创建订单,则不需要这个步骤了。
const res = await cloud.cloudPay.unifiedOrder({
"body" : event.goodsName,
"outTradeNo" : flowRes._id,
"nonceStr":event.nonceStr,
"spbillCreateIp" : "127.0.0.1",
"subMchId" : "123",
"totalFee" : order.totalPrice,
"envId": "你自己的环境id",
"functionName": "pay_callback", // 回调函数
"tradeType":"JSAPI"
})
3、第三步 就是 第一步 的回调里面的部分 不重复了……
4、支付完成后回调:
修改一下订单为已支付即可……
请问支付流水是什么意思?