mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2024-11-23 07:41:53 +08:00
pay: 接入支付宝 PC 支付的表单
This commit is contained in:
parent
b34801f303
commit
ce8571e313
@ -69,10 +69,6 @@ public class AlipayPcPayClient extends AbstractAlipayClient {
|
|||||||
log.error("[unifiedOrder][request({}) 发起支付失败]", JsonUtils.toJsonString(reqDTO), e);
|
log.error("[unifiedOrder][request({}) 发起支付失败]", JsonUtils.toJsonString(reqDTO), e);
|
||||||
return PayCommonResult.build(e.getErrCode(), e.getErrMsg(), null, codeMapping);
|
return PayCommonResult.build(e.getErrCode(), e.getErrMsg(), null, codeMapping);
|
||||||
}
|
}
|
||||||
// 1. form
|
|
||||||
// 2. url
|
|
||||||
// 3. code
|
|
||||||
// 4. code url
|
|
||||||
|
|
||||||
// 2.2 处理结果
|
// 2.2 处理结果
|
||||||
System.out.println(response.getBody());
|
System.out.println(response.getBody());
|
||||||
|
@ -160,6 +160,9 @@ export const PayDisplayModeEnum = {
|
|||||||
IFRAME: {
|
IFRAME: {
|
||||||
"mode": "iframe",
|
"mode": "iframe",
|
||||||
},
|
},
|
||||||
|
FORM: {
|
||||||
|
"mode": "form"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -41,20 +41,20 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<!-- 展示形式:二维码 -->
|
<!-- 展示形式:二维码 URL -->
|
||||||
<el-dialog :title="qrCode.title" :visible.sync="qrCode.visible" width="350px" append-to-body
|
<el-dialog :title="qrCode.title" :visible.sync="qrCode.visible" width="350px" append-to-body
|
||||||
:close-on-press-escape="false">
|
:close-on-press-escape="false">
|
||||||
<qrcode-vue :value="qrCode.url" size="310" level="H" />
|
<qrcode-vue :value="qrCode.url" size="310" level="H" />
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<!-- 展示形式:iframe -->
|
<!-- 展示形式:IFrame -->
|
||||||
<el-dialog :title="iframe.title" :visible.sync="iframe.visible" width="800px" height="800px" append-to-body
|
<el-dialog :title="iframe.title" :visible.sync="iframe.visible" width="800px" height="800px" append-to-body
|
||||||
:close-on-press-escape="false">
|
:close-on-press-escape="false">
|
||||||
<iframe :src="iframe.url" width="100%" />
|
<iframe :src="iframe.url" width="100%" />
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<!-- 阿里支付 -->
|
<!-- 展示形式: -->
|
||||||
<div ref="alipayWap" v-html="alipayHtml.value" />
|
<div ref="formRef" v-html="form.value" />
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -88,6 +88,7 @@ export default {
|
|||||||
mock: require("@/assets/images/pay/icon/mock.svg"),
|
mock: require("@/assets/images/pay/icon/mock.svg"),
|
||||||
},
|
},
|
||||||
submitLoading: false, // 提交支付的 loading
|
submitLoading: false, // 提交支付的 loading
|
||||||
|
interval: undefined, // 定时任务,轮询是否完成支付
|
||||||
qrCode: { // 展示形式:二维码
|
qrCode: { // 展示形式:二维码
|
||||||
url: '',
|
url: '',
|
||||||
title: '',
|
title: '',
|
||||||
@ -98,8 +99,9 @@ export default {
|
|||||||
title: '',
|
title: '',
|
||||||
visible: false
|
visible: false
|
||||||
},
|
},
|
||||||
interval: undefined, // 定时任务,轮询是否完成支付
|
form: { // 展示形式:form
|
||||||
alipayHtml: '' // 阿里支付的 HTML
|
html: '',
|
||||||
|
},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
@ -164,6 +166,8 @@ export default {
|
|||||||
this.displayIFrame(channelCode, data)
|
this.displayIFrame(channelCode, data)
|
||||||
} else if (data.displayMode === 'url') {
|
} else if (data.displayMode === 'url') {
|
||||||
this.displayUrl(channelCode, data)
|
this.displayUrl(channelCode, data)
|
||||||
|
} else if (data.displayMode === 'form') {
|
||||||
|
this.displayForm(channelCode, data)
|
||||||
}
|
}
|
||||||
// 不同的支付,调用不同的策略
|
// 不同的支付,调用不同的策略
|
||||||
// if (channelCode === PayChannelEnum.ALIPAY_QR.code) {
|
// if (channelCode === PayChannelEnum.ALIPAY_QR.code) {
|
||||||
@ -203,7 +207,7 @@ export default {
|
|||||||
// 4:订单码-可定义宽度的嵌入式二维码,商户可根据需要设定二维码的大小
|
// 4:订单码-可定义宽度的嵌入式二维码,商户可根据需要设定二维码的大小
|
||||||
// return {
|
// return {
|
||||||
// "channelExtras": {
|
// "channelExtras": {
|
||||||
// "qr_pay_mode": "2"
|
// "qr_pay_mode": "4"
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// 情况【跳转模式】:跳转模式下,用户的扫码界面是由支付宝生成的,不在商户的域名下。支持传入的枚举值有
|
// 情况【跳转模式】:跳转模式下,用户的扫码界面是由支付宝生成的,不在商户的域名下。支持传入的枚举值有
|
||||||
@ -212,6 +216,10 @@ export default {
|
|||||||
"qr_pay_mode": "2"
|
"qr_pay_mode": "2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 情况【表单模式】:直接提交当前页面到支付宝
|
||||||
|
// return {
|
||||||
|
// displayMode: PayDisplayModeEnum.FORM.mode
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
return {}
|
return {}
|
||||||
},
|
},
|
||||||
@ -224,33 +232,34 @@ export default {
|
|||||||
}
|
}
|
||||||
this.submitLoading = false
|
this.submitLoading = false
|
||||||
},
|
},
|
||||||
|
/** 提交支付后,IFrame 内置 URL 的展示形式 */
|
||||||
displayIFrame(channelCode, data) {
|
displayIFrame(channelCode, data) {
|
||||||
// this.iframe = {
|
// TODO 芋艿:目前有点奇怪,支付宝总是会显示“支付环境存在风险”
|
||||||
// title: '支付窗口',
|
this.iframe = {
|
||||||
// url: data.displayContent,
|
title: '支付窗口',
|
||||||
// visible: true
|
url: data.displayContent,
|
||||||
// }
|
visible: true
|
||||||
window.open(data.displayContent)
|
}
|
||||||
|
this.submitLoading = false
|
||||||
},
|
},
|
||||||
/** 提交支付后,URL 的展示形式 */
|
/** 提交支付后,URL 的展示形式 */
|
||||||
displayUrl(channelCode, data) {
|
displayUrl(channelCode, data) {
|
||||||
window.open(data.displayContent)
|
window.open(data.displayContent)
|
||||||
this.submitLoading = false
|
this.submitLoading = false
|
||||||
},
|
},
|
||||||
/** 提交支付后(支付宝 PC 网站支付) */
|
/** 提交支付后,Form 的展示形式 */
|
||||||
submitAfterAlipayPc(invokeResponse) {
|
displayForm(channelCode, data) {
|
||||||
// 渲染支付页面
|
// 渲染支付页面
|
||||||
this.alipayHtml = {
|
this.form = {
|
||||||
value: invokeResponse.body,
|
value: data.displayContent
|
||||||
visible: true
|
|
||||||
}
|
}
|
||||||
// 防抖避免重复支付
|
// 防抖避免重复支付
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
// 提交支付表单
|
// 提交支付表单
|
||||||
// this.$refs.alipayWap.children[0].submit();
|
this.$refs.formRef.children[0].submit();
|
||||||
// setTimeout(() => {
|
setTimeout(() => {
|
||||||
// this.submitLoading = false
|
this.submitLoading = false
|
||||||
// }, 1000);
|
}, 1000);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
/** 轮询查询任务 */
|
/** 轮询查询任务 */
|
||||||
|
Loading…
Reference in New Issue
Block a user