diff --git a/apps/daxpay-admin/src/api/payment/alipayMchApp.api.ts b/apps/daxpay-admin/src/api/payment/alipayMchApp.api.ts index 1300be2b6..0ad63e92a 100644 --- a/apps/daxpay-admin/src/api/payment/alipayMchApp.api.ts +++ b/apps/daxpay-admin/src/api/payment/alipayMchApp.api.ts @@ -59,6 +59,17 @@ export const AlipayMchAppApi = { saveKeyConfig(data: AlipayMchAppKeyConfig): Promise> { return defHttp.post({ url: '/admin/alipay/mch-app/save-key-config', data }); }, + /** 查询应用授权认证配置 */ + findAuthConfigByAppId(appId: string): Promise> { + return defHttp.get({ + url: '/admin/alipay/mch-app/find-auth-config-by-app-id', + params: { appId }, + }); + }, + /** 保存应用授权认证配置 */ + saveAuthConfig(data: AlipayMchAppAuthConfig): Promise> { + return defHttp.post({ url: '/admin/alipay/mch-app/save-auth-config', data }); + }, }; /** 支付宝通道商户应用 */ @@ -94,3 +105,17 @@ export interface AlipayMchAppKeyConfig { /** AES 通信密钥 */ secretKey?: string; } + +/** 支付宝通道商户应用授权认证配置 */ +export interface AlipayMchAppAuthConfig { + /** 应用 ID */ + appId?: string; + /** 商户号 */ + mchNo?: string; + /** 通道商户号 */ + channelMchNo?: string; + /** 用户标识类型 */ + userIdType?: string; + /** 授权回调地址 */ + authCallbackUrl?: string; +} diff --git a/apps/daxpay-admin/src/locales/langs/en-US/page.json b/apps/daxpay-admin/src/locales/langs/en-US/page.json index 89ecf6d57..3d14860be 100644 --- a/apps/daxpay-admin/src/locales/langs/en-US/page.json +++ b/apps/daxpay-admin/src/locales/langs/en-US/page.json @@ -15,10 +15,6 @@ "payment": { "title": "Payment Management", "platform": "Platform Management", - "isvList": "ISV List", - "isvManage": "ISV Management", - "isvInfoManage": "ISV Info", - "isvEntityManage": "Entity Info", "merchantList": "Merchant List", "merchantManage": "Merchant Management", "merchantChannelMerchant": "Merchant Channel Merchant", diff --git a/apps/daxpay-admin/src/locales/langs/en-US/payment/channel/alipayMchApp.json b/apps/daxpay-admin/src/locales/langs/en-US/payment/channel/alipayMchApp.json index 9d9e2c437..fa915502b 100644 --- a/apps/daxpay-admin/src/locales/langs/en-US/payment/channel/alipayMchApp.json +++ b/apps/daxpay-admin/src/locales/langs/en-US/payment/channel/alipayMchApp.json @@ -18,5 +18,6 @@ "aliAppIdPrefix": "App ID: {appId}", "detailTitle": "{name} - App Management", "tabBasicInfo": "Basic Info", - "tabKeyConfig": "Key Config" + "tabKeyConfig": "Key Config", + "tabAuthConfig": "Authorization" } diff --git a/apps/daxpay-admin/src/locales/langs/en-US/payment/channel/alipayMchManage.json b/apps/daxpay-admin/src/locales/langs/en-US/payment/channel/alipayMchManage.json index 8f76e2eeb..dade53139 100644 --- a/apps/daxpay-admin/src/locales/langs/en-US/payment/channel/alipayMchManage.json +++ b/apps/daxpay-admin/src/locales/langs/en-US/payment/channel/alipayMchManage.json @@ -2,5 +2,7 @@ "title": "Alipay Direct Management", "groupApp": "App Management", "cardMchApp": "Alipay Channel Merchant Apps", - "cardMchAppDesc": "Manage Alipay channel merchant applications" + "cardMchAppDesc": "Manage Alipay channel merchant applications", + "cardAddMchApp": "Add Alipay App", + "cardAddMchAppDesc": "Create a new Alipay channel merchant app" } diff --git a/apps/daxpay-admin/src/locales/langs/en-US/payment/common/route.json b/apps/daxpay-admin/src/locales/langs/en-US/payment/common/route.json index f88d24e49..0589d7480 100644 --- a/apps/daxpay-admin/src/locales/langs/en-US/payment/common/route.json +++ b/apps/daxpay-admin/src/locales/langs/en-US/payment/common/route.json @@ -1,5 +1,4 @@ { - "missingIsvNo": "Missing ISV number. Open from the ISV list", "missingMchNo": "Missing merchant number. Open from the merchant list", "missingAppContext": "Open channel routing from App Management", "productDetail": { diff --git a/apps/daxpay-admin/src/locales/langs/zh-CN/page.json b/apps/daxpay-admin/src/locales/langs/zh-CN/page.json index 45d8660c1..2f0ec965e 100644 --- a/apps/daxpay-admin/src/locales/langs/zh-CN/page.json +++ b/apps/daxpay-admin/src/locales/langs/zh-CN/page.json @@ -15,10 +15,6 @@ "payment": { "title": "支付管理", "platform": "平台管理", - "isvList": "服务商列表", - "isvManage": "服务商管理", - "isvInfoManage": "服务商信息", - "isvEntityManage": "主体信息", "merchantList": "商户列表", "merchantManage": "商户管理", "merchantChannelMerchant": "商户通道商户", diff --git a/apps/daxpay-admin/src/locales/langs/zh-CN/payment/channel/alipayMchApp.json b/apps/daxpay-admin/src/locales/langs/zh-CN/payment/channel/alipayMchApp.json index 03a458a0c..502bf92e9 100644 --- a/apps/daxpay-admin/src/locales/langs/zh-CN/payment/channel/alipayMchApp.json +++ b/apps/daxpay-admin/src/locales/langs/zh-CN/payment/channel/alipayMchApp.json @@ -18,5 +18,6 @@ "aliAppIdPrefix": "AppId:{appId}", "detailTitle": "{name} - 应用管理", "tabBasicInfo": "基础信息", - "tabKeyConfig": "密钥配置" + "tabKeyConfig": "密钥配置", + "tabAuthConfig": "授权认证" } diff --git a/apps/daxpay-admin/src/locales/langs/zh-CN/payment/channel/alipayMchManage.json b/apps/daxpay-admin/src/locales/langs/zh-CN/payment/channel/alipayMchManage.json index eaad4ed4a..305ed9149 100644 --- a/apps/daxpay-admin/src/locales/langs/zh-CN/payment/channel/alipayMchManage.json +++ b/apps/daxpay-admin/src/locales/langs/zh-CN/payment/channel/alipayMchManage.json @@ -2,5 +2,7 @@ "title": "支付宝直连管理", "groupApp": "应用管理", "cardMchApp": "支付宝通道商户应用", - "cardMchAppDesc": "管理支付宝通道商户应用" + "cardMchAppDesc": "管理支付宝通道商户应用", + "cardAddMchApp": "添加支付宝应用", + "cardAddMchAppDesc": "创建新的支付宝通道商户应用" } diff --git a/apps/daxpay-admin/src/locales/langs/zh-CN/payment/common/route.json b/apps/daxpay-admin/src/locales/langs/zh-CN/payment/common/route.json index 588c1f7f6..ad52ebf7d 100644 --- a/apps/daxpay-admin/src/locales/langs/zh-CN/payment/common/route.json +++ b/apps/daxpay-admin/src/locales/langs/zh-CN/payment/common/route.json @@ -1,5 +1,4 @@ { - "missingIsvNo": "缺少服务商编号,请从服务商列表进入", "missingMchNo": "缺少商户编号,请从商户列表进入", "missingAppContext": "请从应用管理进入通道路由配置", "productDetail": { diff --git a/apps/daxpay-admin/src/views/payment/channel/alipay/config/AlipayDirectMchCreateConfig.vue b/apps/daxpay-admin/src/views/payment/channel/alipay/config/AlipayDirectMchCreateConfig.vue index d39bbe38a..d6293832b 100644 --- a/apps/daxpay-admin/src/views/payment/channel/alipay/config/AlipayDirectMchCreateConfig.vue +++ b/apps/daxpay-admin/src/views/payment/channel/alipay/config/AlipayDirectMchCreateConfig.vue @@ -1,13 +1,13 @@ + + + + diff --git a/apps/daxpay-admin/src/views/payment/channel/douyin/config/DouyinMchCreateConfig.vue b/apps/daxpay-admin/src/views/payment/channel/douyin/config/DouyinMchCreateConfig.vue index cbba85a66..c92bd502c 100644 --- a/apps/daxpay-admin/src/views/payment/channel/douyin/config/DouyinMchCreateConfig.vue +++ b/apps/daxpay-admin/src/views/payment/channel/douyin/config/DouyinMchCreateConfig.vue @@ -7,7 +7,7 @@ import { IconifyIcon } from '@vben-core/icons'; import { ChannelMerchantDouyinApi } from '#/api/payment/channelMerchant.api'; import ChannelLogo from '#/components/channel/ChannelLogo.vue'; -import { channelI18nMap, channelNameMap } from '#/enums/payment'; +import { channelI18nMap, channelNameMap, productI18nMap, productNameMap } from '#/enums/payment'; import { useMessage } from '#/hooks/useMessage'; defineOptions({ name: 'DouyinMchCreateConfig' }); @@ -44,6 +44,17 @@ const channelDisplayName = computed(() => { return channelNameMap[channel] || channel; }); +/** 支付产品展示名称,区分服务商/直连等模式 */ +const productDisplayName = computed(() => { + const product = productCode.value; + if (!product) return '-'; + const i18nKey = productI18nMap[product]; + if (i18nKey) { + return $t(i18nKey); + } + return productNameMap[product] || product; +}); + const rules = computed(() => ({ channelMerchantName: [{ required: true, message: $t('payment.merchant.channelMerchant.channelMerchantNameRequired') }], douyinMchId: [{ required: true, message: $t('payment.channel.douyin.validation.douyinMchIdRequired') }], @@ -113,7 +124,7 @@ defineExpose({ init });
- {{ channelDisplayName }} + {{ productDisplayName }}
diff --git a/apps/daxpay-admin/src/views/payment/channel/lakala/config/LakalaMchCreateConfig.vue b/apps/daxpay-admin/src/views/payment/channel/lakala/config/LakalaMchCreateConfig.vue index 4f640a518..ac0202bfd 100644 --- a/apps/daxpay-admin/src/views/payment/channel/lakala/config/LakalaMchCreateConfig.vue +++ b/apps/daxpay-admin/src/views/payment/channel/lakala/config/LakalaMchCreateConfig.vue @@ -7,7 +7,7 @@ import { IconifyIcon } from '@vben-core/icons'; import { ChannelMerchantLakalaApi } from '#/api/payment/channelMerchant.api'; import ChannelLogo from '#/components/channel/ChannelLogo.vue'; -import { channelI18nMap, channelNameMap } from '#/enums/payment'; +import { channelI18nMap, channelNameMap, productI18nMap, productNameMap } from '#/enums/payment'; import { useMessage } from '#/hooks/useMessage'; defineOptions({ name: 'LakalaMchCreateConfig' }); @@ -42,6 +42,17 @@ const channelDisplayName = computed(() => { return channelNameMap[channel] || channel; }); +/** 支付产品展示名称,区分服务商/直连等模式 */ +const productDisplayName = computed(() => { + const product = productCode.value; + if (!product) return '-'; + const i18nKey = productI18nMap[product]; + if (i18nKey) { + return $t(i18nKey); + } + return productNameMap[product] || product; +}); + const rules = computed(() => ({ channelMerchantName: [{ required: true, message: $t('payment.merchant.channelMerchant.channelMerchantNameRequired') }], termNo: [{ required: true, message: $t('payment.channel.lakalaIsv.validation.termNo') }], @@ -123,7 +134,7 @@ defineExpose({ init, validate, getData, submit });
- {{ channelDisplayName }} + {{ productDisplayName }}
diff --git a/apps/daxpay-admin/src/views/payment/channel/wechat/config/WechatMchCreateConfig.vue b/apps/daxpay-admin/src/views/payment/channel/wechat/config/WechatMchCreateConfig.vue index 95e466fb9..ad1c1af6b 100644 --- a/apps/daxpay-admin/src/views/payment/channel/wechat/config/WechatMchCreateConfig.vue +++ b/apps/daxpay-admin/src/views/payment/channel/wechat/config/WechatMchCreateConfig.vue @@ -7,7 +7,7 @@ import { IconifyIcon } from '@vben-core/icons'; import { ChannelMerchantWechatApi } from '#/api/payment/channelMerchant.api'; import ChannelLogo from '#/components/channel/ChannelLogo.vue'; -import { channelI18nMap, channelNameMap } from '#/enums/payment'; +import { channelI18nMap, channelNameMap, productI18nMap, productNameMap } from '#/enums/payment'; import { useMessage } from '#/hooks/useMessage'; defineOptions({ name: 'WechatMchCreateConfig' }); @@ -42,6 +42,17 @@ const channelDisplayName = computed(() => { return channelNameMap[channel] || channel; }); +/** 支付产品展示名称,区分服务商/直连等模式 */ +const productDisplayName = computed(() => { + const product = productCode.value; + if (!product) return '-'; + const i18nKey = productI18nMap[product]; + if (i18nKey) { + return $t(i18nKey); + } + return productNameMap[product] || product; +}); + /** 是否为微信直连产品 */ const isDirectProduct = computed(() => productCode.value === 'wechat_pay'); @@ -145,7 +156,7 @@ defineExpose({ init, validate, getData, submit });
- {{ channelDisplayName }} + {{ productDisplayName }}
diff --git a/apps/daxpay-admin/src/views/payment/channel/wechat/manage/mch/WechatChannelMerchantManage.vue b/apps/daxpay-admin/src/views/payment/channel/wechat/manage/mch/WechatChannelMerchantManage.vue index c5375e040..04f6fe017 100644 --- a/apps/daxpay-admin/src/views/payment/channel/wechat/manage/mch/WechatChannelMerchantManage.vue +++ b/apps/daxpay-admin/src/views/payment/channel/wechat/manage/mch/WechatChannelMerchantManage.vue @@ -89,9 +89,6 @@ query: { mchNo: mchNo.value, channelMchNo: channelMchNo.value, - channelMerchantName: channelMerchant.value.channelMerchantName || '', - channelMerchantId: channelMerchant.value.id || '', - product: channelMerchant.value.product || '', }, }); return; diff --git a/apps/daxpay-admin/src/views/payment/channel/wechat/manage/mch/app/WechatMchAppManage.vue b/apps/daxpay-admin/src/views/payment/channel/wechat/manage/mch/app/WechatMchAppManage.vue index c1382d569..493b65d85 100644 --- a/apps/daxpay-admin/src/views/payment/channel/wechat/manage/mch/app/WechatMchAppManage.vue +++ b/apps/daxpay-admin/src/views/payment/channel/wechat/manage/mch/app/WechatMchAppManage.vue @@ -83,17 +83,21 @@ channelMerchantName.value = normalizeRouteQueryValue(route.query.channelMerchantName); } + /** 返回通道商户详情或列表 */ function handleBack() { const id = normalizeRouteQueryValue(route.query.channelMerchantId); - const product = normalizeRouteQueryValue(route.query.product) || ProductEnum.WECHAT_ISV; - router.push({ - path: '/payment/merchant/channel-merchant/detail', - query: { - mchNo: mchNo.value, - id, - product, - }, - }); + if (id) { + const product = normalizeRouteQueryValue(route.query.product) || ProductEnum.WECHAT_ISV; + router.push({ + path: '/payment/merchant/channel-merchant/detail', + query: { mchNo: mchNo.value, id, product }, + }); + } else { + router.push({ + path: '/payment/merchant/channel-merchant', + query: { mchNo: mchNo.value }, + }); + } } function handleAdd() { diff --git a/apps/daxpay-admin/src/views/payment/merchant/channel-merchant/ChannelMerchantCreate.vue b/apps/daxpay-admin/src/views/payment/merchant/channel-merchant/ChannelMerchantCreate.vue index 4070545ab..1d3aba401 100644 --- a/apps/daxpay-admin/src/views/payment/merchant/channel-merchant/ChannelMerchantCreate.vue +++ b/apps/daxpay-admin/src/views/payment/merchant/channel-merchant/ChannelMerchantCreate.vue @@ -126,7 +126,6 @@ selectedProduct.value!.code!, mchNo.value, selectedProduct.value!.channel || '', - '', selectedProduct.value!.name || getProductName(selectedProduct.value!.code || ''), ); }); diff --git a/apps/daxpay-admin/src/views/payment/merchant/channel-merchant/ChannelMerchantCreateTransit.vue b/apps/daxpay-admin/src/views/payment/merchant/channel-merchant/ChannelMerchantCreateTransit.vue index e44c99317..3ca49e108 100644 --- a/apps/daxpay-admin/src/views/payment/merchant/channel-merchant/ChannelMerchantCreateTransit.vue +++ b/apps/daxpay-admin/src/views/payment/merchant/channel-merchant/ChannelMerchantCreateTransit.vue @@ -39,12 +39,12 @@ function isUmsProduct(product: string) { /** * 初始化对应通道的配置组件 */ -function init(product: string, mchNo: string, channel: string, isvNo = '', productName = '') { +function init(product: string, mchNo: string, channel: string, productName = '') { currentProduct.value = { product, channel }; nextTick(() => { switch (product) { case ProductEnum.ALIPAY_ISV: { - alipayRef.value?.init(mchNo, product, channel, isvNo); + alipayRef.value?.init(mchNo, product, channel); break; } case ProductEnum.ALIPAY: { diff --git a/apps/daxpay-admin/src/views/payment/merchant/channel-merchant/ChannelMerchantList.vue b/apps/daxpay-admin/src/views/payment/merchant/channel-merchant/ChannelMerchantList.vue index 3da7710eb..e456d1464 100644 --- a/apps/daxpay-admin/src/views/payment/merchant/channel-merchant/ChannelMerchantList.vue +++ b/apps/daxpay-admin/src/views/payment/merchant/channel-merchant/ChannelMerchantList.vue @@ -240,7 +240,7 @@