Skip to content

Commit a528a1d

Browse files
committed
mall + pay:
1. 后台的收银台,接入微信扫码支付
1 parent 2d5d388 commit a528a1d

File tree

3 files changed

+36
-2
lines changed

3 files changed

+36
-2
lines changed

src/assets/images/pay/icon/wx_bar.svg

Lines changed: 1 addition & 0 deletions
Loading

src/utils/constants.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,10 @@ export const PayChannelEnum = {
132132
"code": "wx_app",
133133
"name": "微信 APP 支付"
134134
},
135+
WX_BAR: {
136+
"code": "wx_bar",
137+
"name": "微信条码支付"
138+
},
135139
ALIPAY_PC: {
136140
"code": "alipay_pc",
137141
"name": "支付宝 PC 网站支付"

src/views/pay/cashier/index.vue

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
<!-- 微信支付 -->
2727
<el-descriptions title="选择微信支付" style="margin-top: 20px;" />
2828
<div class="pay-channel-container">
29-
<div class="box" v-for="channel in channels" v-if="channel.code.indexOf('wx_') === 0" :key="channel.code">
29+
<div class="box" v-for="channel in channels" v-if="channel.code.indexOf('wx_') === 0" :key="channel.code" @click="submit(channel.code)">
3030
<img :src="channel.icon">
3131
<div class="title">{{ channel.name }}</div>
3232
</div>
@@ -125,6 +125,10 @@ export default {
125125
name: '微信 App 支付',
126126
icon: require("@/assets/images/pay/icon/wx_app.svg"),
127127
code: "wx_app"
128+
}, {
129+
name: '微信条码支付',
130+
icon: require("@/assets/images/pay/icon/wx_bar.svg"),
131+
code: "wx_bar"
128132
}, {
129133
name: '模拟支付',
130134
icon: require("@/assets/images/pay/icon/mock.svg"),
@@ -195,6 +199,15 @@ export default {
195199
}
196200
return;
197201
}
202+
if (channelCode === PayChannelEnum.WX_BAR.code) {
203+
this.barCode = {
204+
channelCode: channelCode,
205+
value: '',
206+
title: '“微信”条码支付',
207+
visible: true
208+
}
209+
return;
210+
}
198211
199212
// 默认的提交处理
200213
this.submit0(channelCode)
@@ -207,7 +220,16 @@ export default {
207220
returnUrl: location.href, // 支付成功后,支付渠道跳转回当前页;再由当前页,跳转回 {@link returnUrl} 对应的地址
208221
...this.buildSubmitParam(channelCode)
209222
}).then(response => {
223+
// 直接返回已支付的情况,例如说扫码支付
210224
const data = response.data
225+
if (data.status === PayOrderStatusEnum.SUCCESS.status) {
226+
this.clearQueryInterval();
227+
this.$message.success('支付成功!');
228+
this.goReturnUrl();
229+
return
230+
}
231+
232+
// 展示对应的界面
211233
if (data.displayMode === PayDisplayModeEnum.URL.mode) {
212234
this.displayUrl(channelCode, data)
213235
} else if (data.displayMode === PayDisplayModeEnum.QR_CODE.mode) {
@@ -230,11 +252,18 @@ export default {
230252
}
231253
}
232254
}
255+
// ② 微信 BarCode 支付时,需要传递 authCode 条形码
256+
if (channelCode === PayChannelEnum.WX_BAR.code) {
257+
return {
258+
"channelExtras": {
259+
"authCode": this.barCode.value
260+
}
261+
}
262+
}
233263
return {}
234264
},
235265
/** 提交支付后,URL 的展示形式 */
236266
displayUrl(channelCode, data) {
237-
// window.open(data.displayContent)
238267
location.href = data.displayContent
239268
this.submitLoading = false
240269
},

0 commit comments

Comments
 (0)