383 lines
11 KiB
Vue
383 lines
11 KiB
Vue
|
<template>
|
|||
|
<view>
|
|||
|
<view
|
|||
|
style="width: 700upx;height: 180upx;background: #FFFFFF;margin: 30upx; padding: 20upx;border-radius: 20upx;">
|
|||
|
<view style="display: flex;margin: 15upx 0 0 20upx;">
|
|||
|
<image :src="image" style="width: 20%; height: 120upx;"></image>
|
|||
|
<view style="margin-left: 20upx;width: 70%;">
|
|||
|
<view style="font-size: 28upx;color: #05C25C;font-weight: bold;margin-top: 10upx;">¥ {{money}}
|
|||
|
</view>
|
|||
|
<view
|
|||
|
style="width: 100%;margin-top: 20upx;font-size: 28upx;color: #333333;font-weight: bold;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">
|
|||
|
{{title}}
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
|
|||
|
<view style="width: 700upx;background: #FFFFFF;margin: 30upx; padding: 20upx;border-radius: 20upx;"
|
|||
|
v-if="payList.length > 0">
|
|||
|
<view style="display: flex;height: 100upx;margin: 0upx 0 0 30upx;align-items: center;padding-bottom: 20upx;"
|
|||
|
v-for="(item,index) in payList" :key='index'>
|
|||
|
<image :src="item.image" style="width: 50upx;height: 50upx;border-radius: 50upx;"></image>
|
|||
|
<view style="font-size: 28upx;color: #333333;margin-left: 20upx;width: 70%;" v-if="item.name == '钱包零钱'">
|
|||
|
{{item.name}}({{lingqian}})
|
|||
|
</view>
|
|||
|
<view style="font-size: 28upx;color: #333333;margin-left: 20upx;width: 70%;" v-else>{{item.name}}</view>
|
|||
|
<radio-group name="openWay" style="margin-left: 40upx;" @tap='selectWay(item.id)'>
|
|||
|
<label class="tui-radio">
|
|||
|
<radio color="#05C25C" :checked="openWay === item.id ? true : false" />
|
|||
|
</label>
|
|||
|
</radio-group>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
|
|||
|
<button v-if="payList.length > 0"
|
|||
|
style="background-color: #05C25C;width: 680upx;height: 80upx;font-size: 28upx;color: #FFFFFF;text-align: center;margin: 30upx;border-radius: 50upx;padding-top: 5upx;"
|
|||
|
@tap='goPay'>确定支付</button>
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
|
|||
|
<script>
|
|||
|
export default {
|
|||
|
data() {
|
|||
|
return {
|
|||
|
openWay: 0,
|
|||
|
money: 0,
|
|||
|
lingqian: 0.00,
|
|||
|
title: '',
|
|||
|
image: '',
|
|||
|
id: '',
|
|||
|
providerList: [],
|
|||
|
checkWeixin: true,
|
|||
|
checkZhifubao: true,
|
|||
|
payList: [{
|
|||
|
id: 0,
|
|||
|
image: 'https://renwu.xiansqx.com/img/20210813/e71382c1b8404e4f96c6d6e89d305329.png',
|
|||
|
name: '微信'
|
|||
|
}, {
|
|||
|
id: 1,
|
|||
|
image: 'https://renwu.xiansqx.com/img/20210813/56cde02b040e453ead8b5d2c0dc17e18.png',
|
|||
|
name: '支付宝'
|
|||
|
},
|
|||
|
{
|
|||
|
id: 2,
|
|||
|
image: 'https://renwu.xiansqx.com/img/20210813/119ca58dc0df41398e6a339cf37382e3.png',
|
|||
|
name: '钱包零钱'
|
|||
|
}
|
|||
|
]
|
|||
|
}
|
|||
|
},
|
|||
|
onBackPress(event) {
|
|||
|
if (event.from == 'backbutton') {
|
|||
|
uni.showModal({
|
|||
|
title: '温馨提示',
|
|||
|
content: '订单尚未完成支付,确认退出吗?',
|
|||
|
showCancel: true,
|
|||
|
cancelText: '继续支付',
|
|||
|
confirmText: '确定',
|
|||
|
success: res => {
|
|||
|
if (res.confirm) {
|
|||
|
uni.redirectTo({
|
|||
|
url: '../member/orderdetail?id=' + this.id
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
return true; //阻止默认返回行为
|
|||
|
}
|
|||
|
},
|
|||
|
onLoad(d) {
|
|||
|
this.getlingqian();
|
|||
|
// #ifdef MP-WEIXIN
|
|||
|
this.payList = [];
|
|||
|
this.openWay = 0;
|
|||
|
let data = [];
|
|||
|
let data1 = [{
|
|||
|
id: 0,
|
|||
|
image: 'https://renwu.xiansqx.com/img/20210813/e71382c1b8404e4f96c6d6e89d305329.png',
|
|||
|
name: '微信'
|
|||
|
}, {
|
|||
|
id: 2,
|
|||
|
image: 'https://renwu.xiansqx.com/img/20210813/119ca58dc0df41398e6a339cf37382e3.png',
|
|||
|
name: '钱包零钱'
|
|||
|
}]
|
|||
|
this.payList = data1;
|
|||
|
// #endif
|
|||
|
|
|||
|
|
|||
|
// #ifdef APP-PLUS
|
|||
|
this.payList = [];
|
|||
|
this.openWay = 0;
|
|||
|
let data1 = [{
|
|||
|
id: 0,
|
|||
|
image: 'https://renwu.xiansqx.com/img/20210813/e71382c1b8404e4f96c6d6e89d305329.png',
|
|||
|
name: '微信'
|
|||
|
}, {
|
|||
|
id: 1,
|
|||
|
image: 'https://renwu.xiansqx.com/img/20210813/56cde02b040e453ead8b5d2c0dc17e18.png',
|
|||
|
name: '支付宝'
|
|||
|
}, {
|
|||
|
id: 2,
|
|||
|
image: 'https://renwu.xiansqx.com/img/20210813/119ca58dc0df41398e6a339cf37382e3.png',
|
|||
|
name: '钱包零钱'
|
|||
|
}]
|
|||
|
this.payList = data1;
|
|||
|
// #endif
|
|||
|
|
|||
|
// #ifdef H5
|
|||
|
let target = navigator.userAgent.toLowerCase();
|
|||
|
let isWeixin = (/micromessenger/.test(target)) ? true : false;
|
|||
|
this.payList = [];
|
|||
|
if (isWeixin) {
|
|||
|
this.openWay = 0;
|
|||
|
let data1 = [{
|
|||
|
id: 0,
|
|||
|
image: 'https://renwu.xiansqx.com/img/20210813/e71382c1b8404e4f96c6d6e89d305329.png',
|
|||
|
name: '微信'
|
|||
|
}, {
|
|||
|
id: 2,
|
|||
|
image: 'https://renwu.xiansqx.com/img/20210813/119ca58dc0df41398e6a339cf37382e3.png',
|
|||
|
name: '钱包零钱'
|
|||
|
}]
|
|||
|
this.payList = data1;
|
|||
|
} else {
|
|||
|
this.openWay = 1;
|
|||
|
let data1 = [{
|
|||
|
id: 1,
|
|||
|
image: 'https://renwu.xiansqx.com/img/20210813/56cde02b040e453ead8b5d2c0dc17e18.png',
|
|||
|
name: '支付宝'
|
|||
|
}, {
|
|||
|
id: 2,
|
|||
|
image: 'https://renwu.xiansqx.com/img/20210813/119ca58dc0df41398e6a339cf37382e3.png',
|
|||
|
name: '钱包零钱'
|
|||
|
}]
|
|||
|
this.payList = data1;
|
|||
|
}
|
|||
|
// #endif
|
|||
|
if (d) {
|
|||
|
this.id = d.id;
|
|||
|
this.getCheckPay(d.id);
|
|||
|
this.getCommondityList(d.id);
|
|||
|
}
|
|||
|
uni.getProvider({
|
|||
|
service: 'payment',
|
|||
|
success: e => {
|
|||
|
let providerList = [];
|
|||
|
e.provider.map(value => {
|
|||
|
switch (value) {
|
|||
|
case 'alipay':
|
|||
|
providerList.push({
|
|||
|
name: '支付宝',
|
|||
|
id: value,
|
|||
|
loading: false
|
|||
|
});
|
|||
|
break;
|
|||
|
case 'wxpay':
|
|||
|
providerList.push({
|
|||
|
name: '微信',
|
|||
|
id: value,
|
|||
|
loading: false
|
|||
|
});
|
|||
|
break;
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
});
|
|||
|
this.providerList = providerList;
|
|||
|
},
|
|||
|
fail: e => {
|
|||
|
console.log('获取支付通道失败:', e);
|
|||
|
}
|
|||
|
});
|
|||
|
},
|
|||
|
methods: {
|
|||
|
getlingqian() {
|
|||
|
let userId = this.$queue.getData('userId');
|
|||
|
this.$Request.get("/app/artificer/selectArtificerMoney").then(res => {
|
|||
|
if (res.code == 0) {
|
|||
|
this.lingqian = res.data.money ? res.data.money : 0; //累计余额
|
|||
|
}
|
|||
|
});
|
|||
|
},
|
|||
|
getCheckPay(id) {
|
|||
|
this.$Request.getT('/app/orders/wxPay?ordersId=' + id).then(res => {
|
|||
|
if (res.status === 0) {
|
|||
|
uni.redirectTo({
|
|||
|
url: './myList'
|
|||
|
});
|
|||
|
}
|
|||
|
});
|
|||
|
},
|
|||
|
getCommondityList(id) {
|
|||
|
uni.showLoading({
|
|||
|
title: '加载中...'
|
|||
|
});
|
|||
|
this.$Request.getT('/app/orders/find?id=' + id).then(res => {
|
|||
|
if (res.status === 0) {
|
|||
|
this.image = res.data.img;
|
|||
|
this.money = res.data.payMoney;
|
|||
|
this.title = res.data.title;
|
|||
|
}
|
|||
|
uni.hideLoading();
|
|||
|
});
|
|||
|
},
|
|||
|
selectWay: function(id) {
|
|||
|
this.openWay = id;
|
|||
|
},
|
|||
|
goPay() {
|
|||
|
let userId = this.$queue.getData('userId');
|
|||
|
uni.showLoading({
|
|||
|
title: '支付中'
|
|||
|
});
|
|||
|
if (this.openWay === 0) { //0:微信支付
|
|||
|
// #ifdef H5
|
|||
|
this.$Request.postJson('/pay/wxPayWeb?ordersId=' + this.id + '&userId=' + userId).then(res => {
|
|||
|
this.callPay(res);
|
|||
|
});
|
|||
|
// #endif
|
|||
|
// #ifdef APP-PLUS
|
|||
|
this.$Request.postJson('/pay/wxPayApp?ordersId=' + this.id + '&userId=' + userId).then(res => {
|
|||
|
this.setPayment('wxpay', JSON.stringify(res));
|
|||
|
});
|
|||
|
// #endif
|
|||
|
// #ifdef MP-WEIXIN
|
|||
|
this.$Request.postJson('/pay/wxPayJS?ordersId=' + this.id + '&userId=' + userId).then(res => {
|
|||
|
uni.requestPayment({
|
|||
|
provider: 'wxpay',
|
|||
|
timeStamp: res.timestamp,
|
|||
|
nonceStr: res.noncestr,
|
|||
|
package: res.package,
|
|||
|
signType: res.signType,
|
|||
|
paySign: res.sign,
|
|||
|
success: function(res) {
|
|||
|
uni.showLoading({
|
|||
|
title: '支付成功'
|
|||
|
});
|
|||
|
uni.hideLoading();
|
|||
|
setTimeout(() => {
|
|||
|
uni.redirectTo({
|
|||
|
url: '../my/myList'
|
|||
|
});
|
|||
|
}, 1000);
|
|||
|
},
|
|||
|
fail: function(err) {
|
|||
|
uni.hideLoading();
|
|||
|
this.$queue.showToast('支付失败');
|
|||
|
}
|
|||
|
});
|
|||
|
});
|
|||
|
// #endif
|
|||
|
} else if (this.openWay === 1) { //1:支付宝支付
|
|||
|
// #ifdef H5
|
|||
|
this.$Request.getT('/aliPay/payH5?ordersId=' + this.id).then(res => {
|
|||
|
const div = document.createElement('div')
|
|||
|
div.innerHTML = res.data //此处form就是后台返回接收到的数据
|
|||
|
document.body.appendChild(div)
|
|||
|
document.forms[0].submit()
|
|||
|
});
|
|||
|
// #endif
|
|||
|
// #ifdef APP-PLUS
|
|||
|
this.$Request.getT('/aliPay/payApp?ordersId=' + this.id).then(res => {
|
|||
|
this.setPayment('alipay', res.data);
|
|||
|
});
|
|||
|
// #endif
|
|||
|
} else if (this.openWay === 2) { //2:零钱支付
|
|||
|
let orderIds = this.id;
|
|||
|
this.$Request.getT('/app/orders/changePay?ordersId=' + this.id).then(res => {
|
|||
|
if (res.status === 0) {
|
|||
|
uni.hideLoading();
|
|||
|
this.$queue.showToast('支付成功');
|
|||
|
setTimeout(function() {
|
|||
|
console.log("id:" + orderIds)
|
|||
|
uni.hideLoading();
|
|||
|
uni.redirectTo({
|
|||
|
url: '/package/pages/zysc/member/orderdetail?id=' + orderIds
|
|||
|
});
|
|||
|
}, 1000);
|
|||
|
} else {
|
|||
|
uni.hideLoading();
|
|||
|
this.$queue.showToast(res.msg);
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
},
|
|||
|
callPay: function(response) {
|
|||
|
if (typeof WeixinJSBridge === "undefined") {
|
|||
|
if (document.addEventListener) {
|
|||
|
document.addEventListener('WeixinJSBridgeReady', this.onBridgeReady(response), false);
|
|||
|
} else if (document.attachEvent) {
|
|||
|
document.attachEvent('WeixinJSBridgeReady', this.onBridgeReady(response));
|
|||
|
document.attachEvent('onWeixinJSBridgeReady', this.onBridgeReady(response));
|
|||
|
}
|
|||
|
} else {
|
|||
|
this.onBridgeReady(response);
|
|||
|
}
|
|||
|
},
|
|||
|
onBridgeReady: function(response) {
|
|||
|
let that = this;
|
|||
|
if (!response.package) {
|
|||
|
return;
|
|||
|
}
|
|||
|
WeixinJSBridge.invoke(
|
|||
|
'getBrandWCPayRequest', {
|
|||
|
"appId": response.appid, //公众号名称,由商户传入
|
|||
|
"timeStamp": response.timestamp, //时间戳,自1970年以来的秒数
|
|||
|
"nonceStr": response.noncestr, //随机串
|
|||
|
"package": response.package,
|
|||
|
"signType": response.signType, //微信签名方式:
|
|||
|
"paySign": response.sign //微信签名
|
|||
|
},
|
|||
|
function(res) {
|
|||
|
if (res.err_msg === "get_brand_wcpay_request:ok") {
|
|||
|
// 使用以上方式判断前端返回,微信团队郑重提示:
|
|||
|
//res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
|
|||
|
uni.showLoading({
|
|||
|
title: '支付成功'
|
|||
|
});
|
|||
|
setTimeout(function() {
|
|||
|
uni.hideLoading();
|
|||
|
uni.redirectTo({
|
|||
|
url: '../member/orderdetail?id=' + that.id
|
|||
|
});
|
|||
|
}, 1000);
|
|||
|
} else {
|
|||
|
uni.hideLoading();
|
|||
|
}
|
|||
|
WeixinJSBridge.log(response.err_msg);
|
|||
|
}
|
|||
|
);
|
|||
|
},
|
|||
|
setPayment(name, order) {
|
|||
|
let that = this;
|
|||
|
uni.requestPayment({
|
|||
|
provider: name,
|
|||
|
orderInfo: order, //微信、支付宝订单数据
|
|||
|
success: function(res) {
|
|||
|
uni.hideLoading();
|
|||
|
uni.showLoading({
|
|||
|
title: '支付成功'
|
|||
|
});
|
|||
|
setTimeout(function() {
|
|||
|
uni.hideLoading();
|
|||
|
uni.redirectTo({
|
|||
|
url: '../member/orderdetail?id=' + that.id
|
|||
|
});
|
|||
|
}, 1000);
|
|||
|
},
|
|||
|
fail: function(err) {
|
|||
|
uni.hideLoading();
|
|||
|
console.log(12)
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<style>
|
|||
|
page {
|
|||
|
background: #F2F2F2;
|
|||
|
}
|
|||
|
</style>
|