自学内容网 自学内容网

uniapp 小程序 支付逻辑处理

uniapp 小程序 支付逻辑处理

  1. 上代码如果你不需要支付宝适配,可以删除掉支付宝的条件判断代码
    <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()
}
})
})
},
      }
}
  1. 完成!

原文地址:https://blog.csdn.net/weixin_45563734/article/details/140626080

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!