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. 完成!
相关推荐
尚梦4 小时前
uni-app 封装刘海状态栏(适用小程序, h5, 头条小程序)
前端·小程序·uni-app
paopaokaka_luck9 小时前
基于Spring Boot+Vue的助农销售平台(协同过滤算法、限流算法、支付宝沙盒支付、实时聊天、图形化分析)
java·spring boot·小程序·毕业设计·mybatis·1024程序员节
尚学教辅学习资料11 小时前
基于SSM+uniapp的营养食谱系统+LW参考示例
java·uni-app·ssm·菜谱
Bessie23411 小时前
微信小程序eval无法使用的替代方案
微信小程序·小程序·uni-app
蜕变菜鸟11 小时前
小程序跳转另一个小程序
小程序
14 小时前
躺平成长-代码开发,利用kimi开发小程序(09)
小程序
17 小时前
微信小程序运营日记(第四天)
微信小程序·小程序
guanpinkeji18 小时前
旧衣回收小程序:提高回收效率,扩大服务范围
大数据·小程序·团队开发·软件开发·小程序开发·旧衣回收·旧衣回收小程序
说私域19 小时前
完美日记营销模式对开源 AI 智能名片 2 + 1 链动模式 S2B2C 商城小程序的启示
人工智能·小程序
qq229511650219 小时前
小程序Android系统 校园二手物品交换平台APP
微信小程序·uni-app