| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- import platform from '@/core/platform'
- import storage from '@/utils/storage'
- import ClientEnum from '@/common/enum/Client'
- import { PayMethodEnum } from '@/common/enum/payment'
- /**
- * 发起支付请求 (用于微信小程序)
- * @param {Object} option 参数
- */
- const paymentAsWxMp = option => {
- const options = {
- timeStamp: '',
- nonceStr: '',
- package: '',
- signType: '',
- paySign: '',
- ...option
- }
- return new Promise((resolve, reject) => {
- uni.requestPayment({
- provider: 'wxpay',
- timeStamp: options.timeStamp,
- nonceStr: options.nonceStr,
- package: options.package,
- signType: options.signType,
- paySign: options.paySign,
- success(res) {
- const option = {
- isRequireQuery: true, // 是否需要主动查单
- outTradeNo: options.out_trade_no, // 交易订单号
- method: 'wechat'
- }
- resolve({ res, option })
- },
- fail: res => reject(res)
- })
- })
- }
- /**
- * 发起支付请求 (用于H5)
- * @param {Object} option 参数
- */
- const paymentAsH5 = option => {
- const options = { orderKey: null, mweb_url: '', h5_url: '', ...option }
- // 记录下单的信息
- storage.set('tempUnifyData_' + options.orderKey, {
- method: PayMethodEnum.WECHAT.value,
- outTradeNo: options.out_trade_no
- }, 60 * 60)
- // 跳转到微信支付页
- return new Promise((resolve, reject) => {
- const url = options.mweb_url || options.h5_url
- if (url) {
- window.location.href = url
- }
- })
- }
- /**
- * 发起支付请求 (用于APP)
- * @param {Object} option 参数
- */
- const paymentAsApp = options => {
- return new Promise((resolve, reject) => {
- uni.requestPayment({
- provider: 'wxpay',
- orderInfo: {
- partnerid: options.partnerid,
- appid: options.appid,
- package: 'Sign=WXPay',
- noncestr: options.noncestr,
- sign: options.sign,
- prepayid: options.prepayid,
- timestamp: options.timestamp
- },
- success(res) {
- // isRequireQuery 是否需要主动查单
- // outTradeNo 交易订单号
- resolve({ res, option: { isRequireQuery: true, outTradeNo: options.out_trade_no, method: 'wechat' } })
- },
- fail: res => reject(res)
- })
- })
- }
- /**
- * 统一下单API
- */
- export const payment = (option) => {
- const events = {
- [ClientEnum.H5.value]: paymentAsH5,
- [ClientEnum.MP_WEIXIN.value]: paymentAsWxMp,
- [ClientEnum.APP.value]: paymentAsApp
- }
- return events[platform](option)
- }
- /**
- * 统一下单API需要的扩展数据
- */
- export const extraAsUnify = () => {
- return {}
- }
|