110 lines
2.2 KiB
Vue
110 lines
2.2 KiB
Vue
<template>
|
|
<view>
|
|
<oct-pay
|
|
:price="price"
|
|
:payNo="payNo"
|
|
color="#34CE98"
|
|
price-color="#e6576b"
|
|
:payPlatform="platform"
|
|
@onPay="pay"
|
|
/>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import { wxPAY, alPAY } from '@/apis/interfaces/pay'
|
|
export default {
|
|
data() {
|
|
return {
|
|
payNo : "",
|
|
price : "",
|
|
platform: ['wxpay', 'alipay']
|
|
}
|
|
},
|
|
mounted() {
|
|
this.payNo = this.$Route.query.orderNo
|
|
this.price = Number(this.$Route.query.price).toFixed(2)
|
|
},
|
|
methods: {
|
|
pay(e){
|
|
uni.getProvider({
|
|
service: 'payment',
|
|
success: res => {
|
|
if(res.provider.findIndex(val => val === e.platform) < 0){
|
|
switch (e.platform){
|
|
case 'wxpay':
|
|
uni.showToast({
|
|
title: '支付失败,您暂未安装微信',
|
|
icon : 'none'
|
|
})
|
|
break;
|
|
case 'alipay':
|
|
uni.showToast({
|
|
title: '支付失败,您暂未安装支付宝',
|
|
icon : 'none'
|
|
})
|
|
break;
|
|
}
|
|
return
|
|
}
|
|
if(e.platform === 'wxpay') this.getWXPAY(e.platform)
|
|
if(e.platform === 'alipay') this.getALPAY(e.platform)
|
|
}
|
|
})
|
|
},
|
|
getALPAY(payType){
|
|
alPAY(this.payNo).then(res => {
|
|
this.callPay(res, payType)
|
|
})
|
|
},
|
|
getWXPAY(payType){
|
|
wxPAY(this.payNo).then(res => {
|
|
let config = JSON.parse(res)
|
|
this.callPay(config, payType)
|
|
})
|
|
},
|
|
callPay(orderInfo, payType){
|
|
uni.requestPayment({
|
|
provider: payType,
|
|
orderInfo,
|
|
success: payRes => {
|
|
console.log(payRes)
|
|
|
|
uni.showModal({
|
|
title: '支付成功',
|
|
content: '订单已支付,我们将尽快为您安排发货,可在订单管理查询订单动态',
|
|
showCancel:false,
|
|
success:onRes => {
|
|
if(onRes.confirm){
|
|
if(this.$Route.query.oepnType === 'order'){
|
|
this.$store.commit('setRefresh', 1)
|
|
}
|
|
this.$Router.back()
|
|
}
|
|
}
|
|
})
|
|
},
|
|
fail: payErr => {
|
|
console.log(payErr)
|
|
if(payErr.errCode == '-100'){
|
|
uni.showToast({
|
|
title: '支付被取消',
|
|
icon : 'none'
|
|
})
|
|
}else{
|
|
uni.showToast({
|
|
title: payErr.errMsg,
|
|
icon : 'none'
|
|
})
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
|
|
</style>
|