// +---------------------------------------------------------------------- // | CRMEB [ CRMEB赋能开发者,助力企业发展 ] // +---------------------------------------------------------------------- // | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved. // +---------------------------------------------------------------------- // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权 // +---------------------------------------------------------------------- // | Author: CRMEB Team // +---------------------------------------------------------------------- import { svipOrderCreateApi } from '@/api/activity.js'; import { orderPayApi, orderExpressPayApi } from '@/api/order.js'; import { ProductTypeEnum, } from "@/enums/productEnums"; export default { data() { return { ProductTypeEnum: ProductTypeEnum, isBuy: false //是否可以点击购买 }; }, methods: { /** * 调支付订单接口后的操作 * @param {Object} res 接口返回的值 * @param {Object} orderNo 订单号 * @param {Object} productType 商品类型 * @param {Object} fromType 页面来源 * @param {Object} payType 支付方式 * @param {Object} payPrice 支付金额 */ handleOrderPay(res,orderNo,productType,fromType,payType,payPrice){ let jsConfig = res.data.jsConfig; let goPages = '' if(fromType==='svip'){ goPages = `/pages/goods/order_pay_status/index?order_id=${orderNo}&payType=${payType}&payPrice=${payPrice}&fromType=${fromType}`; }else{ if (fromType=='fast') { goPages = `/pages/goods/order_pay_status/index?order_id=${orderNo}&apiType=${fromType}`; } else { goPages = '/pages/goods/order_pay_status/index?order_id=' + orderNo; } } switch (res.data.payType) { case 'weixin': uni.hideLoading(); this.weixinPay(jsConfig, orderNo, goPages,productType,fromType); break; case 'yue': uni.hideLoading(); uni.reLaunch({ url: goPages + '&status=1' }); break; case 'h5': uni.hideLoading(); setTimeout(() => { location.href = jsConfig.mwebUrl + '&redirect_url=' + window .location .protocol + '//' + window.location.host + goPages + '&status=1'; }, 500) break; case 'alipay': //#ifdef H5 //h5支付 uni.hideLoading(); this.formContent = res.data.alipayRequest; this.$nextTick(() => { document.forms['punchout_form'].submit(); }) uni.setStorage({ key: 'orderNo', data: orderNo }); uni.setStorage({ key: 'payResultfromType', data: fromType }); //#endif // #ifdef APP-PLUS let alipayRequest = res.data.alipayRequest; uni.requestPayment({ provider: 'alipay', orderInfo: alipayRequest, success: (e) => { setTimeout(res => { uni.hideLoading(); uni.navigateTo({ url: `/pages/goods/alipay_return/alipay_return?out_trade_no=${orderNo}&payChannel=appAlipay&payPrice=${payPrice}&fromType=${fromType}` }) }, 500) }, fail: (e) => { uni.hideLoading(); uni.showModal({ content: "支付失败", showCancel: false, success: function(res) { if (res.confirm) { //点击确认的操作 uni.navigateTo({ url: '/pages/goods/alipay_return/alipay_return?out_trade_no=' + orderNo + '&payChannel=' + 'appAlipay' }) } } }) }, complete: () => { uni.hideLoading(); }, }); // #endif break; } }, //微信支付 weixinPay(jsConfig, orderNo, goPages,productType,fromType) { // #ifdef MP if (productType === 'video') { uni.requestOrderPayment({ timeStamp: jsConfig.timeStamp, nonceStr: jsConfig.nonceStr, package: jsConfig.packages, signType: jsConfig.signType, paySign: jsConfig.paySign, ticket: productType === 'normal' ? null : jsConfig.ticket, success: function(ress) { setTimeout(res => { uni.hideLoading(); uni.reLaunch({ url: goPages }) }, 500); }, fail: function(e) { uni.hideLoading(); return this.$util.Tips({ title: '取消支付' }, { tab: 5, url: goPages + '&status=2' }); }, complete: function(e) { uni.hideLoading(); //关闭当前页面跳转至订单状态 if (e.errMsg == 'requestPayment:cancel') return this.$util.Tips({ title: '取消支付' }, { tab: 5, url: goPages + '&status=2' }); }, }) } else { uni.requestPayment({ timeStamp: jsConfig.timeStamp, nonceStr: jsConfig.nonceStr, package: jsConfig.packages, signType: jsConfig.signType, paySign: jsConfig.paySign, ticket: productType === 'normal' ? null : jsConfig.ticket, success: function(ress) { setTimeout(res => { uni.hideLoading(); uni.reLaunch({ url: goPages }) }, 500); }, fail: function(e) { uni.hideLoading(); return this.$util.Tips({ title: '取消支付' }, { tab: 5, url: goPages + '&status=2' }); }, complete: function(e) { uni.hideLoading(); //关闭当前页面跳转至订单状态 if (e.errMsg == 'requestPayment:cancel') return this.$util.Tips({ title: '取消支付' }, { tab: 5, url: goPages + '&status=2' }); }, }) } // #endif // #ifdef H5 let data = { timestamp: jsConfig.timeStamp, nonceStr: jsConfig.nonceStr, package: jsConfig.packages, signType: jsConfig.signType, paySign: jsConfig.paySign }; if (this.$wechat.isWeixin()) { this.$wechat.pay(data).then(res => { setTimeout(res => { uni.hideLoading(); uni.redirectTo({ url: goPages }) }, 500); }).catch(res => { uni.hideLoading(); return this.$util.Tips({ title: '取消支付' }, { tab: 5, url: goPages + '&status=2' }); }); } else { setTimeout(() => { location.href = jsConfig.mwebUrl + '&redirect_url=' + window.location.protocol + '//' + window.location.host + goPages; }, 100) uni.hideLoading(); } // #endif // #ifdef APP-PLUS let mp_pay_name = '' if (uni.requestOrderPayment) { mp_pay_name = 'requestOrderPayment' } else { mp_pay_name = 'requestPayment' } uni[mp_pay_name]({ provider: 'wxpay', orderInfo: { "appid": jsConfig.appId, // 微信开放平台 - 应用 - AppId,注意和微信小程序、公众号 AppId 可能不一致 "noncestr": jsConfig.nonceStr, // 随机字符串 "package": "Sign=WXPay", // 固定值 "partnerid": jsConfig.partnerid, // 微信支付商户号 "prepayid": jsConfig.packages, // 统一下单订单号 "timestamp": Number(jsConfig.timeStamp), // 时间戳(单位:秒) "sign": this.systemPlatform === 'ios' ? 'MD5' : jsConfig.paySign // 签名,这里用的 MD5 签名 }, //微信、支付宝订单数据 【注意微信的订单信息,键值应该全部是小写,不能采用驼峰命名】 success: function(res) { uni.hideLoading(); setTimeout(res => { uni.redirectTo({ url: goPages }) }, 500) }, fail: function(err) { uni.hideLoading(); uni.showModal({ content: "支付失败", showCancel: false, success: function(res) { if (res.confirm) { uni.redirectTo({ url: goPages + '&status=2' }) } } }) }, complete: (err) => { uni.hideLoading(); } }); // #endif }, //购买svip svipOnCreateOrder(data, orderNo,payType,payPrice,fromType) { svipOrderCreateApi(data).then(res => { let jsConfig = res.data.jsConfig; let goPages = `/pages/goods/order_pay_status/index?order_id=${res.data.orderNo}&payType=${payType}&payPrice=${payPrice}&fromType=${fromType}`; this.weixinPay(jsConfig, res.data.orderNo, goPages,'normal',fromType) }).catch(err => { uni.hideLoading(); return this.$util.Tips({ title: err }); }); }, /** * 跳入支付收银台页面 * @param {Object} secondType 二级订单类型 * @param {data} res 订单对象 */ getToPayment(secondType,data,fromType) { let url = `/pages/goods/order_payment/index?orderNo=${data.orderNo}&payPrice=${data.payPrice}&fromType=${fromType}` // let url = '' // if(secondType === this.ProductTypeEnum.Integral){ // url = `/pages/goods/order_payment/index?orderNo=${data.orderNo}&payPrice=${data.payPrice}&fromType=integral` // }else{ // url = `/pages/goods/order_payment/index?orderNo=${data.orderNo}&payPrice=${data.payPrice}` // } uni.redirectTo({ url: url }); }, /** * 订单支付 * @param {Object} orderNo 订单号 * @param {Object} payChannel 支付渠道 * @param {Object} payType 支付方式 * @param {Object} productType 商品类型 * @param {Object} fromType 页面来源 * @param {Object} payPrice 支付金额 */ changeOrderPay(orderNo, payChannel, payType ,productType, fromType, payPrice) { orderPayApi({ orderNo: orderNo, payChannel: payChannel, payType: payType, scene: productType === 'normal' ? 0 : 1177 }).then(res => { this.handleOrderPay(res, orderNo, productType, fromType, payType, payPrice) }).catch(err => { uni.hideLoading(); this.isBuy = false; return this.$util.Tips({ title: err }); }); }, /** * 订单支付 * @param {Object} orderNo 订单号 * @param {Object} payChannel 支付渠道 * @param {Object} payType 支付方式 * @param {Object} productType 商品类型 * @param {Object} fromType 页面来源 * @param {Object} payPrice 支付金额 */ changeOrderExpressPay(orderNo, payChannel, payType ,productType, fromType, payPrice) { orderExpressPayApi({ orderNo: orderNo, payChannel: payChannel, payType: payType, scene: productType === 'normal' ? 0 : 1177 }).then(res => { this.handleOrderPay(res, orderNo, productType, fromType, payType, payPrice) }).catch(err => { uni.hideLoading(); this.isBuy = false; return this.$util.Tips({ title: err }); }); } } };