uniapp 小程序 支付逻辑处理

uniapp 小程序 支付逻辑处理

  1. 上代码如果你不需要支付宝适配,可以删除掉支付宝的条件判断代码
javascript 复制代码
    <button class="subBtn" :disabled="submiting" @click="goPay">
      去支付
    </button>
javascript 复制代码
   // 以下代码你需要改的地方
   // 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. 完成!
相关推荐
焦糖玛奇朵婷7 小时前
实测扭蛋机小程序:开发简单,互动有趣
java·大数据·程序人生·小程序·软件需求
從南走到北7 小时前
JAVA无人共享无人健身房物联网结合系统源码支持小程序+公众号+APP+H5
java·物联网·小程序
吴声子夜歌7 小时前
小程序——基础API
小程序
CHU7290357 小时前
指尖践行环保——旧衣服回收小程序前端功能玩法详解
前端·小程序
my小新7 小时前
微信小程序引用echarts做统计图
微信小程序·小程序·echarts
吴声子夜歌8 小时前
小程序——图片
小程序
不如摸鱼去8 小时前
uni-app 组件库 Wot UI 的 AI 友好型编程指南
人工智能·ui·uni-app
嘉琪0018 小时前
uni-app 轨迹回放实现(场景 + 方案)——2026 0309
uni-app
遗憾随她而去.8 小时前
uniapp token过期的几种常见处理方案
uni-app
DolphinScheduler社区8 小时前
Apache DolphinScheduler 2 月社区动态:功能升级与优化齐飞
开源·apache·任务调度·开源社区·海豚调度·大数据工作流调度