当前:两次请求订单号、金额、body,全都一致(就是用户取消支付后的同一订单重新请求支付),结果报错201
期望行为:
多次调用统一下单接口,如果订单号、金额、body一致,希望能多次重复返回可以进行正常支付的参数,云函数如下:
// 云函数入口文件
// 云函数代码
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext();
const res = await cloud.cloudPay({appid: wxContext.FROM_APPID}).unifiedOrder({
"body" : event.body, // 商品描述
"outTradeNo" : event.outTradeNo, // 商户订单号
"spbillCreateIp" : '127.0.0.1', // 终端 IP
"subMchId" : "xxx", // 商户号
"totalFee" : event.totalFee, // 总金额
"envId": wxContext.ENV, // 云函数环境名称
"functionName": "paymentCallback", // 支付结果通知回调云函数名
"nonceStr": Math.random().toString(36).substr(2) + '',
"tradeType": "JSAPI",
});
return res;
}
以上代码返回的参数只可以使用一次,相同的参数再次统一下单,就报错201 商户订单号重复
云开发文档很模糊,用户取消了支付情况下如何进行第二次统一下单?难不成要先关闭原订单吗?(我看云开发支付文档说不允许短时间内调用订单关闭接口)
端也没有换,都是小程序,订单号里的金额、body没有任何更改,原模原样
微信支付单关闭了就算完结状态,不能倒反天罡状态往回变,你要在支付单关闭前可以重复拉起预支付
outTradeNo是不可以重复使用的,参数重入在支付侧是可以重新获取预支付ID