From 624a44711bea9517dfb78d88bfbe61516e3c33c3 Mon Sep 17 00:00:00 2001 From: DaxPay Dev Date: Fri, 17 Jul 2026 19:53:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(code-pay):=20=E5=85=AC=E5=BC=80=E7=A0=81?= =?UTF-8?q?=E7=89=8C=E4=BF=A1=E6=81=AF=E6=8E=A5=E5=8F=A3=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=95=86=E6=88=B7=E7=AE=80=E7=A7=B0=E4=BE=9B=20H5=20=E5=B1=95?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../unipay/client/result/CodePayInfoResult.java | 4 ++++ .../client/service/CodePayAssistService.java | 16 +++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/daxpay-payment/daxpay-payment-unipay/src/main/java/cn/daxpay/open/payment/unipay/client/result/CodePayInfoResult.java b/daxpay-payment/daxpay-payment-unipay/src/main/java/cn/daxpay/open/payment/unipay/client/result/CodePayInfoResult.java index 7d9cf02e3..e87f92304 100644 --- a/daxpay-payment/daxpay-payment-unipay/src/main/java/cn/daxpay/open/payment/unipay/client/result/CodePayInfoResult.java +++ b/daxpay-payment/daxpay-payment-unipay/src/main/java/cn/daxpay/open/payment/unipay/client/result/CodePayInfoResult.java @@ -18,6 +18,10 @@ public class CodePayInfoResult { @Schema(description = "码牌名称") private String name; + /// 商户简称(展示用; 简称空时回退商户全称, 不含 mchNo) + @Schema(description = "商户简称(展示用)") + private String mchShortName; + /// 金额类型 /// @see cn.daxpay.open.payment.device.enums.QrCodeAmountTypeEnum @Schema(description = "金额类型(random-自定义/fixed-固定)") diff --git a/daxpay-payment/daxpay-payment-unipay/src/main/java/cn/daxpay/open/payment/unipay/client/service/CodePayAssistService.java b/daxpay-payment/daxpay-payment-unipay/src/main/java/cn/daxpay/open/payment/unipay/client/service/CodePayAssistService.java index f41eb4a4f..c7764519d 100644 --- a/daxpay-payment/daxpay-payment-unipay/src/main/java/cn/daxpay/open/payment/unipay/client/service/CodePayAssistService.java +++ b/daxpay-payment/daxpay-payment-unipay/src/main/java/cn/daxpay/open/payment/unipay/client/service/CodePayAssistService.java @@ -1,16 +1,16 @@ package cn.daxpay.open.payment.unipay.client.service; import cn.daxpay.open.payment.auth.ChannelAuthFacade; -import cn.daxpay.open.payment.common.access.MerchantAccessInfo; import cn.daxpay.open.payment.common.context.MerchantContextLoader; import cn.daxpay.open.payment.device.enums.QrCodeAmountTypeEnum; import cn.daxpay.open.payment.device.enums.QrCodeStatusEnum; import cn.daxpay.open.payment.device.qrcode.dao.DeviceQrCodeManager; import cn.daxpay.open.payment.device.qrcode.entity.DeviceQrCode; +import cn.daxpay.open.payment.merchant.dao.info.MerchantInfoManager; +import cn.daxpay.open.payment.merchant.entity.info.MerchantInfo; import cn.daxpay.open.payment.merchant.enums.ClientEnvEnum; import cn.daxpay.open.payment.merchant.enums.ClientRuntimeEnum; import cn.daxpay.open.payment.merchant.enums.CodePayFormEnum; -import cn.daxpay.open.payment.merchant.service.access.MerchantAccessQueryService; import cn.daxpay.open.payment.merchant.service.gateway.CodePayResolveService; import cn.daxpay.open.payment.route.service.runtime.PayRouteService; import cn.daxpay.open.payment.trade.order.dao.NormalPayOrderManager; @@ -52,7 +52,7 @@ import org.springframework.stereotype.Service; public class CodePayAssistService { private final DeviceQrCodeManager deviceQrCodeManager; - private final MerchantAccessQueryService merchantAccessQueryService; + private final MerchantInfoManager merchantInfoManager; private final MerchantContextLoader merchantContextLoader; private final CodePayResolveService codePayResolveService; private final NormalPayService normalPayService; @@ -65,13 +65,15 @@ public class CodePayAssistService { /// @param clientEnv 可选; 传入时解析策略 method 并填充 needOpenId public CodePayInfoResult getByCode(String code, String clientEnv) { DeviceQrCode entity = this.loadEnabledAssigned(code); - MerchantAccessInfo merchant = merchantAccessQueryService.getMerchantByMchNo(entity.getMchNo()); - if (merchant == null) { - throw new DataNotExistException("error.device.qrcode.mchNotFound"); - } + // 忽略租户查商户: 公开 H5 无商户上下文; 仅取展示名, 不回 mchNo + MerchantInfo merchant = merchantInfoManager.findByMchNoNotTenant(entity.getMchNo()) + .orElseThrow(() -> new DataNotExistException("error.device.qrcode.mchNotFound")); + // 展示优先简称, 空则回退全称 + String mchShortName = StrUtil.blankToDefault(merchant.getMchShortName(), merchant.getMchName()); CodePayInfoResult result = new CodePayInfoResult() .setCode(entity.getCode()) .setName(entity.getName()) + .setMchShortName(mchShortName) .setAmountType(entity.getAmountType()) .setFixedAmount(entity.getFixedAmount()) .setProgramType(entity.getProgramType());