fix(huifu): 微信商户配置补上必填的 product_id
以汇付接口规则为准逐项对账后,四个接口里只有《微信商户配置》(v2.merchant.busi.config)
真的漏了必填字段:
文档「### 请求参数」表:product_id | 产品编号 | String | 32 | **Y** | 示例值 JCTEST
它在 data 里,和公共参数表里那个由 SDK 自动携带的 product_id 不是同一处,必须自己传。
(同样的坑在 head/config 上踩过一次:补上 product_id 之后请求才被受理。)
其余三个接口经核对没有漏:
- v2/merchant/basicdata/ent 25 个顶层必填字段,代码全部发送
- v2/merchant/basicdata/indv 15 个顶层必填字段,代码全部发送(含 settle_card_front_pic)
- v2/merchant/busi.open 顶层必填只有 req_seq_id / req_date / huifu_id,均已发送
这三个接口出现的 product_id 都在返回参数表里,不是请求必填。
回归:回调幂等、进件重试、进件结果解析共 16 项通过。
| | |
| | | request.put("req_date", LocalDate.now().format(DateTimeFormatter.BASIC_ISO_DATE)); |
| | | request.put("huifu_id", huifuId); |
| | | request.put("fee_type", "01"); |
| | | // 文档《微信商户配置》的请求参数表里 product_id 是必填(示例值 JCTEST)。 |
| | | // 它与公共参数里的 product_id(SDK 自动带)不是同一处:这一处在 data 里,必须自己传。 |
| | | request.put("product_id", properties.getProductId().trim()); |
| | | request.put("wx_applet_app_id", properties.getMiniProgramAppId().trim()); |
| | | putIfPresent(request, "async_return_url", properties.getMerchantWechatConfigNotifyUrl()); |
| | | try { |