From a266a28662cc837f89bbc83f9199767ed946b9d3 Mon Sep 17 00:00:00 2001 From: DaxPay Dev Date: Tue, 7 Jul 2026 21:04:26 +0800 Subject: [PATCH] =?UTF-8?q?feat(vbill):=20=E9=9A=8F=E8=A1=8C=E4=BB=98?= =?UTF-8?q?=E9=80=9A=E9=81=93=E7=AE=A1=E7=90=86=E7=AB=AF(=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=95=86=E9=85=8D=E7=BD=AE/=E5=95=86=E6=88=B7?= =?UTF-8?q?=E8=BF=9B=E4=BB=B6=20API=E4=B8=8E=E8=A7=86=E5=9B=BE=20+=20i18n)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../channel/vbill/channel-merchant.api.ts | 48 +++++ .../src/api/payment/channel/vbill/index.ts | 3 + .../payment/channel/vbill/pay-config.api.ts | 38 ++++ .../langs/en-US/payment/channel/vbillIsv.json | 29 +++ .../langs/zh-CN/payment/channel/vbillIsv.json | 29 +++ .../vbill/config/VbillIsvConfigEdit.vue | 168 ++++++++++++++++++ .../vbill/config/VbillMchCreateConfig.vue | 168 ++++++++++++++++++ .../channel/vbill/manage/VbillManage.vue | 114 ++++++++++++ .../vbill/manage/mch/VbillMchManage.vue | 164 +++++++++++++++++ 9 files changed, 761 insertions(+) create mode 100644 apps/daxpay-admin/src/api/payment/channel/vbill/channel-merchant.api.ts create mode 100644 apps/daxpay-admin/src/api/payment/channel/vbill/index.ts create mode 100644 apps/daxpay-admin/src/api/payment/channel/vbill/pay-config.api.ts create mode 100644 apps/daxpay-admin/src/locales/langs/en-US/payment/channel/vbillIsv.json create mode 100644 apps/daxpay-admin/src/locales/langs/zh-CN/payment/channel/vbillIsv.json create mode 100644 apps/daxpay-admin/src/views/payment/channel/vbill/config/VbillIsvConfigEdit.vue create mode 100644 apps/daxpay-admin/src/views/payment/channel/vbill/config/VbillMchCreateConfig.vue create mode 100644 apps/daxpay-admin/src/views/payment/channel/vbill/manage/VbillManage.vue create mode 100644 apps/daxpay-admin/src/views/payment/channel/vbill/manage/mch/VbillMchManage.vue diff --git a/apps/daxpay-admin/src/api/payment/channel/vbill/channel-merchant.api.ts b/apps/daxpay-admin/src/api/payment/channel/vbill/channel-merchant.api.ts new file mode 100644 index 000000000..ee6a09a5b --- /dev/null +++ b/apps/daxpay-admin/src/api/payment/channel/vbill/channel-merchant.api.ts @@ -0,0 +1,48 @@ +import type { Result } from '#/types/web'; + +import { defHttp } from '#/api/request'; + +/** + * 随行付(天阙科技)通道商户绑定 API + */ +export const VbillChannelMerchantApi = { + /** + * 根据通道商户号查询随行付通道商户配置 + */ + findByChannelMchNo(channelMchNo: string): Promise> { + return defHttp.get({ + url: '/admin/vbill/isv-channel-merchant/find-by-channel-mch-no', + params: { channelMchNo }, + }); + }, + /** + * 创建随行付通道商户 + */ + create(data: VbillIsvChannelMerchantCreateParam): Promise> { + return defHttp.post({ url: '/admin/vbill/isv-channel-merchant/create', data }); + }, +}; + +/** 随行付通道商户绑定 */ +export interface VbillIsvChannelMerchant { + /** 主键 */ + id?: string; + /** 通道商户号 */ + channelMchNo?: string; + /** 所属支付产品 */ + product?: string; + /** 天阙商户号(mno) */ + vbillMchNo?: string; +} + +/** 随行付通道商户创建参数 */ +export interface VbillIsvChannelMerchantCreateParam { + /** 商户号 */ + mchNo: string; + /** 通道商户名称 */ + channelMerchantName: string; + /** 所属支付产品 */ + product: string; + /** 天阙商户号(mno) */ + vbillMchNo: string; +} diff --git a/apps/daxpay-admin/src/api/payment/channel/vbill/index.ts b/apps/daxpay-admin/src/api/payment/channel/vbill/index.ts new file mode 100644 index 000000000..c2a132e9a --- /dev/null +++ b/apps/daxpay-admin/src/api/payment/channel/vbill/index.ts @@ -0,0 +1,3 @@ +/** 随行付(天阙科技)渠道 barrel */ +export * from './channel-merchant.api'; +export * from './pay-config.api'; diff --git a/apps/daxpay-admin/src/api/payment/channel/vbill/pay-config.api.ts b/apps/daxpay-admin/src/api/payment/channel/vbill/pay-config.api.ts new file mode 100644 index 000000000..1e0f2ae0c --- /dev/null +++ b/apps/daxpay-admin/src/api/payment/channel/vbill/pay-config.api.ts @@ -0,0 +1,38 @@ +import type { Result } from '#/types/web'; + +import { defHttp } from '#/api/request'; + +/** + * 随行付(天阙科技)服务商密钥配置 API + */ +export const VbillPayConfigApi = { + /** + * 查询随行付服务商密钥配置 + * 平台为唯一服务商,密钥全局唯一 + */ + findConfig(product: string): Promise> { + return defHttp.get({ url: '/admin/vbill/isv-key-config/find-config', params: { product } }); + }, + /** + * 保存随行付服务商密钥配置 + */ + saveConfig(data: VbillIsvKeyConfig): Promise> { + return defHttp.post({ url: '/admin/vbill/isv-key-config/save-config', data }); + }, +}; + +/** 随行付服务商密钥配置 */ +export interface VbillIsvKeyConfig { + /** 主键 */ + id?: string; + /** 产品编码 */ + product?: string; + /** 天阙合作机构ID(orgId) */ + orgId?: string; + /** 天阙RSA公钥(X509 Base64, 回调验签用) */ + publicKey?: string; + /** 商户RSA私钥(PKCS8 Base64, SHA1withRSA签名) */ + privateKey?: string; + /** 是否沙箱环境 */ + sandbox?: boolean; +} diff --git a/apps/daxpay-admin/src/locales/langs/en-US/payment/channel/vbillIsv.json b/apps/daxpay-admin/src/locales/langs/en-US/payment/channel/vbillIsv.json new file mode 100644 index 000000000..35c27072d --- /dev/null +++ b/apps/daxpay-admin/src/locales/langs/en-US/payment/channel/vbillIsv.json @@ -0,0 +1,29 @@ +{ + "title": "VBill ISV Configuration", + "groupConfig": "Configuration", + "configTitle": "VBill ISV Key Configuration", + "manageTitle": "VBill Merchant Management", + "basicConfig": "Basic Config", + "keyConfig": "Key Config", + "cardMchKey": "ISV Key", + "cardMchKeyDesc": "Configure VBill org ID, RSA public/private keys", + "orgId": "Tianque Org ID", + "orgIdPlaceholder": "Please enter Tianque partner org ID (orgId)", + "publicKey": "Tianque RSA Public Key", + "publicKeyTooltip": "Tianque RSA public key (X509 Base64), for response/callback signature verification", + "privateKey": "Merchant RSA Private Key", + "privateKeyTooltip": "Merchant RSA private key (PKCS8 Base64), SHA1withRSA signing", + "sandbox": "Sandbox", + "groupMchConfig": "Merchant Config", + "cardMchConfig": "Merchant Config", + "cardMchConfigDesc": "View Tianque merchant number", + "mchConfigTitle": "Merchant Config", + "vbillMchNo": "Tianque Merchant No", + "vbillMchNoPlaceholder": "Please enter Tianque merchant No (mno)", + "validation": { + "orgId": "Please enter Tianque org ID", + "publicKey": "Please enter Tianque RSA public key", + "privateKey": "Please enter merchant RSA private key", + "vbillMchNo": "Please enter Tianque merchant No" + } +} diff --git a/apps/daxpay-admin/src/locales/langs/zh-CN/payment/channel/vbillIsv.json b/apps/daxpay-admin/src/locales/langs/zh-CN/payment/channel/vbillIsv.json new file mode 100644 index 000000000..6bd3e2897 --- /dev/null +++ b/apps/daxpay-admin/src/locales/langs/zh-CN/payment/channel/vbillIsv.json @@ -0,0 +1,29 @@ +{ + "title": "随行付服务商配置", + "groupConfig": "配置管理", + "configTitle": "随行付服务商密钥配置", + "manageTitle": "随行付商户管理", + "basicConfig": "基础配置", + "keyConfig": "密钥配置", + "cardMchKey": "服务商密钥", + "cardMchKeyDesc": "配置随行付天阙机构ID、RSA公私钥", + "orgId": "天阙机构ID", + "orgIdPlaceholder": "请输入天阙合作机构ID(orgId)", + "publicKey": "天阙RSA公钥", + "publicKeyTooltip": "天阙平台RSA公钥(X509 Base64), 用于响应/回调验签", + "privateKey": "商户RSA私钥", + "privateKeyTooltip": "商户RSA私钥(PKCS8 Base64), SHA1withRSA 签名", + "sandbox": "沙箱环境", + "groupMchConfig": "商户配置", + "cardMchConfig": "商户配置", + "cardMchConfigDesc": "查看天阙商户号", + "mchConfigTitle": "商户配置", + "vbillMchNo": "天阙商户号", + "vbillMchNoPlaceholder": "请输入天阙商户号(mno)", + "validation": { + "orgId": "请输入天阙机构ID", + "publicKey": "请输入天阙RSA公钥", + "privateKey": "请输入商户RSA私钥", + "vbillMchNo": "请输入天阙商户号" + } +} diff --git a/apps/daxpay-admin/src/views/payment/channel/vbill/config/VbillIsvConfigEdit.vue b/apps/daxpay-admin/src/views/payment/channel/vbill/config/VbillIsvConfigEdit.vue new file mode 100644 index 000000000..a9719286e --- /dev/null +++ b/apps/daxpay-admin/src/views/payment/channel/vbill/config/VbillIsvConfigEdit.vue @@ -0,0 +1,168 @@ + + + diff --git a/apps/daxpay-admin/src/views/payment/channel/vbill/config/VbillMchCreateConfig.vue b/apps/daxpay-admin/src/views/payment/channel/vbill/config/VbillMchCreateConfig.vue new file mode 100644 index 000000000..d528de496 --- /dev/null +++ b/apps/daxpay-admin/src/views/payment/channel/vbill/config/VbillMchCreateConfig.vue @@ -0,0 +1,168 @@ + + + diff --git a/apps/daxpay-admin/src/views/payment/channel/vbill/manage/VbillManage.vue b/apps/daxpay-admin/src/views/payment/channel/vbill/manage/VbillManage.vue new file mode 100644 index 000000000..74ab51762 --- /dev/null +++ b/apps/daxpay-admin/src/views/payment/channel/vbill/manage/VbillManage.vue @@ -0,0 +1,114 @@ + + + + + diff --git a/apps/daxpay-admin/src/views/payment/channel/vbill/manage/mch/VbillMchManage.vue b/apps/daxpay-admin/src/views/payment/channel/vbill/manage/mch/VbillMchManage.vue new file mode 100644 index 000000000..8af4a98c9 --- /dev/null +++ b/apps/daxpay-admin/src/views/payment/channel/vbill/manage/mch/VbillMchManage.vue @@ -0,0 +1,164 @@ + + + + +