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. 完成!
相关推荐
耶啵奶膘3 小时前
uniapp+vue2全局监听退出小程序清除缓存
小程序·uni-app
中云DDoS CC防护蔡蔡5 小时前
微信小程序被攻击怎么选择高防产品
服务器·网络安全·微信小程序·小程序·ddos
井眼9 小时前
微信小程序-prettier 格式化
微信小程序·小程序
我开心就好o10 小时前
uniapp点左上角返回键, 重复来回跳转的问题 解决方案
前端·javascript·uni-app
Random_index10 小时前
#Uniapp篇:支持纯血鸿蒙&发布&适配&UIUI
uni-app·harmonyos
wqq_99225027711 小时前
springboot基于微信小程序的食堂预约点餐系统
数据库·微信小程序·小程序
木古古1814 小时前
使用chrome 访问虚拟机Apache2 的默认页面,出现了ERR_ADDRESS_UNREACHABLE这个鸟问题
前端·chrome·apache
初遇你时动了情17 小时前
uniapp 城市选择插件
开发语言·javascript·uni-app
licy__17 小时前
微信小程序登录注册页面设计(小程序项目)
微信小程序·小程序
小小黑00720 小时前
uniapp+vue3+ts H5端使用Quill富文本插件以及解决上传图片反显的问题
uni-app·vue