/** * 微信小程序支付 * 此处针对于微信小程序开发的支付插件 * 第一次支付成功后会跳出订阅的消息 如果用户拒绝或同意都会跳转到支付成功页面 * 如果点击订阅 会将状态写进缓存 之后不再提醒。 * * @param {sn,price} */ import { initiatePay } from "@/api/trade"; import { getWeChatMpMessage } from "@/api/message.js"; class LiLiWXPay { constructor(...payList) { this.data = payList[0]; console.log(payList); // 调用支付 this.pay = () => { uni.showLoading({ title: "加载中", }); let submitData = { sn: this.data.sn, orderType: this.data.orderType || "TRADE", clientType: "WECHAT_MP", }; const paymentMethod = "WECHAT"; const paymentClient = "MP"; // 调用支付 initiatePay(paymentMethod, paymentClient, submitData).then((res) => { let response = res.data.result; uni.hideLoading(); uni.requestPayment({ provider: "wxpay", appid: response.appid, timeStamp: response.timeStamp, nonceStr: response.nonceStr, package: response.package, signType: response.signType, paySign: response.paySign, success: (e) => { uni.showToast({ icon: "none", title: "支付成功!", }); sendMessage(payList[0].price); }, fail: (e) => { this.exception = e; // 支付异常或支付失败之后跳转到订单页面 uni.showModal({ content: "支付失败,如果您已支付,请勿反复支付", showCancel: false, success: () => { uni.redirectTo({ url: "/pages/order/myOrder?status=0", }); }, }); }, }); }); }; } } function sendMessage(price) { //判断用户是否已经进行了订阅 if (!uni.getStorageSync("acceptSubscribeMessage")) { //订阅消息 getWeChatMpMessage().then((res) => { var message = res.data.result; var templateid = message.map((item) => item.code); uni.requestSubscribeMessage({ tmplIds: templateid, success: (res) => { for (let key in res) { // 表示用户拒绝订阅该信息 if (res[key] == "reject") { this.checked = false; } else { uni.setStorageSync("acceptSubscribeMessage", res); } } }, fail: (res) => { uni.removeStorageSync("acceptSubscribeMessage"); this.checked = false; }, complete: () => { /** * 已经支付成功 */ uni.redirectTo({ url: "/pages/cart/payment/success?paymentMethod=WECHAT" + "&payPrice=" + price, }); }, }); }); } else { /** * 已经支付成功 */ uni.redirectTo({ url: "/pages/cart/payment/success?paymentMethod=WECHAT" + "&payPrice=" + price, }); } } export default LiLiWXPay;