diff --git a/api/pay/channel.js b/api/pay/channel.js new file mode 100644 index 00000000..fbaea2fa --- /dev/null +++ b/api/pay/channel.js @@ -0,0 +1,8 @@ +import request from "@/utils/request.js"; + +// 获得指定应用的开启的支付渠道编码列表 +export function getEnableChannelCodeList(appId) { + return request.get("app-api/pay/channel/get-enable-code-list", { + appId + }); +} diff --git a/libs/login.js b/libs/login.js index 70a626dd..a7e56297 100644 --- a/libs/login.js +++ b/libs/login.js @@ -17,7 +17,7 @@ function prePage(){ export const toLogin = Debounce(_toLogin,800) export function _toLogin(push, pathLogin) { - + store.commit("LOGOUT"); let path = prePage(); let login_back_url = Cache.get(BACK_URL); @@ -29,7 +29,7 @@ export function _toLogin(push, pathLogin) { pathLogin = '/page/users/login/index' Cache.set('login_back_url',path); } - + // #ifdef H5 if (isWeixin()) { let urlData = location.pathname + location.search @@ -38,8 +38,12 @@ export function _toLogin(push, pathLogin) { } else { urlData += '?go_longin=1'; } - if (!Cache.has('snsapiKey')) { - auth.oAuth('snsapi_base', urlData); + if (true && !Cache.has('snsapiKey')) { + // TODO 芋艿:先临时禁用掉,改成普通登录页 + // auth.oAuth('snsapi_base', urlData); + uni.navigateTo({ + url: '/pages/users/login/index' + }) } else { if (['/pages/user/index'].indexOf(login_back_url) == -1) { uni.navigateTo({ @@ -55,12 +59,13 @@ export function _toLogin(push, pathLogin) { } } // #endif - + if (['pages/user/index','/pages/user/index'].indexOf(login_back_url) == -1) { // #ifdef MP - uni.navigateTo({ - url: '/pages/users/wechat_login/index' - }) + // TODO 芋艿:先临时禁用掉,改成普通登录页 + uni.navigateTo({ + url: '/pages/users/login/index' + }) // #endif } } diff --git a/manifest.json b/manifest.json index ca43c336..3d114624 100644 --- a/manifest.json +++ b/manifest.json @@ -92,7 +92,7 @@ "h5" : { "devServer" : { "https" : false, - "disableHostCheck": true + "disableHostCheck" : true }, "router" : { "mode" : "history", diff --git a/pages/goods/cashier/index.vue b/pages/goods/cashier/index.vue index 214f9ff6..9302acae 100644 --- a/pages/goods/cashier/index.vue +++ b/pages/goods/cashier/index.vue @@ -15,8 +15,7 @@ 支付方式 - + @@ -40,6 +39,7 @@ import CountDown from "@/components/countDown"; import numberScroll from '@/components/numberScroll.vue' import * as PayOrderApi from '@/api/pay/order.js'; + import * as PayChannelApi from '@/api/pay/channel.js'; export default { components: { CountDown, @@ -52,31 +52,32 @@ payPrice: 0, // 支付金额 invalidTime: 0, // 过期时间 cartArr: [{ // 支付方式 - name: '微信支付', + name: '微信支付', // 微信公众号 icon: "icon-weixin2", title: '使用微信快捷支付', - status: 1, - channelCode: "wx_pub" // TODO 芋艿:未来要考虑各种端 + channelCode: "wx_pub" + }, { + name: '微信支付', // 微信小程序 + icon: "icon-weixin2", + title: '使用微信快捷支付', + channelCode: "wx_lite" }, { name: '支付宝支付', icon: "icon-zhifubao", title: '使用支付宝支付', - status: 1, channelCode: "alipay_wap" }, { name: '余额支付', icon: "icon-yuezhifu", title: '可用余额', - status: 1, }, // 如下是各种示例接入的示例,默认关闭 { - name: '支付宝支付(PC)', + name: '支付宝支付(PC)', // PC 支付 icon: "icon-zhifubao", value: 'alipay_pc', title: '使用支付宝支付', - status: 1, channelCode: "alipay_pc" }], channelCode: '', // 选中的支付渠道 @@ -107,6 +108,7 @@ title: '加载订单中' }); PayOrderApi.getOrder(this.orderId).then(res => { + // 如果已支付、或者已关闭,则直接跳转 if (res.data.status === 10) { uni.showToast({ title: '支付成功' @@ -123,24 +125,13 @@ return; } - console.log(res) + // 设置属性 this.payPrice = res.data.price this.invalidTime = res.data.expireTime - // 微信支付是否开启 TODO 芋艿:强制开启 - // this.cartArr[0].status = res.data.wechat_pay_status || 0 - this.cartArr[0].status = res.data.wechat_pay_status || 1 - // 支付宝是否开启 TODO 芋艿:强制开启 - // this.cartArr[1].status = res.data.ali_pay_status || 0; - this.cartArr[1].status = res.data.ali_pay_status || 1; - //#ifdef MP - this.cartArr[1].status = false; - //#endif - // 余额支付是否开启 - // that.cartArr[2].title = '可用余额:' + res.data.userInfo.now_money; - this.cartArr[2].number = res.data.now_money; - this.cartArr[2].status = res.data.yue_pay_status - this.channelCode = this.cartArr[0].channelCode; + // 移除多余的支付渠道; + this.removeDisableChannel(res.data.appId); + uni.hideLoading(); }).catch(err => { uni.hideLoading(); @@ -192,59 +183,7 @@ case 'WECHAT_PAY': that.toPay = true; // #ifdef MP - let mp_pay_name = '' - if (uni.requestOrderPayment) { - mp_pay_name = 'requestOrderPayment' - } else { - mp_pay_name = 'requestPayment' - } - uni[mp_pay_name]({ - timeStamp: jsConfig.timestamp, - nonceStr: jsConfig.nonceStr, - package: jsConfig.package, - signType: jsConfig.signType, - paySign: jsConfig.paySign, - success: function(res) { - uni.hideLoading(); - if (that.BargainId || that.combinationId || that.pinkId || - that - .seckillId || that.discountId) - return that.$util.Tips({ - title: that.$t(`支付成功`), - icon: 'success' - }, { - tab: 4, - url: goPages - }); - return that.$util.Tips({ - title: '支付成功', - icon: 'success' - }, { - tab: 5, - url: goPages - }); - }, - fail: function(e) { - uni.hideLoading(); - return that.$util.Tips({ - title: '取消支付' - }, { - tab: 5, - url: goPages + '&status=2' - }); - }, - complete: function(e) { - uni.hideLoading(); - //关闭当前页面跳转至订单状态 - if (res.errMsg == 'requestPayment:cancel' || e.errMsg == 'requestOrderPayment:cancel') return that.$util - .Tips({ - title: '取消支付' - }, { - tab: 5, - url: goPages + '&status=2' - }); - }, - }) + // 已删除,已经实现 // #endif // #ifdef H5 // 已删除,已经实现; @@ -395,6 +334,10 @@ this.handleSubmitOrderResultForWxPub(displayContent) return; } + if (this.channelCode === 'wx_lite') { + this.handleSubmitOrderResultForWxLite(displayContent) + return; + } } }, /** @@ -436,7 +379,76 @@ }) }) }, + handleSubmitOrderResultForWxLite(displayContent) { + const payConfig = JSON.parse(displayContent); + const that = this; + console.log(payConfig, '=================') + console.log(payConfig.timeStamp, '=================') + uni.requestPayment({ + timeStamp: payConfig.timeStamp, + nonceStr: payConfig.nonceStr, + package: payConfig.packageValue, + signType: payConfig.signType, + paySign: payConfig.paySign, + success: function(res) { + uni.hideLoading(); + return that.$util.Tips({ + title: '支付成功', + icon: 'success' + }, { + tab: 5, + url: goPages + }); + }, + fail: function(e) { + uni.hideLoading(); + return that.$util.Tips({ + title: '取消支付' + }, { + tab: 5, + url: goPages + '&status=2' + }); + }, + complete: function(e) { + uni.hideLoading(); + // 关闭当前页面跳转至订单状态 + if (e.errMsg === 'requestPayment:cancel' + || e.errMsg === 'requestPayment:fail cancel') { + return that.$util.Tips({ + title: '取消支付' + }); + } + return that.$util.Tips({ + title: e.errMsg, + icon: 'error' + }); + }, + }) + }, + /** + * 移除被禁用的支付渠道 + */ + removeDisableChannel(appId) { + // 1.1 如果不在小程序里,则移除微信小程序支付 + // #ifndef MP + this.cartArr = this.cartArr.filter(item => item.channelCode !== 'wx_lite') + // #endif + // 1.2 如果不是公众号环境,则移除微信公众号支付 + if (!this.$wechat.isWeixin()) { + this.cartArr = this.cartArr.filter(item => item.channelCode !== 'wx_pub') + } + + // 2. 读取配置,移除被禁用的支付渠道 + PayChannelApi.getEnableChannelCodeList(appId).then(res => { + this.cartArr = this.cartArr.filter(item => res.data.includes(item.channelCode)); + + // 默认选中第一个 + if (this.cartArr.length > 0) { + this.payType(this.cartArr[0].channelCode) + } + }) + }, /** * 设置支付方式 */