diff --git a/rc-service/rc-service-order/order-application/src/main/java/com/red/circle/order/app/command/pay/web/PayWebApplicationCommodityV2QueryExe.java b/rc-service/rc-service-order/order-application/src/main/java/com/red/circle/order/app/command/pay/web/PayWebApplicationCommodityV2QueryExe.java index 64f31d79..96fd4554 100644 --- a/rc-service/rc-service-order/order-application/src/main/java/com/red/circle/order/app/command/pay/web/PayWebApplicationCommodityV2QueryExe.java +++ b/rc-service/rc-service-order/order-application/src/main/java/com/red/circle/order/app/command/pay/web/PayWebApplicationCommodityV2QueryExe.java @@ -69,33 +69,38 @@ public class PayWebApplicationCommodityV2QueryExe { .toPayApplicationCO(payApplicationService.getById(cmd.getApplicationId())); ResponseAssert.notNull(CommonErrorCode.NOT_FOUND_RECORD_INFO, application); - List payApplicationCommodities = getPayApplicationCommodities(cmd); - - if (CollectionUtils.isEmpty(payApplicationCommodities)) { - return new ApplicationCommodityCardV2CO() - .setApplication(application); - } - - // 所有支持的渠道 - List countryChannelDetails = payCountryChannelDetailsService - .listChannelCode(cmd.getPayCountryId()); + List payApplicationCommodities = getPayApplicationCommodities(cmd); + + if (CollectionUtils.isEmpty(payApplicationCommodities)) { + return new ApplicationCommodityCardV2CO() + .setApplication(application); + } + + // LIKEI/Yumi 的 H5 支付方式由本地 JSON 控制,商品接口只负责按后台商品配置返回商品。 + // 如果这里继续依赖支付国家渠道详情,JSON 已配置但后端渠道未上架时会把商品误过滤为空。 + List commodity = toCommodityCO(payCountry, + payApplicationCommodities); + if (CollectionUtils.isEmpty(commodity)) { + return new ApplicationCommodityCardV2CO() + .setApplication(application); + } + if (isJsonControlledPayment(cmd)) { + return new ApplicationCommodityCardV2CO() + .setApplication(application) + .setCommodity(commodity); + } + + // 所有支持的渠道 + List countryChannelDetails = payCountryChannelDetailsService + .listChannelCode(cmd.getPayCountryId()); if (CollectionUtils.isEmpty(countryChannelDetails)) { return new ApplicationCommodityCardV2CO() .setApplication(application); } - // 商品 - List commodity = toCommodityCO(payCountry, - payApplicationCommodities); - - if (CollectionUtils.isEmpty(commodity)) { - return new ApplicationCommodityCardV2CO() - .setApplication(application); - } - - // 过滤渠道限额范围 - countryChannelDetails = filterCountryChannelLimit(countryChannelDetails, commodity); + // 过滤渠道限额范围 + countryChannelDetails = filterCountryChannelLimit(countryChannelDetails, commodity); if (CollectionUtils.isEmpty(countryChannelDetails)) { return new ApplicationCommodityCardV2CO() @@ -117,8 +122,8 @@ public class PayWebApplicationCommodityV2QueryExe { .setChannels(getPayChannels(payChannels, countryChannelDetails)); } - private List getPayApplicationCommodities( - PayWebApplicationCommodityCmd cmd) { + private List getPayApplicationCommodities( + PayWebApplicationCommodityCmd cmd) { // Yumi/LIKEI H5 已经先按用户资料拿到国家,商品应按国家查;regionId 只保留给旧的区域商品链路. if (Objects.equals(cmd.requireReqSysOriginChildEnum(), SysOriginPlatformEnum.YOLO) @@ -133,12 +138,16 @@ public class PayWebApplicationCommodityV2QueryExe { cmd.getType(), cmd.getRegionId()); } - return payApplicationCommodityService - .listCommodityByApplicationCountry(cmd.getApplicationId(), cmd.getPayCountryId(), - cmd.getType(), null); - } - - private List filterCountryChannelLimit( + return payApplicationCommodityService + .listCommodityByApplicationCountry(cmd.getApplicationId(), cmd.getPayCountryId(), + cmd.getType(), null); + } + + private boolean isJsonControlledPayment(PayWebApplicationCommodityCmd cmd) { + return Objects.equals(cmd.requireReqSysOriginChildEnum(), SysOriginPlatformEnum.LIKEI); + } + + private List filterCountryChannelLimit( List countryChannelDetails, List commodity) { Map countryChannelMaps = Maps.newHashMap();