300 lines
13 KiB
Vue
300 lines
13 KiB
Vue
<template>
|
|
<view>
|
|
<oct-pay :price="price" :coins="coins" :payNo="payNo" color="#34CE98" price-color="#e6576b"
|
|
:payPlatform="platform" @onPay="pay" />
|
|
<payKeyboard v-if="showKeyBoard" title="Mi安全键盘" @success="enterSuccess" @close="close"></payKeyboard>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import payKeyboard from '@/components/mi-payKeyboard/mi-payKeyboard.vue'
|
|
import eventBus from '../../utils/eventBus.js';
|
|
import {
|
|
wxPAY,
|
|
alPAY,
|
|
dtPAY,
|
|
collagePAY,
|
|
payIndex
|
|
} from '@/apis/interfaces/pay'
|
|
export default {
|
|
components: {
|
|
payKeyboard
|
|
},
|
|
data() {
|
|
return {
|
|
payNo: "",
|
|
price: "",
|
|
coins: "",
|
|
platform: ['dtpay'],
|
|
oepnType: '',
|
|
canpay: true,
|
|
has_transfer_password: true,
|
|
password: '',
|
|
showKeyBoard: false,
|
|
type: '',
|
|
}
|
|
},
|
|
mounted() {
|
|
this.payNo = this.$Route.query.orderNo
|
|
this.price = Number(this.$Route.query.price).toFixed(2)
|
|
if (this.$Route.query.oepnType === 'order') {
|
|
this.oepnType = this.$Route.query.oepnType
|
|
}
|
|
if (this.$Route.query.type) {
|
|
this.type = this.$Route.query.type
|
|
}
|
|
},
|
|
onShow() {
|
|
this.payIndex();
|
|
},
|
|
methods: {
|
|
pay(e) {
|
|
if (e.platform === 'dtpay') return this.inputPassword();
|
|
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)
|
|
}
|
|
})
|
|
},
|
|
//获取支付
|
|
|
|
payIndex() {
|
|
payIndex().then(res => {
|
|
this.has_transfer_password = res.has_transfer_password;
|
|
this.coins = res.score
|
|
}).catch(err => {
|
|
uni.showToast({
|
|
title: err.message,
|
|
icon: "none",
|
|
mask: true,
|
|
})
|
|
})
|
|
|
|
},
|
|
|
|
// 输入支付密码
|
|
inputPassword() {
|
|
if (!this.has_transfer_password) {
|
|
uni.showModal({
|
|
title: '温馨提示',
|
|
content: '是否现在就去设置支付密码',
|
|
confirmText: '立即设置',
|
|
confirmColor: "#34CE98",
|
|
cancelText: '再想想',
|
|
cancelColor: "#666666",
|
|
success: (res) => {
|
|
if (res.confirm) {
|
|
this.$Router.push({
|
|
name: "AccountResetPassword"
|
|
})
|
|
}
|
|
this.canpay = true
|
|
}
|
|
})
|
|
} else {
|
|
this.showKeyBoard = true
|
|
}
|
|
},
|
|
|
|
// 输入正确的回调
|
|
enterSuccess(password) {
|
|
this.password = password
|
|
this.showKeyBoard = false
|
|
this.getDTPAY();
|
|
},
|
|
// 点击[取消] 关闭输入框 的回调
|
|
close() {
|
|
this.showKeyBoard = false;
|
|
this.canpay = true;
|
|
},
|
|
|
|
// 调用 dt 支付
|
|
getDTPAY() {
|
|
if (this.canpay) {
|
|
this.canpay = false
|
|
let requestUrl = dtPAY
|
|
if (this.type === 'pin') {
|
|
requestUrl = collagePAY
|
|
}
|
|
requestUrl(this.payNo, this.password).then(res => {
|
|
if (res.state === 'warning') {
|
|
uni.showModal({
|
|
title: '当前DT积分不足',
|
|
content: '不能支付该订单,是否放弃当前支付',
|
|
confirmText: '立即充值',
|
|
confirmColor: "#34CE98",
|
|
cancelText: '放弃支付',
|
|
cancelColor: "#666666",
|
|
success: (res) => {
|
|
if (res.confirm) {
|
|
this.$Router.push({
|
|
name: "AccountRecharge"
|
|
})
|
|
} else {
|
|
uni.navigateBack();
|
|
}
|
|
this.canpay = true
|
|
}
|
|
})
|
|
} else {
|
|
if (this.oepnType === 'order') {
|
|
uni.showModal({
|
|
title: '支付成功',
|
|
content: '该订单已支付成功',
|
|
confirmText: ' 返回订单',
|
|
confirmColor: "#34CE98",
|
|
showCancel: false,
|
|
success: (res) => {
|
|
if (res.confirm) {
|
|
this.$Router.back();
|
|
eventBus.$emit('paySuccess', this.payNo);
|
|
}
|
|
this.canpay = true
|
|
}
|
|
})
|
|
} else {
|
|
if (this.type === 'pin') {
|
|
console.log('pin........', res)
|
|
this.canpay = true
|
|
if (res.detailId) {
|
|
uni.showLoading({
|
|
title:'跳转中',
|
|
mask:true,
|
|
})
|
|
setTimeout(() => {
|
|
uni.hideLoading()
|
|
uni.navigateTo({
|
|
url: '/pages/group-book/success/success?id=' + res.detailId
|
|
})
|
|
}, 2000)
|
|
|
|
} else {
|
|
uni.showModal({
|
|
title: '温馨提示',
|
|
content: '该订单拼团成功',
|
|
confirmText: '查看订单',
|
|
confirmColor: "#34CE98",
|
|
cancelText: '再逛逛',
|
|
cancelColor: "#666666",
|
|
success: (res) => {
|
|
if(res.confirm){
|
|
uni.navigateTo({
|
|
url:'/pages/group-book/list/list'
|
|
})
|
|
} if(res.cancel){
|
|
uni.navigateTo({
|
|
url:'/pages/store/index'
|
|
})
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
} else {
|
|
uni.showModal({
|
|
title: '支付成功',
|
|
content: '该订单已支付成功',
|
|
confirmText: '我的订单',
|
|
confirmColor: "#34CE98",
|
|
cancelText: '再逛逛',
|
|
cancelColor: "#666666",
|
|
success: (res) => {
|
|
if (res.confirm) {
|
|
this.$Router.push({
|
|
name: "Order",
|
|
params: {
|
|
index: 0
|
|
},
|
|
})
|
|
} else {
|
|
uni.navigateBack();
|
|
}
|
|
this.canpay = true
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
}
|
|
}).catch(err => {
|
|
uni.showToast({
|
|
title: err.message,
|
|
icon: "none",
|
|
mask: true,
|
|
})
|
|
this.canpay = true
|
|
})
|
|
}
|
|
},
|
|
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 => {
|
|
if (payErr.errCode == '-100') {
|
|
uni.showToast({
|
|
title: '支付被取消',
|
|
icon: 'none'
|
|
})
|
|
} else {
|
|
uni.showToast({
|
|
title: payErr.errMsg,
|
|
icon: 'none'
|
|
})
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
|
|
</style>
|