2025-11-28 22:18:23 +08:00

81 lines
1.8 KiB
JavaScript

import platform from '@/core/platform'
import storage from '@/utils/storage'
import ClientEnum from '@/common/enum/Client'
import { PayMethodEnum } from '@/common/enum/payment'
/**
* 发起支付请求 (用于H5)
* @param {Object} option 参数
*/
const paymentAsH5 = option => {
const options = { formHtml: '', ...option }
// 记录下单的信息
storage.set('tempUnifyData_' + options.orderKey, {
method: PayMethodEnum.ALIPAY.value,
outTradeNo: options.out_trade_no
}, 60 * 60)
// 跳转到支付宝支付页
return new Promise((resolve, reject) => {
// console.log(options.formHtml)
if (options.formHtml) {
const div = document.createElement('div')
div.innerHTML = options.formHtml
document.body.appendChild(div)
document.forms[0].submit()
}
})
}
/**
* 发起支付请求 (用于APP)
* @param {Object} option 参数
*/
const paymentAsApp = options => {
return new Promise((resolve, reject) => {
uni.requestPayment({
provider: 'alipay',
orderInfo: options.orderInfo,
success(res) {
// isRequireQuery 是否需要主动查单
// outTradeNo 交易订单号
const option = {
isRequireQuery: true,
outTradeNo: options.out_trade_no,
method: 'alipay'
}
resolve({ res, option })
},
fail: res => reject(res)
})
})
}
// 获取支付完成后跳转的url
// #ifdef H5
const returnUrl = () => {
return window.location.href
}
// #endif
/**
* 统一下单API
*/
export const payment = (option) => {
const events = {
[ClientEnum.H5.value]: paymentAsH5,
[ClientEnum.APP.value]: paymentAsApp
}
return events[platform](option)
}
/**
* 统一下单API需要的扩展数据
*/
export const extraAsUnify = () => {
const extra = {}
// #ifdef H5
extra.returnUrl = returnUrl()
// #endif
return extra
}