|
@@ -44,16 +44,19 @@ import java.util.List;
|
|
|
/**
|
|
/**
|
|
|
* 汇安融订单服务。
|
|
* 汇安融订单服务。
|
|
|
*
|
|
*
|
|
|
- * 订单号策略:order_no 由我方生成(HAR 前缀 + 雪花 ID),作为 third_order_no 传上游。
|
|
|
|
|
|
|
+ * 订单号策略:order_no 由我方生成(AP 前缀 + 雪花 ID),作为 third_order_no 传上游。
|
|
|
* 企业自己的单号存 out_biz_no,不直接透传 —— 不同企业的单号可能重复,
|
|
* 企业自己的单号存 out_biz_no,不直接透传 —— 不同企业的单号可能重复,
|
|
|
* 而上游的 third_order_no 需要全局唯一。
|
|
* 而上游的 third_order_no 需要全局唯一。
|
|
|
|
|
+ *
|
|
|
|
|
+ * <p>AP 前缀是 2026-10-09 从 HAR 改来的(去上游化):order_no 出现在开放 API 响应、
|
|
|
|
|
+ * 顾客收款页与上游的 third_order_no 里,前缀不带上游品牌。存量单不改。
|
|
|
*/
|
|
*/
|
|
|
@Slf4j
|
|
@Slf4j
|
|
|
@Service
|
|
@Service
|
|
|
@RequiredArgsConstructor
|
|
@RequiredArgsConstructor
|
|
|
public class HarOrderService {
|
|
public class HarOrderService {
|
|
|
|
|
|
|
|
- private static final String ORDER_NO_PREFIX = "HAR";
|
|
|
|
|
|
|
+ private static final String ORDER_NO_PREFIX = "AP";
|
|
|
|
|
|
|
|
private static final DateTimeFormatter TIME_FORMATTER =
|
|
private static final DateTimeFormatter TIME_FORMATTER =
|
|
|
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
@@ -75,6 +78,15 @@ public class HarOrderService {
|
|
|
*/
|
|
*/
|
|
|
private static final String DEFAULT_REFUND_REASON = "商户申请退款";
|
|
private static final String DEFAULT_REFUND_REASON = "商户申请退款";
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * {@code trade_type=alipay_un_stage}(支付宝支付,非分期)时上游要求的 {@code biz} 取值。
|
|
|
|
|
+ *
|
|
|
|
|
+ * <p>这串取自规范 260924 的订单创建参数表,**带上游品牌** —— 2026-10-09 起不再让
|
|
|
|
|
+ * 调用方填、也不用知道:请求体留空时由 {@link #resolveBiz} 派生,落库与发上游同一份
|
|
|
|
|
+ * (配套改动:{@link HarOrderVO} 不再回吐 biz,开放文档改为「留空即可」)。
|
|
|
|
|
+ */
|
|
|
|
|
+ private static final String BIZ_ALIPAY_UN_STAGE = "har_ali_un_stage";
|
|
|
|
|
+
|
|
|
private final HarOrderMapper orderMapper;
|
|
private final HarOrderMapper orderMapper;
|
|
|
private final HarMerchantService merchantService;
|
|
private final HarMerchantService merchantService;
|
|
|
/**
|
|
/**
|
|
@@ -444,7 +456,7 @@ public class HarOrderService {
|
|
|
entity.setPrice(dto.getPrice());
|
|
entity.setPrice(dto.getPrice());
|
|
|
entity.setTitle(dto.getTitle());
|
|
entity.setTitle(dto.getTitle());
|
|
|
entity.setTradeType(dto.getTradeType());
|
|
entity.setTradeType(dto.getTradeType());
|
|
|
- entity.setBiz(dto.getBiz());
|
|
|
|
|
|
|
+ entity.setBiz(resolveBiz(dto));
|
|
|
entity.setStageNum(dto.getStageNum());
|
|
entity.setStageNum(dto.getStageNum());
|
|
|
entity.setPercent(dto.getPercent());
|
|
entity.setPercent(dto.getPercent());
|
|
|
entity.setPayTimeout(dto.getPayTimeout());
|
|
entity.setPayTimeout(dto.getPayTimeout());
|
|
@@ -704,6 +716,18 @@ public class HarOrderService {
|
|
|
.atZone(ZoneId.systemDefault()).toOffsetDateTime();
|
|
.atZone(ZoneId.systemDefault()).toOffsetDateTime();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 解析 biz(2026-10-09 去上游化):调用方显式给了就原样透传(后台表单与既有调用方
|
|
|
|
|
+ * 仍按老口径传);留空时按 trade_type 派生 —— 非分期({@code alipay_un_stage})
|
|
|
|
|
+ * ⇒ {@link #BIZ_ALIPAY_UN_STAGE};分期与其余取值没有规范依据,保持空(不替上游编)。
|
|
|
|
|
+ */
|
|
|
|
|
+ private static String resolveBiz(HarOrderCreateDTO dto) {
|
|
|
|
|
+ if (StrUtil.isNotBlank(dto.getBiz())) {
|
|
|
|
|
+ return dto.getBiz();
|
|
|
|
|
+ }
|
|
|
|
|
+ return "alipay_un_stage".equals(dto.getTradeType()) ? BIZ_ALIPAY_UN_STAGE : null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private HarPrecreateRequest buildPrecreateRequest(HarOrderCreateDTO dto,
|
|
private HarPrecreateRequest buildPrecreateRequest(HarOrderCreateDTO dto,
|
|
|
HarMerchantEntity merchant,
|
|
HarMerchantEntity merchant,
|
|
|
String orderNo,
|
|
String orderNo,
|
|
@@ -713,7 +737,7 @@ public class HarOrderService {
|
|
|
req.setTitle(dto.getTitle());
|
|
req.setTitle(dto.getTitle());
|
|
|
req.setStageNum(dto.getStageNum());
|
|
req.setStageNum(dto.getStageNum());
|
|
|
req.setTradeType(dto.getTradeType());
|
|
req.setTradeType(dto.getTradeType());
|
|
|
- req.setBiz(dto.getBiz());
|
|
|
|
|
|
|
+ req.setBiz(resolveBiz(dto));
|
|
|
req.setPercent(dto.getPercent());
|
|
req.setPercent(dto.getPercent());
|
|
|
req.setMerchantCode(merchant.getMerchantCode());
|
|
req.setMerchantCode(merchant.getMerchantCode());
|
|
|
req.setThirdOrderNo(orderNo);
|
|
req.setThirdOrderNo(orderNo);
|
|
@@ -735,7 +759,7 @@ public class HarOrderService {
|
|
|
req.setAuthCode(dto.getAuthCode());
|
|
req.setAuthCode(dto.getAuthCode());
|
|
|
req.setStageNum(dto.getStageNum());
|
|
req.setStageNum(dto.getStageNum());
|
|
|
req.setTradeType(dto.getTradeType());
|
|
req.setTradeType(dto.getTradeType());
|
|
|
- req.setBiz(dto.getBiz());
|
|
|
|
|
|
|
+ req.setBiz(resolveBiz(dto));
|
|
|
req.setPercent(dto.getPercent());
|
|
req.setPercent(dto.getPercent());
|
|
|
req.setMerchantCode(merchant.getMerchantCode());
|
|
req.setMerchantCode(merchant.getMerchantCode());
|
|
|
req.setThirdOrderNo(orderNo);
|
|
req.setThirdOrderNo(orderNo);
|