uniapp 小程序 支付逻辑处理
uniapp 小程序 支付逻辑处理
- 上代码
如果你不需要支付宝适配,可以删除掉支付宝的条件判断代码
<button class="subBtn" :disabled="submiting" @click="goPay">
去支付
</button>
// 以下代码你需要改的地方
// 1. order/app/v1/order/waitPayToPay 更换自己的支付接口
// 2. 修改接口传参
// 3. 修改接口返回的的各种状态码,并处理逻辑
// 4. 请更换为你的模版id
// 5. 更换跳转页面的路由
export default {
data() {
return {
submiting: false,
};
},
methods: {
goPay() {
if (this.submiting) {
return;
}
uni.showLoading({ title: "发起支付..." });
this.submiting = true;
// 调用接口
this.$uniApi
.dataRequestYesLoading(
"POST",
"order/app/v1/order/waitPayToPay",
{
// #ifdef MP-WEIXIN
payChannel: "",
// #endif
// #ifdef MP-ALIPAY
payChannel: "alipay_mini",
// #endif
orderSource: 5, //小程序
orderId: this._orderId,
buyerMemo: this.memberRemark, //备注
// #ifdef MP-WEIXIN
seriesNumber:
uni.getStorageSync("userInfor").openId ||
uni.getStorageSync("wxopenid"), //订单序列号
// #endif
// #ifdef MP-ALIPAY
seriesNumber: uni.getStorageSync("userInfor").zfbUserId, //订单序列号
// #endif
},
"支付中"
)
.then((data) => {
if (data.code == 18018 || data.code == 18019 || data.code == 18020) {
//该优惠券无法使用
// this.orderEnsure();
// this.openPopup();
//请根据自己的需求 处理此处逻辑
this.submiting = false;
uni.hideLoading();
return;
}
// 我的接口成功的时候 返回的是1
if (data.code !== 1) {
uni.hideLoading();
this.submiting = false;
this.$util.showToast(data.msg);
return;
}
//微信支付
uni.requestPayment({
// #ifdef MP-WEIXIN
timeStamp: data.data.timeStamp, // String类型,支付签名时间戳,需与后台统一
nonceStr: data.data.nonceStr, // String类型,支付签名随机串,需与后台统一
package: `prepay_id=${data.data.prepayid}`, // String类型,统一下单接口返回的 prepay_id 参数值,格式如:prepay_id=xxx
signType: data.data.signType, // String类型,签名方式,默认为 “MD5” ,仅支持 “MD5” 和 “HMAC-SHA256”
paySign: data.data.pay_sign, // String类型,签名,具体签名方案参考微信支付开发文档
// #endif
// #ifdef MP-ALIPAY
orderInfo: data.data.tradeNo,
// #endif
success: (success) => { // 接口调用成功的回调函数
console.log(success);
// #ifdef MP-ALIPAY
let resultCode = success.resultCode;
if (
resultCode == 6001 ||
resultCode == 4000 ||
resultCode == 6002
) {
// 操作失败 时 逻辑处理
return;
}
// 用户订阅操作 订阅后 用户可在微信收到支付信息等
// #endif
this.wxInForm([
"YUjKUVJIRah0xxxxxxxxxxxxxxxxxxxxxxxxx5CE8CVuM", // 这是订阅模版id 请更换为你的模版id
])
.then((res) => {
// 订阅成功后 跳转到指定页面
uni.redirectTo({
url: '../order_pay/order_pay',,
});
})
.catch((err) => {
// 不订阅 跳转到指定页面
uni.redirectTo({
url: '../order_pay/order_pay',
});
});
this.submiting = false;
},
fail: (err) => { //接口调用失败的回调函数
console.log("fail:" + JSON.stringify(err));
this.submiting = false;
// 支付失败处理
},
});
});
},
// 改方法最好写在vuex中
wxInForm(tmplIds){
return new Promise(resolve => {
uni.requestSubscribeMessage({
tmplIds:tmplIds, // 订阅模版id
success(res){
resolve()
},
fail(res){
resolve()
}
})
})
},
}
}
- 完成!
原文地址:https://blog.csdn.net/weixin_45563734/article/details/140626080
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!