alipay.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import platform from '@/core/platform'
  2. import storage from '@/utils/storage'
  3. import ClientEnum from '@/common/enum/Client'
  4. import { PayMethodEnum } from '@/common/enum/payment'
  5. /**
  6. * 发起支付请求 (用于H5)
  7. * @param {Object} option 参数
  8. */
  9. const paymentAsH5 = option => {
  10. const options = { formHtml: '', ...option }
  11. // 记录下单的信息
  12. storage.set('tempUnifyData_' + options.orderKey, {
  13. method: PayMethodEnum.ALIPAY.value,
  14. outTradeNo: options.out_trade_no
  15. }, 60 * 60)
  16. // 跳转到支付宝支付页
  17. return new Promise((resolve, reject) => {
  18. // console.log(options.formHtml)
  19. if (options.formHtml) {
  20. const div = document.createElement('div')
  21. div.innerHTML = options.formHtml
  22. document.body.appendChild(div)
  23. document.forms[0].submit()
  24. }
  25. })
  26. }
  27. /**
  28. * 发起支付请求 (用于APP)
  29. * @param {Object} option 参数
  30. */
  31. const paymentAsApp = options => {
  32. return new Promise((resolve, reject) => {
  33. uni.requestPayment({
  34. provider: 'alipay',
  35. orderInfo: options.orderInfo,
  36. success(res) {
  37. // isRequireQuery 是否需要主动查单
  38. // outTradeNo 交易订单号
  39. const option = {
  40. isRequireQuery: true,
  41. outTradeNo: options.out_trade_no,
  42. method: 'alipay'
  43. }
  44. resolve({ res, option })
  45. },
  46. fail: res => reject(res)
  47. })
  48. })
  49. }
  50. // 获取支付完成后跳转的url
  51. // #ifdef H5
  52. const returnUrl = () => {
  53. return window.location.href
  54. }
  55. // #endif
  56. /**
  57. * 统一下单API
  58. */
  59. export const payment = (option) => {
  60. const events = {
  61. [ClientEnum.H5.value]: paymentAsH5,
  62. [ClientEnum.APP.value]: paymentAsApp
  63. }
  64. return events[platform](option)
  65. }
  66. /**
  67. * 统一下单API需要的扩展数据
  68. */
  69. export const extraAsUnify = () => {
  70. const extra = {}
  71. // #ifdef H5
  72. extra.returnUrl = returnUrl()
  73. // #endif
  74. return extra
  75. }