shangfutong-ui/jeepay-ui-uapp-cashier/pages/payway/payway.js

187 lines
5.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import appConfig from '@/config/appConfig.js'
import { toErrPageFunc } from '@/util/toErrorPageUtil.js'
import { $payCancelBoardCast, $payEventBoardCast } from '@/http/apiManager.js'
function wechatH5Func(orderRes, payOrderInfo){
let onBridgeReady = function () {
// eslint-disable-next-line no-undef
WeixinJSBridge.invoke( 'getBrandWCPayRequest', JSON.parse(orderRes.payInfo), function(res) {
payEventBoardCast(orderRes.payOrderId, res)
if (res.err_msg == "get_brand_wcpay_request:ok") {
// 使用以上方式判断前端返回,微信团队郑重提示:
//res.err_msg将在用户支付成功后返回ok但并不保证它绝对可靠。
// //重定向
if(payOrderInfo.returnUrl){
location.href = payOrderInfo.returnUrl;
}else{
alert('支付成功!');
// if(payOrderInfo.fun) return payOrderInfo.fun()
window.WeixinJSBridge.call('closeWindow')
}
}
if (res.err_msg == "get_brand_wcpay_request:cancel") {
// payCancel(orderRes.payOrderId)
alert("支付取消");
// return false;
window.WeixinJSBridge.call('closeWindow')
}
if (res.err_msg == "get_brand_wcpay_request:fail") {
alert('支付失败:' + JSON.stringify(res))
// return false;
window.WeixinJSBridge.call('closeWindow')
}
if (res.err_msg == "total_fee") {
alert('缺少参数')
window.WeixinJSBridge.call('closeWindow')
}
}
);
}
if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
}else if (document.attachEvent){
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
}
}else{
onBridgeReady();
}
}
// 支付宝内的浏览器调起支付https://myjsapi.alipay.com/jsapi/native/trade-pay.html
function alipayH5Func(orderRes){
// 执行事件
let doAlipay = function () {
AlipayJSBridge.call("tradePay", { tradeNO: orderRes.alipayTradeNo }, function (data) {
payEventBoardCast(orderRes.payOrderId, data)
if ("9000" == data.resultCode) {
// //重定向
if(orderRes.returnUrl){
location.href = orderRes.returnUrl;
}else{
alert('支付成功!');
window.AlipayJSBridge.call('closeWebview')
}
//8000后台获取支付结果超时暂时未拿到支付结果;
// 6004支付过程中网络出错 暂时未拿到支付结果;
}else if("8000" == data.resultCode || "6004" == data.resultCode){ //其他
alert(JSON.stringify(data));
window.AlipayJSBridge.call('closeWebview')
}else{ ///其他异常信息, 需要取消订单
// payCancel(orderRes.payOrderId)
alert('用户已取消!');
window.AlipayJSBridge.call('closeWebview')
}
});
}
if (!window.AlipayJSBridge) {
document.addEventListener('AlipayJSBridgeReady', doAlipay, false);
}else{
doAlipay();
}
}
function wechatLiteFunc(orderRes, payOrderInfo){
const payInfo = JSON.parse(orderRes.payInfo)
wx.requestPayment({
"timeStamp": payInfo.timeStamp,
"nonceStr": payInfo.nonceStr,
"package": payInfo.package,
"signType": payInfo.signType,
"paySign": payInfo.paySign,
"success": function(res){
if(appConfig.redPacketIsOpen){
setTimeout(() => {
uni.navigateTo({
url: '/pages/paySuccess/redSuccess?payOrderId=' + orderRes.payOrderId
})
}, 1000)
return false;
}
if(payOrderInfo.fun) return payOrderInfo.fun()
uni.navigateTo({
url: '/pages/paySuccess/paySuccess?amount=' + payOrderInfo.amount + '&payOrderId=' + orderRes.payOrderId
})
},
"fail": function(res){
if(res.errMsg == 'requestPayment:fail cancel') {
// payCancel(orderRes.payOrderId)
// toErrPageFunc('取消支付')
return uni.showToast({title: '取消支付',icon:'none'})
}else {
toErrPageFunc(res.errMsg)
}
},
"complete": (res) => {
payEventBoardCast(orderRes.payOrderId, res)
}
})
}
function alipayLiteFunc(orderRes, payOrderInfo){
my.tradePay({
tradeNO: orderRes.alipayTradeNo,
success: (res) => {
if(res.resultCode == 9000) {
if(payOrderInfo.fun) return payOrderInfo.fun()
uni.navigateTo({
url: '/pages/paySuccess/paySuccess?amount=' + payOrderInfo.amount
})
}else if(res.resultCode == 6001) {
// payCancel(orderRes.payOrderId)
// toErrPageFunc('取消支付')
return uni.showToast({title: '取消支付',icon:'none'})
}else if(res.resultCode == 4000) {
// toErrPageFunc('订单处理失败')
return uni.showToast({title: '订单处理失败',icon:'none'})
}else if(res.resultCode == 4) {
toErrPageFunc('无权限调用')
}else {
toErrPageFunc(JSON.stringify(res))
}
},
fail: (res) => {
toErrPageFunc(JSON.stringify(res))
},
complete: (res) => {
payEventBoardCast(orderRes.payOrderId, res)
}
});
}
function ysfpayH5Func(orderRes){
window.location.href = orderRes.redirectUrl
}
function payCancel(payOrderId) {
$payCancelBoardCast(payOrderId).then(() => {
console.log("取消支付")
})
}
function payEventBoardCast(payOrderId, resData) {
$payEventBoardCast(payOrderId, resData)
}
export default () => {
let result = {}
result[appConfig.PAGE_TYPE_ENUM.WECHAT_H5] = wechatH5Func;
result[appConfig.PAGE_TYPE_ENUM.ALIPAY_H5] = alipayH5Func;
result[appConfig.PAGE_TYPE_ENUM.WECHAT_LITE] = wechatLiteFunc;
result[appConfig.PAGE_TYPE_ENUM.ALIPAY_LITE] = alipayLiteFunc;
result[appConfig.PAGE_TYPE_ENUM.YSFPAY_H5] = ysfpayH5Func;
return result;
}