From 94f700087d18cdeba3d43bdc4d8145de3152f9e3 Mon Sep 17 00:00:00 2001 From: bootx Date: Fri, 9 Feb 2024 20:41:53 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E7=BB=93=E7=AE=97=E5=8F=B0=E6=BC=94?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/enums/payment/payWayEnum.ts | 14 +- src/router/routes/project.ts | 8 +- src/views/paydemo/cashier/Cashier.api.ts | 38 +++ src/views/paydemo/cashier/Cashier.vue | 299 ++++++++++++++++++ src/views/paydemo/cashier/CashierBarCode.vue | 49 +++ src/views/paydemo/cashier/CashierQrCode.vue | 37 +++ .../paydemo/cashier/imgs/ali/ali_app.svg | 1 + .../paydemo/cashier/imgs/ali/ali_bar.svg | 2 + .../paydemo/cashier/imgs/ali/ali_jsapi.svg | 1 + src/views/paydemo/cashier/imgs/ali/ali_pc.svg | 1 + src/views/paydemo/cashier/imgs/ali/ali_qr.svg | 2 + .../paydemo/cashier/imgs/ali/ali_wap.svg | 1 + .../paydemo/cashier/imgs/qr/auto_bar.svg | 1 + .../paydemo/cashier/imgs/qr/qr_cashier.svg | 1 + .../paydemo/cashier/imgs/wechat/w_pay.png | Bin 0 -> 442 bytes .../paydemo/cashier/imgs/wechat/wx_app.svg | 1 + .../paydemo/cashier/imgs/wechat/wx_bar.svg | 2 + .../paydemo/cashier/imgs/wechat/wx_h5.svg | 1 + .../paydemo/cashier/imgs/wechat/wx_jsapi.svg | 2 + .../paydemo/cashier/imgs/wechat/wx_native.svg | 2 + src/views/paydemo/cashier/style.less | 79 +++++ .../record/callback/PayCallbackRecordInfo.vue | 4 +- 22 files changed, 536 insertions(+), 10 deletions(-) create mode 100644 src/views/paydemo/cashier/Cashier.api.ts create mode 100644 src/views/paydemo/cashier/Cashier.vue create mode 100644 src/views/paydemo/cashier/CashierBarCode.vue create mode 100644 src/views/paydemo/cashier/CashierQrCode.vue create mode 100644 src/views/paydemo/cashier/imgs/ali/ali_app.svg create mode 100644 src/views/paydemo/cashier/imgs/ali/ali_bar.svg create mode 100644 src/views/paydemo/cashier/imgs/ali/ali_jsapi.svg create mode 100644 src/views/paydemo/cashier/imgs/ali/ali_pc.svg create mode 100644 src/views/paydemo/cashier/imgs/ali/ali_qr.svg create mode 100644 src/views/paydemo/cashier/imgs/ali/ali_wap.svg create mode 100644 src/views/paydemo/cashier/imgs/qr/auto_bar.svg create mode 100644 src/views/paydemo/cashier/imgs/qr/qr_cashier.svg create mode 100644 src/views/paydemo/cashier/imgs/wechat/w_pay.png create mode 100644 src/views/paydemo/cashier/imgs/wechat/wx_app.svg create mode 100644 src/views/paydemo/cashier/imgs/wechat/wx_bar.svg create mode 100644 src/views/paydemo/cashier/imgs/wechat/wx_h5.svg create mode 100644 src/views/paydemo/cashier/imgs/wechat/wx_jsapi.svg create mode 100644 src/views/paydemo/cashier/imgs/wechat/wx_native.svg create mode 100644 src/views/paydemo/cashier/style.less diff --git a/src/enums/payment/payWayEnum.ts b/src/enums/payment/payWayEnum.ts index 822ba3bcf..2a4fc23eb 100644 --- a/src/enums/payment/payWayEnum.ts +++ b/src/enums/payment/payWayEnum.ts @@ -2,11 +2,11 @@ * 支付通道 */ export enum payWayEnum { - NORMAL = 'NORMAL', - WAP = 'WAP', - APP = 'APP', - WEB = 'WEB', - QRCODE = 'QRCODE', - BARCODE = 'BARCODE', - JSAPI = 'JSAPI', + NORMAL = 'normal', + WAP = 'wap', + APP = 'app', + WEB = 'web', + QRCODE = 'qrcode', + BARCODE = 'barcode', + JSAPI = 'jsapi', } diff --git a/src/router/routes/project.ts b/src/router/routes/project.ts index 50c097f3e..b9977d5ba 100644 --- a/src/router/routes/project.ts +++ b/src/router/routes/project.ts @@ -38,7 +38,7 @@ export const INTERNAL: AppRouteModule = { * 位于主框架外的页面 */ export const OUTSIDE: AppRouteModule = { - path: '/base/outside', + path: '/outside', name: 'PROJECT_OUTSIDE', meta: { title: '' }, children: [ @@ -51,6 +51,12 @@ export const OUTSIDE: AppRouteModule = { // ignoreAuth: true, // }, // }, + { + path: '/cashier', + name: 'cashier', + component: () => import('/@/views/paydemo/cashier/Cashier.vue'), + meta: { title: '结算台支付演示', ignoreAuth: true }, + }, ], } diff --git a/src/views/paydemo/cashier/Cashier.api.ts b/src/views/paydemo/cashier/Cashier.api.ts new file mode 100644 index 000000000..fc79a29ee --- /dev/null +++ b/src/views/paydemo/cashier/Cashier.api.ts @@ -0,0 +1,38 @@ +import { defHttp } from '/@/utils/http/axios' +import { Result } from '/#/axios' + +/** + * 单独支付 + */ +export function simplePayCashier(obj) { + return defHttp.post>({ + url: '/demo/cashier/simplePayCashier', + method: 'POST', + data: obj, + }) +} + +/** + * 根据业务ID获取支付状态 + */ +export function findStatusByBusinessId(businessNo) { + return defHttp.get>({ + url: '/demo/cashier/queryPayOrderSuccess', + method: 'GET', + params: { businessNo }, + }) +} + +/** + * 发起支付后响应对象 + */ +export interface PayOrderResult { + // 支付ID + paymentId: string + // 是否是异步支付 + asyncPay: boolean + // 异步支付通道 + asyncChannel: string + // 支付参数体(通常用于发起异步支付的参数) + payBody: string +} diff --git a/src/views/paydemo/cashier/Cashier.vue b/src/views/paydemo/cashier/Cashier.vue new file mode 100644 index 000000000..c83f1dade --- /dev/null +++ b/src/views/paydemo/cashier/Cashier.vue @@ -0,0 +1,299 @@ + + + + + diff --git a/src/views/paydemo/cashier/CashierBarCode.vue b/src/views/paydemo/cashier/CashierBarCode.vue new file mode 100644 index 000000000..6da55a9ac --- /dev/null +++ b/src/views/paydemo/cashier/CashierBarCode.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/src/views/paydemo/cashier/CashierQrCode.vue b/src/views/paydemo/cashier/CashierQrCode.vue new file mode 100644 index 000000000..28964da2a --- /dev/null +++ b/src/views/paydemo/cashier/CashierQrCode.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/src/views/paydemo/cashier/imgs/ali/ali_app.svg b/src/views/paydemo/cashier/imgs/ali/ali_app.svg new file mode 100644 index 000000000..ebf11883e --- /dev/null +++ b/src/views/paydemo/cashier/imgs/ali/ali_app.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/views/paydemo/cashier/imgs/ali/ali_bar.svg b/src/views/paydemo/cashier/imgs/ali/ali_bar.svg new file mode 100644 index 000000000..f249f4ac4 --- /dev/null +++ b/src/views/paydemo/cashier/imgs/ali/ali_bar.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/views/paydemo/cashier/imgs/ali/ali_jsapi.svg b/src/views/paydemo/cashier/imgs/ali/ali_jsapi.svg new file mode 100644 index 000000000..271349545 --- /dev/null +++ b/src/views/paydemo/cashier/imgs/ali/ali_jsapi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/views/paydemo/cashier/imgs/ali/ali_pc.svg b/src/views/paydemo/cashier/imgs/ali/ali_pc.svg new file mode 100644 index 000000000..2a7527703 --- /dev/null +++ b/src/views/paydemo/cashier/imgs/ali/ali_pc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/views/paydemo/cashier/imgs/ali/ali_qr.svg b/src/views/paydemo/cashier/imgs/ali/ali_qr.svg new file mode 100644 index 000000000..48337508a --- /dev/null +++ b/src/views/paydemo/cashier/imgs/ali/ali_qr.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/views/paydemo/cashier/imgs/ali/ali_wap.svg b/src/views/paydemo/cashier/imgs/ali/ali_wap.svg new file mode 100644 index 000000000..87075dbb7 --- /dev/null +++ b/src/views/paydemo/cashier/imgs/ali/ali_wap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/views/paydemo/cashier/imgs/qr/auto_bar.svg b/src/views/paydemo/cashier/imgs/qr/auto_bar.svg new file mode 100644 index 000000000..19c9d87d3 --- /dev/null +++ b/src/views/paydemo/cashier/imgs/qr/auto_bar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/views/paydemo/cashier/imgs/qr/qr_cashier.svg b/src/views/paydemo/cashier/imgs/qr/qr_cashier.svg new file mode 100644 index 000000000..40cdcfbc4 --- /dev/null +++ b/src/views/paydemo/cashier/imgs/qr/qr_cashier.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/views/paydemo/cashier/imgs/wechat/w_pay.png b/src/views/paydemo/cashier/imgs/wechat/w_pay.png new file mode 100644 index 0000000000000000000000000000000000000000..d6f8a107f41f63ba97fed546b9e318911bf704f9 GIT binary patch literal 442 zcmV;r0Y(0aP))w%&B+2UlyY#nzW#Z+$6fqB_6xf1>dYD`^%;NI}?`Jd-?2%mq`8)-;H!XcnHV(sLtNXEn%w&2MNxS@Q&l_kWF~ZtEgmSYgm*Q)lI%paydu&?+{Jk^A~lKF zzG;U-b^X2me3f`c%M@I%F;5tVZMM|J= \ No newline at end of file diff --git a/src/views/paydemo/cashier/imgs/wechat/wx_bar.svg b/src/views/paydemo/cashier/imgs/wechat/wx_bar.svg new file mode 100644 index 000000000..2ef5534cd --- /dev/null +++ b/src/views/paydemo/cashier/imgs/wechat/wx_bar.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/views/paydemo/cashier/imgs/wechat/wx_h5.svg b/src/views/paydemo/cashier/imgs/wechat/wx_h5.svg new file mode 100644 index 000000000..b06ec58b0 --- /dev/null +++ b/src/views/paydemo/cashier/imgs/wechat/wx_h5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/views/paydemo/cashier/imgs/wechat/wx_jsapi.svg b/src/views/paydemo/cashier/imgs/wechat/wx_jsapi.svg new file mode 100644 index 000000000..3a6d15b70 --- /dev/null +++ b/src/views/paydemo/cashier/imgs/wechat/wx_jsapi.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/views/paydemo/cashier/imgs/wechat/wx_native.svg b/src/views/paydemo/cashier/imgs/wechat/wx_native.svg new file mode 100644 index 000000000..ad40b2a2c --- /dev/null +++ b/src/views/paydemo/cashier/imgs/wechat/wx_native.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/views/paydemo/cashier/style.less b/src/views/paydemo/cashier/style.less new file mode 100644 index 000000000..45c8e4fe8 --- /dev/null +++ b/src/views/paydemo/cashier/style.less @@ -0,0 +1,79 @@ +.page { + box-sizing: border-box; + min-height: 100%; + padding-bottom: 80px; + margin-top: 81px; +} +.paydemo { + .content { + max-width: 1120px; + margin: 0 auto; + } + .paydemo-type-content { + padding: 20px; + margin-bottom: 20px; + background-color: #FFFFFF; + border-radius: 6px; + p { + margin-bottom: 10px; + text-align: left; + } + } + .colorChange { + color: #1953ff; + border: solid 2px #1953ff; + padding: 12px; + margin-right: 10px; + cursor: pointer; + } + .paydemoType { + padding: 12px; + border: solid 2px #e2e2e2; + margin-right: 10px; + cursor: pointer; + } + .paydemo-type-img { + width: 40px; + height: 40px; + vertical-align: center; + } + .paydemo-type-name { + font-size: 16px; + margin-bottom: 12px; + display: flex; + align-items: center; + } + .paydemo-type-body { + display: flex; + flex-direction: row; + align-items: center; + margin-bottom: 20px; + } + .paydemo-type-h5 { + padding: 12px; + border: solid 2px #e2e2e2; + margin-right: 10px; + cursor: pointer; + font-size: 12px; + } + .codeImg_wx_h5 { + position: absolute; + z-index: 1001; + display: flex; + flex-direction: column; + align-items: center; + background-color: #ffffff; + width: 160px; + } + .paydemo-form-item { + height: 38px; + margin-bottom: 5px; + display: flex; + flex-direction: row; + align-items: center; + } +} +img { + border: 0; + vertical-align: middle; +} diff --git a/src/views/payment/record/callback/PayCallbackRecordInfo.vue b/src/views/payment/record/callback/PayCallbackRecordInfo.vue index fd415299e..9605a7ca4 100644 --- a/src/views/payment/record/callback/PayCallbackRecordInfo.vue +++ b/src/views/payment/record/callback/PayCallbackRecordInfo.vue @@ -13,13 +13,13 @@ {{ form.orderId }} - + {{ form.gatewayOrderNo }} {{ dictConvert('PayChannel', form.channel) }} - + {{ dictConvert('PaymentType', form.callbackType) }}