Files
ZhHealth/pages/pay/pay.vue
2022-01-14 14:54:28 +08:00

108 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 => {
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>