355 lines
8.5 KiB
JavaScript
355 lines
8.5 KiB
JavaScript
|
var core = getApp().globalData.requirejs("core"),
|
||
|
foxui = getApp().globalData.requirejs("foxui"),
|
||
|
that
|
||
|
let chectOrderTask = {},
|
||
|
mockLoadingText = {}
|
||
|
export default {
|
||
|
data() {
|
||
|
return {
|
||
|
icons: getApp().globalData.requirejs("icons"),
|
||
|
success: false,
|
||
|
successData: {},
|
||
|
coupon: false,
|
||
|
options: "",
|
||
|
list: "",
|
||
|
order: "",
|
||
|
ordervirtual: "",
|
||
|
ordervirtualtype: "",
|
||
|
alidata: {},
|
||
|
isSubPay: false,
|
||
|
isOnPaying: false,
|
||
|
onPayingProgress: 99,
|
||
|
shop: 0
|
||
|
};
|
||
|
},
|
||
|
|
||
|
components: {},
|
||
|
props: {},
|
||
|
onLoad: function (option) {
|
||
|
that = this
|
||
|
onPayingProgress()
|
||
|
if (option && option.id) {
|
||
|
that.init(option);
|
||
|
} else {
|
||
|
const eventChannel = this.getOpenerEventChannel();
|
||
|
eventChannel.on('acceptDataFromOfflinePay', function (data) {
|
||
|
that.init(data.order);
|
||
|
})
|
||
|
}
|
||
|
|
||
|
},
|
||
|
onShow: function () { },
|
||
|
onHide: function () {
|
||
|
|
||
|
},
|
||
|
onUnload: function () {
|
||
|
that.checkUserCancelPay()
|
||
|
clearTimeout(chectOrderTask)
|
||
|
clearTimeout(mockLoadingText)
|
||
|
},
|
||
|
methods: {
|
||
|
init: function (option) {
|
||
|
that.setData({
|
||
|
options: option
|
||
|
})
|
||
|
// 先获取订单是否是直接全部使用金豆抵扣的
|
||
|
if (that.options.status == 3) {
|
||
|
// 已经用金豆或者储值卡完全抵扣
|
||
|
that.allUseCreditPay(that.options)
|
||
|
} else {
|
||
|
// 如果是公众号支付
|
||
|
if (that.options.ish5wechat == 'yes') {
|
||
|
// 如果是公众号登录
|
||
|
that.getH5WechatPay({
|
||
|
outTradeNo: that.options['ordersn'],
|
||
|
payAmount: that.options['offline_price'],
|
||
|
orderName: '扫码付款-' + that.options['merch_name'],
|
||
|
});
|
||
|
}
|
||
|
that.doPayment()
|
||
|
}
|
||
|
},
|
||
|
get_list: function () {
|
||
|
let typeJsonData = {}
|
||
|
//#ifdef MP-WEIXIN
|
||
|
typeJsonData = {
|
||
|
'currentTarget': {
|
||
|
'dataset': {
|
||
|
'type': 'wechat'
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
//#endif
|
||
|
let alipayJsonData = {
|
||
|
'currentTarget': {
|
||
|
'dataset': {
|
||
|
'type': 'alipay'
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
//#ifdef MP-ALIPAY
|
||
|
typeJsonData = alipayJsonData
|
||
|
//#endif
|
||
|
let h5Pla = getApp().globalData.util.getH5Platform()
|
||
|
if (h5Pla == "H5-ALIPAY") {
|
||
|
typeJsonData = alipayJsonData
|
||
|
}
|
||
|
let payRequestData = JSON.parse(JSON.stringify(that.options))
|
||
|
console.log("payRequestData::::",payRequestData)
|
||
|
payRequestData['s'] = 'App.Order_Pay.submit'
|
||
|
uni.showLoading({
|
||
|
title: '支付中...',
|
||
|
mask: true
|
||
|
})
|
||
|
// 创建订单
|
||
|
getApp().globalData.request(payRequestData).then(payRes => {
|
||
|
uni.hideLoading()
|
||
|
let subRes = payRes.data.data
|
||
|
|
||
|
|
||
|
if ("SUCCESS" == subRes.result_code) {
|
||
|
that.setData({
|
||
|
list: subRes.data
|
||
|
})
|
||
|
// 直接发起支付
|
||
|
that.callPayWin(typeJsonData)
|
||
|
} else {
|
||
|
uni.hideToast()
|
||
|
uni.showModal({
|
||
|
title: "提示",
|
||
|
content: subRes.err_code_des,
|
||
|
showCancel: false
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
},
|
||
|
doPayment: function () {
|
||
|
uni.showToast({
|
||
|
title: "支付中...",
|
||
|
icon: "loading",
|
||
|
duration: getApp().globalData.config.timeout,
|
||
|
})
|
||
|
that.get_list()
|
||
|
},
|
||
|
// 调起支付
|
||
|
callPayWin: function (payTypeQuery) {
|
||
|
console.log("payTypeQuery",payTypeQuery)
|
||
|
// 1.取消支付提醒逻辑
|
||
|
that.isSubPay = true
|
||
|
that.isOnPaying = true
|
||
|
var payType = core.pdata(payTypeQuery).type,
|
||
|
_this = this;
|
||
|
console.log("payType",payType)
|
||
|
if (payType == 'alipay' || "wechat" == payType) {
|
||
|
// 微信小程序支付
|
||
|
let payinfo = {}
|
||
|
if (payType == 'alipay') {
|
||
|
var trade_no=that.list.alipay['data']["trade_no"];
|
||
|
that.list.alipay['data']["trade_no"]=trade_no.slice(2); //去掉前2位
|
||
|
payinfo = {
|
||
|
provider: 'alipay',
|
||
|
orderInfo: that.list.alipay['data']["trade_no"]
|
||
|
}
|
||
|
} else {
|
||
|
payinfo = that.list.wechat['data']
|
||
|
}
|
||
|
core.pay(payinfo, function (payinfoRes) {
|
||
|
let isPaySuccess = false
|
||
|
if (
|
||
|
// #ifdef MP-ALIPAY||MP-WEIXIN
|
||
|
"requestPayment:ok" == payinfoRes.errMsg &&
|
||
|
//#endif
|
||
|
1
|
||
|
) {
|
||
|
if (payType == "alipay") {
|
||
|
// isPaySuccess = true
|
||
|
if (payinfoRes.resultCode == "9000") {
|
||
|
isPaySuccess = true
|
||
|
}
|
||
|
} else if (payType == "wechat") {
|
||
|
isPaySuccess = true
|
||
|
}
|
||
|
}
|
||
|
if (isPaySuccess) {
|
||
|
uni.showLoading({
|
||
|
title: '支付中',
|
||
|
mask: true
|
||
|
})
|
||
|
setTimeout(function () {
|
||
|
_this.finishPay(payType)
|
||
|
}, 100)
|
||
|
} else {
|
||
|
that.isOnPaying = false
|
||
|
that.checkUserCancelPay()
|
||
|
}
|
||
|
}, function () {
|
||
|
console.log("支付失败")
|
||
|
// 支付失败
|
||
|
that.checkUserCancelPay()
|
||
|
})
|
||
|
} else if ("cash" == payType) {
|
||
|
core.confirm("确认要使用货到付款吗?", function () {
|
||
|
_this.finishPay(payType);
|
||
|
}, function () { })
|
||
|
} else if ("credit" == payType) {
|
||
|
core.confirm("确认要支付吗?", function () {
|
||
|
_this.finishPay(payType)
|
||
|
}, function () { })
|
||
|
}
|
||
|
},
|
||
|
|
||
|
finishPay: function (typeQuery, ordersn, showloading = true, loadingText = "支付中...", payComHideLoading = true) {
|
||
|
this.isSubPay = false
|
||
|
let payRequestData = {
|
||
|
s: 'App.Order_Pay.complete',
|
||
|
id: that.options.id,
|
||
|
ordersn: ordersn
|
||
|
}
|
||
|
// 创建订单
|
||
|
getApp().globalData.request(payRequestData).then(payRes => {
|
||
|
uni.hideLoading()
|
||
|
let subRes = payRes.data.data
|
||
|
if ("SUCCESS" == subRes.result_code) {
|
||
|
// 兼容平安银行,等待支付回调
|
||
|
if (1642409719 == subRes.err_code) {
|
||
|
chectOrderTask = setTimeout(function () {
|
||
|
if (that.isOnPaying) {
|
||
|
that.finishPay(typeQuery, ordersn, true, loadingText, false)
|
||
|
}
|
||
|
}, 290);
|
||
|
} else if (0 != subRes.err_code) {
|
||
|
that.isOnPaying = false
|
||
|
foxui.toast(that, subRes.err_code_des)
|
||
|
} else {
|
||
|
that.isOnPaying = false
|
||
|
setTimeout(function () {
|
||
|
uni.hideLoading()
|
||
|
}, 800)
|
||
|
that.setData({
|
||
|
order: subRes.data
|
||
|
});
|
||
|
that.showPoPSuccessPay(subRes.data)
|
||
|
}
|
||
|
} else {
|
||
|
uni.hideToast()
|
||
|
uni.showModal({
|
||
|
title: "提示",
|
||
|
content: subRes.err_code_des,
|
||
|
showCancel: false
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 显示付款成功通知 */
|
||
|
showPoPSuccessPay: function (order) {
|
||
|
uni.setStorage({
|
||
|
key: 'pay_complete_success_order_data',
|
||
|
data: order,
|
||
|
success: (result) => {
|
||
|
uni.reLaunch({
|
||
|
url: '/pages/order_sub/pay/complete_show/index'
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
},
|
||
|
|
||
|
// 直接支付完成的情况,全部使用金豆抵扣
|
||
|
allUseCreditPay: function (order) {
|
||
|
uni.hideLoading()
|
||
|
that.showPoPSuccessPay(order)
|
||
|
},
|
||
|
|
||
|
// H5 公众号支付
|
||
|
getH5WechatPay: function (wechatH5PayData) {
|
||
|
uni.request({
|
||
|
url: 'https://yld.angyakeji.com/www/src/tools/wechat/pay/jsapi.php',
|
||
|
data: {
|
||
|
outTradeNo: wechatH5PayData['outTradeNo'],
|
||
|
payAmount: wechatH5PayData['payAmount'],
|
||
|
orderName: wechatH5PayData['orderName'],
|
||
|
openid: uni.getStorageSync('userInfo').openid,
|
||
|
},
|
||
|
header: {
|
||
|
// 'custom-header': 'hello' //自定义请求头信息
|
||
|
},
|
||
|
success: (res) => {
|
||
|
if (res.data) {
|
||
|
callpay(res.data);
|
||
|
} else {
|
||
|
uni.showModal({
|
||
|
title: '提示',
|
||
|
content: '网络异常,编号2020092101'
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
|
||
|
function jsApiCall(jsApiParameters) {
|
||
|
WeixinJSBridge.invoke(
|
||
|
'getBrandWCPayRequest',
|
||
|
jsApiParameters,
|
||
|
function (res) {
|
||
|
if (res.err_msg == 'get_brand_wcpay_request:ok') {
|
||
|
// alert('支付成功!');
|
||
|
that.finishPay('wechat', {});
|
||
|
} else {
|
||
|
alert('支付失败:' + res.err_code + res.err_desc + res.err_msg);
|
||
|
uni.navigateBack();
|
||
|
}
|
||
|
}
|
||
|
);
|
||
|
}
|
||
|
|
||
|
function callpay(jsApiParameters) {
|
||
|
if (typeof WeixinJSBridge == "undefined") {
|
||
|
if (document.addEventListener) {
|
||
|
document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
|
||
|
} else if (document.attachEvent) {
|
||
|
document.attachEvent('WeixinJSBridgeReady', jsApiCall);
|
||
|
document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
|
||
|
}
|
||
|
} else {
|
||
|
jsApiCall(jsApiParameters);
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
shopFun: function (t) {
|
||
|
0 == core.pdata(t).id ? this.setData({
|
||
|
shop: 1
|
||
|
}) : this.setData({
|
||
|
shop: 0
|
||
|
});
|
||
|
},
|
||
|
phone: function (t) {
|
||
|
core.phone(t);
|
||
|
},
|
||
|
closecoupon: function () {
|
||
|
this.setData({
|
||
|
coupon: false
|
||
|
});
|
||
|
},
|
||
|
checkUserCancelPay: function () {
|
||
|
that.isOnPaying = false
|
||
|
if (that.isSubPay) {
|
||
|
getApp().globalData.request({
|
||
|
s: 'Order_CheckPay.isPay',
|
||
|
id: that.options.id
|
||
|
}).then(res => { });
|
||
|
that.isSubPay = false;
|
||
|
}
|
||
|
},
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function onPayingProgress() {
|
||
|
setInterval(function () {
|
||
|
if (that.onPayingProgress >= 90) {
|
||
|
that.onPayingProgress = 0
|
||
|
} else {
|
||
|
that.onPayingProgress += 40
|
||
|
}
|
||
|
}, 1000)
|
||
|
}
|