diff --git a/service/src/main/java/cn/qihangerp/service/external/pdd/ExternalPddPublishService.java b/service/src/main/java/cn/qihangerp/service/external/pdd/ExternalPddPublishService.java index ae7d17d5..e1c1c0ba 100644 --- a/service/src/main/java/cn/qihangerp/service/external/pdd/ExternalPddPublishService.java +++ b/service/src/main/java/cn/qihangerp/service/external/pdd/ExternalPddPublishService.java @@ -15,7 +15,7 @@ import java.util.List; /** * 拼多多发布:POP 凭证仅来自本次请求的 {@link ExternalGoodsUpsertRequest#getPddPopAuth()};不依赖 {@code o_shop}。 - * 可选自动拉取类目规则与 spec.id;图书等 {@code input_max_spec_num=0} 类目可走无规格单 SKU({@code sku_list} 项不传 {@code spec_id_list}/{@code spec_detail_list})。 + * 可选自动拉取类目规则与 spec.id;图书等 {@code input_max_spec_num=0} 类目可走无规格单 SKU({@code sku_list} 与 POP 文档一致:{@code spec_id_list} 字符串 {@code "[]"},{@code price}/{@code multi_price} 分数字符串)。 * * @author guochengyu */ @@ -108,7 +108,7 @@ public class ExternalPddPublishService { specAuto = true; } else if (PddOpenApiSupport.isNoSpecBookCatRule(ar.getCatRuleRaw()) && skuRows.size() == 1) { noSpecBookPublish = true; - autoDetail = "类目 input_max_spec_num=0:拼多多无规格发品(单 sku_list,不传 spec_id_list/spec_detail_list,未调用 spec.id.get)"; + autoDetail = "类目 input_max_spec_num=0:拼多多无规格发品(单 sku_list,spec_id_list=\"[]\" 字符串,price/multi_price 分数字符串,未调用 spec.id.get)"; log.info("[PDD] no-spec book publish shopId={} outGoodsId={}", req.getShopId(), req.getOutGoodsId()); } else if (PddOpenApiSupport.isNoSpecBookCatRule(ar.getCatRuleRaw())) { log.info("[PDD] publish skipped shopId={} outGoodsId={} reason=no-spec-requires-single-sku skuCount={}", diff --git a/service/src/main/java/cn/qihangerp/service/external/pdd/PddGoodsAddParamBuilder.java b/service/src/main/java/cn/qihangerp/service/external/pdd/PddGoodsAddParamBuilder.java index 0e0d178b..e09e0813 100644 --- a/service/src/main/java/cn/qihangerp/service/external/pdd/PddGoodsAddParamBuilder.java +++ b/service/src/main/java/cn/qihangerp/service/external/pdd/PddGoodsAddParamBuilder.java @@ -112,8 +112,9 @@ public class PddGoodsAddParamBuilder { JSONObject sku = new JSONObject(); sku.put("is_onsale", 1); sku.put("limit_quantity", 999L); - sku.put("multi_price", groupFen); - sku.put("price", singleFen); + // POP 文档:sku_list 内 multi_price / price 为分数字符串,如 "1900"、"2200" + sku.put("multi_price", fenAsSkuPriceString(groupFen)); + sku.put("price", fenAsSkuPriceString(singleFen)); sku.put("quantity", row.getStockQty() != null ? row.getStockQty().longValue() : 0L); sku.put("weight", row.getWeightGram() != null ? row.getWeightGram() : 1000L); sku.put("spec_id_list", ov.getSpecIdList()); @@ -151,8 +152,9 @@ public class PddGoodsAddParamBuilder { } /** - * 拼多多「无规格」发品(如图书 {@code input_max_spec_num=0}):仅一条 {@code sku_list}, - * SKU 对象不传 {@code spec_id_list}、{@code spec_detail_list};根级 {@code is_sku=false},不调用 {@code spec.id.get}。 + * 拼多多「无规格」发品(如图书 {@code input_max_spec_num=0}):仅一条 {@code sku_list}。 + * 与 POP 文档一致:{@code spec_id_list} 为字符串形式的 JSON 数组,无规格为 {@code "[]"}(有规格如 {@code "[25]"}); + * {@code price}/{@code multi_price} 为分数字符串;不传 {@code spec_detail_list};根级 {@code is_sku=false}。 *
调用方须保证过滤后仅 1 条有效 SKU。
*/ public String buildParamJsonNoSpecBook(OGoods goods, List