users/pages/order/offlinepay/pay/index.js

355 lines
8.5 KiB
JavaScript
Raw Normal View History

2024-11-26 15:26:32 +08:00
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)
}