From 83bdfc5c1b3aea8822ea3c355ba2b142fc381f7c Mon Sep 17 00:00:00 2001 From: bootx Date: Sat, 13 Jun 2026 18:05:18 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E4=BB=98=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=8D=A1=E7=89=87=E9=A1=B5=20+=20API=20+=20i?= =?UTF-8?q?18n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/api/payment/isvPayConfig.api.ts | 42 +++ .../src/api/payment/payProductConfig.api.ts | 56 ++++ .../langs/en-US/payment/constant/product.json | 10 + .../langs/zh-CN/payment/constant/product.json | 10 + .../payment/config/product/ProductConfig.vue | 244 ++++++++++++++++++ 5 files changed, 362 insertions(+) create mode 100644 apps/daxpay-admin/src/api/payment/isvPayConfig.api.ts create mode 100644 apps/daxpay-admin/src/api/payment/payProductConfig.api.ts create mode 100644 apps/daxpay-admin/src/views/payment/config/product/ProductConfig.vue diff --git a/apps/daxpay-admin/src/api/payment/isvPayConfig.api.ts b/apps/daxpay-admin/src/api/payment/isvPayConfig.api.ts new file mode 100644 index 000000000..0b844d63d --- /dev/null +++ b/apps/daxpay-admin/src/api/payment/isvPayConfig.api.ts @@ -0,0 +1,42 @@ +import type { BaseEntity, Result } from '#/types/web'; + +import { defHttp } from '#/api/request'; + +/** + * 服务商产品支付配置 API + * 仅为类型占位,实际功能由 payProductConfig.api.ts 提供 + */ +export const IsvProductPayConfigApi = { + findProductsByIsvNo(_isvNo: string): Promise> { + return Promise.resolve({ code: 0, data: [], msg: 'ok' } as any); + }, + switchEnv(_isvNo: string, _product: string, _sandbox: boolean): Promise> { + return Promise.resolve({ code: 0, data: undefined, msg: 'ok' } as any); + }, +}; + +/** 产品配置列表项 */ +export interface IsvProductPayConfigResult extends BaseEntity { + /** 产品编码 */ + product?: string; + /** 产品名称 */ + name?: string; + /** 通道编码 */ + channel?: string; + /** 通道名称 */ + channelName?: string; + /** 服务商号 */ + isvNo?: string; + /** 是否支持沙箱环境 */ + sandboxSupport?: boolean; + /** 生产环境是否已配置 */ + prodConfigured?: boolean; + /** 生产环境是否启用 */ + prodEnable?: boolean; + /** 沙箱环境是否已配置 */ + sandboxConfigured?: boolean; + /** 沙箱环境是否启用 */ + sandboxEnable?: boolean; + /** 生效环境: prod/sandbox/none */ + activeEnv?: string; +} diff --git a/apps/daxpay-admin/src/api/payment/payProductConfig.api.ts b/apps/daxpay-admin/src/api/payment/payProductConfig.api.ts new file mode 100644 index 000000000..2b9e99829 --- /dev/null +++ b/apps/daxpay-admin/src/api/payment/payProductConfig.api.ts @@ -0,0 +1,56 @@ +import type { BaseEntity, Result } from '#/types/web'; + +import { defHttp } from '#/api/request'; + +/** + * 支付产品配置 API(管理员全局配置) + */ +export const PayProductConfigApi = { + /** + * 全量查询产品配置列表 + */ + listAll(): Promise> { + return defHttp.get({ url: '/admin/product-config/list-all' }); + }, + + /** + * 切换产品的生效环境 + */ + switchEnv(product: string, sandbox: boolean): Promise> { + return defHttp.post({ url: '/admin/product-config/switch-env', params: { product, sandbox } }); + }, + + /** + * 保存产品配置 + */ + save(param: PayProductConfigParam): Promise> { + return defHttp.post({ url: '/admin/product-config/save', data: param }); + }, +}; + +/** 产品配置列表项 */ +export interface PayProductConfigResult extends BaseEntity { + /** 产品编码 */ + product?: string; + /** 产品名称 */ + name?: string; + /** 通道编码 */ + channel?: string; + /** 通道名称 */ + channelName?: string; + /** 是否支持沙箱环境 */ + sandboxSupport?: boolean; + /** 生效环境: prod/sandbox */ + activeEnv?: string; + /** 是否已配置参数 */ + configured?: boolean; +} + +/** 产品配置保存参数 */ +export interface PayProductConfigParam { + product?: string; + channel?: string; + activeEnv?: string; + configured?: boolean; + remark?: string; +} diff --git a/apps/daxpay-admin/src/locales/langs/en-US/payment/constant/product.json b/apps/daxpay-admin/src/locales/langs/en-US/payment/constant/product.json index a07e62a2d..6d725fa1b 100644 --- a/apps/daxpay-admin/src/locales/langs/en-US/payment/constant/product.json +++ b/apps/daxpay-admin/src/locales/langs/en-US/payment/constant/product.json @@ -22,6 +22,16 @@ "detail": "Product Detail", "sandboxSupported": "Supported", "sandboxNotSupported": "Not Supported", + "productConfig": { + "title": "Payment Product Management", + "emptyDesc": "No payment product data available", + "prodLabel": "Prod", + "sandboxLabel": "Sandbox", + "prodConfigBtn": "Production", + "sandboxConfigBtn": "Sandbox", + "switchEnv": "Switch Environment", + "switchEnvConfirm": "Switch to {env}?" + }, "placeholder": { "name": "Enter product name", "code": "Enter product code" diff --git a/apps/daxpay-admin/src/locales/langs/zh-CN/payment/constant/product.json b/apps/daxpay-admin/src/locales/langs/zh-CN/payment/constant/product.json index c5c45dc2e..83bf515ac 100644 --- a/apps/daxpay-admin/src/locales/langs/zh-CN/payment/constant/product.json +++ b/apps/daxpay-admin/src/locales/langs/zh-CN/payment/constant/product.json @@ -22,6 +22,16 @@ "detail": "产品详情", "sandboxSupported": "支持", "sandboxNotSupported": "不支持", + "productConfig": { + "title": "支付产品管理", + "emptyDesc": "暂无支付产品数据", + "prodLabel": "生产", + "sandboxLabel": "沙箱", + "prodConfigBtn": "生产配置", + "sandboxConfigBtn": "沙箱配置", + "switchEnv": "切换环境", + "switchEnvConfirm": "确定要切换到{env}吗?" + }, "placeholder": { "name": "请输入产品名称", "code": "请输入产品编码" diff --git a/apps/daxpay-admin/src/views/payment/config/product/ProductConfig.vue b/apps/daxpay-admin/src/views/payment/config/product/ProductConfig.vue new file mode 100644 index 000000000..1f96d6acb --- /dev/null +++ b/apps/daxpay-admin/src/views/payment/config/product/ProductConfig.vue @@ -0,0 +1,244 @@ + + + + + + +