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 @@ + + + + + + +