wechatPay.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import { wxLogin } from '@/common/auth.js'
  2. import { checkPayOnlineSwitch, wechatMiniWxPay } from '@/services/api/pay.js'
  3. // 调用微信支付
  4. function wxRequestPayment(payment) {
  5. return new Promise((resolve, reject) => {
  6. uni.requestPayment({
  7. timeStamp: payment.timeStamp,
  8. nonceStr: payment.nonceStr,
  9. package: payment.package,
  10. signType: payment.signType,
  11. paySign: payment.paySign,
  12. success: () => {
  13. resolve(true)
  14. },
  15. fail: () => {
  16. reject({ msg: 'error' })
  17. }
  18. })
  19. })
  20. }
  21. // 微信支付
  22. const wechatPay = {
  23. methods: {
  24. // 验证微信支付是否可用
  25. async miniWxPayFor(data) {
  26. try {
  27. const res = await checkPayOnlineSwitch()
  28. if (res.data === 1) {
  29. this.weChatMiniWxPay(data)
  30. } else {
  31. // this.$api.navigateTo(`/pages/user/order/order-payment?money=${data.payableAmount}`)
  32. console.log('暂不支持线上支付')
  33. }
  34. } catch (e) {
  35. console.log(e)
  36. }
  37. },
  38. // 获取微信支付payment
  39. async weChatMiniWxPay(data) {
  40. try {
  41. // 获取微信code
  42. const wechatCode = await wxLogin()
  43. // 微信支付请求 返回支付信息
  44. const response = await wechatMiniWxPay({
  45. payAmount: data.payableAmount,
  46. payWay: 'WEIXIN',
  47. payType: 'XCX',
  48. code: wechatCode,
  49. orderId: data.orderId,
  50. shopOrderId: data.shopOrderId
  51. })
  52. // 处理支付信息 调用微信支付
  53. const payment = JSON.parse(response.data.rt10_payInfo)
  54. const payFlag = await wxRequestPayment(payment)
  55. if (payFlag) {
  56. // 微信支付成功回调 在页面onload中通过this.$on监听orderPaySuccess事件回调
  57. console.log('支付成功')
  58. this.$emit('orderPaySuccess', data)
  59. } else {
  60. uni.setStorageSync('PAY_ORDER_INFO', data)
  61. this.$router.redirectTo('order/pay-faild')
  62. }
  63. } catch (error) {
  64. // 微信支付失败
  65. if (error.msg === 'error') {
  66. uni.setStorageSync('PAY_ORDER_INFO', data)
  67. this.$router.redirectTo('order/pay-faild')
  68. } else {
  69. this.$util.msg(error.msg, 2000)
  70. }
  71. }
  72. }
  73. }
  74. }
  75. export default wechatPay