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());