feat(code-pay): 公开码牌信息接口返回商户简称供 H5 展示

This commit is contained in:
DaxPay Dev
2026-07-17 19:53:36 +08:00
parent 7d55e385ce
commit 624a44711b
2 changed files with 13 additions and 7 deletions

View File

@@ -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-固定)")

View File

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