41
41
</div >
42
42
</el-card >
43
43
44
- <!-- 展示形式:二维码 -->
44
+ <!-- 展示形式:二维码 URL -->
45
45
<el-dialog :title =" qrCode.title" :visible.sync =" qrCode.visible" width =" 350px" append-to-body
46
46
:close-on-press-escape =" false" >
47
47
<qrcode-vue :value =" qrCode.url" size =" 310" level =" H" />
48
48
</el-dialog >
49
49
50
- <!-- 展示形式:iframe -->
50
+ <!-- 展示形式:IFrame -->
51
51
<el-dialog :title =" iframe.title" :visible.sync =" iframe.visible" width =" 800px" height =" 800px" append-to-body
52
52
:close-on-press-escape =" false" >
53
53
<iframe :src =" iframe.url" width =" 100%" />
54
54
</el-dialog >
55
55
56
- <!-- 阿里支付 -->
57
- <div ref =" alipayWap " v-html =" alipayHtml .value" />
56
+ <!-- 展示形式: -->
57
+ <div ref =" formRef " v-html =" form .value" />
58
58
59
59
</div >
60
60
</template >
@@ -88,6 +88,7 @@ export default {
88
88
mock: require (" @/assets/images/pay/icon/mock.svg" ),
89
89
},
90
90
submitLoading: false , // 提交支付的 loading
91
+ interval: undefined , // 定时任务,轮询是否完成支付
91
92
qrCode: { // 展示形式:二维码
92
93
url: ' ' ,
93
94
title: ' ' ,
@@ -98,8 +99,9 @@ export default {
98
99
title: ' ' ,
99
100
visible: false
100
101
},
101
- interval: undefined , // 定时任务,轮询是否完成支付
102
- alipayHtml: ' ' // 阿里支付的 HTML
102
+ form: { // 展示形式:form
103
+ html: ' ' ,
104
+ },
103
105
};
104
106
},
105
107
created () {
@@ -164,6 +166,8 @@ export default {
164
166
this .displayIFrame (channelCode, data)
165
167
} else if (data .displayMode === ' url' ) {
166
168
this .displayUrl (channelCode, data)
169
+ } else if (data .displayMode === ' form' ) {
170
+ this .displayForm (channelCode, data)
167
171
}
168
172
// 不同的支付,调用不同的策略
169
173
// if (channelCode === PayChannelEnum.ALIPAY_QR.code) {
@@ -203,7 +207,7 @@ export default {
203
207
// 4:订单码-可定义宽度的嵌入式二维码,商户可根据需要设定二维码的大小
204
208
// return {
205
209
// "channelExtras": {
206
- // "qr_pay_mode": "2 "
210
+ // "qr_pay_mode": "4 "
207
211
// }
208
212
// }
209
213
// 情况【跳转模式】:跳转模式下,用户的扫码界面是由支付宝生成的,不在商户的域名下。支持传入的枚举值有
@@ -212,6 +216,10 @@ export default {
212
216
" qr_pay_mode" : " 2"
213
217
}
214
218
}
219
+ // 情况【表单模式】:直接提交当前页面到支付宝
220
+ // return {
221
+ // displayMode: PayDisplayModeEnum.FORM.mode
222
+ // }
215
223
}
216
224
return {}
217
225
},
@@ -224,33 +232,34 @@ export default {
224
232
}
225
233
this .submitLoading = false
226
234
},
235
+ /** 提交支付后,IFrame 内置 URL 的展示形式 */
227
236
displayIFrame (channelCode , data ) {
228
- // this.iframe = {
229
- // title: '支付窗口',
230
- // url: data.displayContent,
231
- // visible: true
232
- // }
233
- window .open (data .displayContent )
237
+ // TODO 芋艿:目前有点奇怪,支付宝总是会显示“支付环境存在风险”
238
+ this .iframe = {
239
+ title: ' 支付窗口' ,
240
+ url: data .displayContent ,
241
+ visible: true
242
+ }
243
+ this .submitLoading = false
234
244
},
235
245
/** 提交支付后,URL 的展示形式 */
236
246
displayUrl (channelCode , data ) {
237
247
window .open (data .displayContent )
238
248
this .submitLoading = false
239
249
},
240
- /** 提交支付后(支付宝 PC 网站支付) */
241
- submitAfterAlipayPc ( invokeResponse ) {
250
+ /** 提交支付后,Form 的展示形式 */
251
+ displayForm ( channelCode , data ) {
242
252
// 渲染支付页面
243
- this .alipayHtml = {
244
- value: invokeResponse .body ,
245
- visible: true
253
+ this .form = {
254
+ value: data .displayContent
246
255
}
247
256
// 防抖避免重复支付
248
257
this .$nextTick (() => {
249
258
// 提交支付表单
250
- // this.$refs.alipayWap .children[0].submit();
251
- // setTimeout(() => {
252
- // this.submitLoading = false
253
- // }, 1000);
259
+ this .$refs .formRef .children [0 ].submit ();
260
+ setTimeout (() => {
261
+ this .submitLoading = false
262
+ }, 1000 );
254
263
});
255
264
},
256
265
/** 轮询查询任务 */
0 commit comments