cyywl_server/yudao-ui-app/libs/pay.js

92 lines
2.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import util from 'utils/util'
import store from '@/store'
const payTypes = ['WXPAY', 'ALIPAY']
/**
* 统一支付处理方法
* @param payInfo // 支付下单信息
* @param payType // 支付类型
* @param createOrderFun // 预下单方法
* @param wxPaySuccess // 微信支付下单支付成功回调
* @param aliPaySuccess // 支付宝支付下单成功回调
*/
const unityPay = (options) => {
let _options = {
payInfo: {},
payType: '',
createOrderFun: () => {},
wxPaySuccess: () => {},
aliPaySuccess: () => {}
}
Object.assign(_options, options)
if (!_options.payType) {
return util.Tips({
title: '请选择支付方式'
})
}
if (!payTypes.includes(_options.payType)) {
throw new Error('支付方式参数值为 WXPAY、ALIPAY')
}
// 目前微信只支持JSAPIh5支付开通后取消该验证
const openId = store.state.app.openId || ''
if (_options.payType === 'WXPAY' && !openId) {
return util.Tips({
title: '请在微信客户端进行支付操作'
})
}
_options.payInfo.openid = openId
uni.showLoading({
title: '支付中',
mask: true
})
_options.createOrderFun({
..._options.payInfo,
payType: _options.payType
}).then(res => {
const payConfig = res.data
switch (_options.payType) {
// 微信JSAPI支付
case 'WXPAY':
wxPayJSAPI(payConfig.jsapiResult)
break
case 'ALIPAY':
_options.aliPaySuccess(payConfig.body)
break
}
}).catch(() => {
util.Tips({
title: '预下单失败'
})
}).finally(uni.hideLoading)
}
const wxPayJSAPI = (payData) => {
function onBridgeReady() {
WeixinJSBridge.invoke('getBrandWCPayRequest', {
"appId": payData.appId, //公众号ID由商户传入
"timeStamp": payData.timeStamp, //时间戳自1970年以来的秒数
"nonceStr": payData.nonceStr, //随机串
"package": payData.packageValue,
"signType": payData.signType, //微信签名方式:
"paySign": payData.paySign //微信签名
},
function(res) {
if (res.err_msg == "get_brand_wcpay_request:ok") {
_options.wxPaySuccess()
}
})
}
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()
}
}
export default unityPay