117 lines
3.2 KiB
JavaScript
117 lines
3.2 KiB
JavaScript
/**
|
|
* 微信小程序支付
|
|
* 此处针对于微信小程序开发的支付插件
|
|
* 第一次支付成功后会跳出订阅的消息 如果用户拒绝或同意都会跳转到支付成功页面
|
|
* 如果点击订阅 会将状态写进缓存 之后不再提醒。
|
|
*
|
|
* @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;
|