| | |
| | | |
| | | - 新增 `MerchantPaymentReadinessService`:唯一“能否收款”判定。要求存在最新 `approved` 进件、 |
| | | 该进件名下有带 `provider_token_no` 的 `approved` 银行卡、`merchant_stat = NORMAL`、 |
| | | `settle_status = 0`(自动结算已关闭)、取现 `switch_state = 1`。快照未确认时按需调用斗拱查询, |
| | | 查询失败/被拒时保持“未就绪”而不是猜测通过。 |
| | | `settle_status = 0`(自动结算已关闭)、取现 `switch_state = 1`。快照未确认时不放行,也不在 |
| | | 支付链路上调用斗拱:由进件完成、定时任务或后台手动刷新补齐,避免支付/回调事务里等待 HTTP。 |
| | | 斗拱查询一律在 `PROPAGATION_NOT_SUPPORTED` 中执行,不占用数据库事务与行锁。 |
| | | - 新增 `HuifuMerchantCapabilityGateway`(`POST /v2/merchant/basicdata/query`,SDK |
| | | `V2MerchantBasicdataQueryRequest`),把子商户状态、结算开关、取现开关与到账类型写入 |
| | | `merchant_onboarding_application`(V130 迁移 + `MerchantOnboardingSchemaInitializer` 兜底加列)。 |
| | |
| | | 的银行卡写 token;绑定回调对已决卡片直接返回,晚到通知与重复通知都不再覆盖终态。 |
| | | - 后台:`GET/POST /api/admin/management/merchant-settlement/onboardings/{id}/payment-capability[/refresh]` |
| | | 查看与刷新能力快照;`MerchantPaymentCapabilityScheduler` 定时刷新超过 |
| | | `app.payment.huifu.capability-refresh.stale-hours`(默认 6 小时)的快照。 |
| | | `app.payment.huifu.capability-refresh.stale-hours`(默认 6 小时)的快照,每个商户独立事务、互不影响。 |
| | | |
| | | 测试(`MerchantPaymentReadinessServiceTests` 10 项、`MerchantSettlementCallbackIdempotencyTests` 5 项、 |
| | | `AppOrderPortalServiceTests` 6 项)全部通过;三种失败组合、提供方查询失败与超时、晚到/重复回调均已覆盖。 |
| | | 注意:仓库的 H2 测试库无法解析 V77 等 MySQL 专用迁移,Spring 测试需按 |
| | | `talent-card-server/docs/huifu-payment-integration.md` 的说明指向 MySQL 才能加载上下文。 |
| | | 测试(`MerchantPaymentReadinessServiceTests` 11 项、`MerchantSettlementCallbackIdempotencyTests` 5 项、 |
| | | `AppOrderPortalServiceTests` 6 项)在 MySQL 上全部通过;自动结算未关、取现不可用、子商户冻结、 |
| | | 提供方拒绝/超时、快照未确认、晚到/重复回调均已覆盖。整套 100 项测试的其余 3 个失败与 HEAD 基线 |
| | | 完全一致(V77 的 H2 语法、`TalentAuthServiceTests` 的 `dateadd`、`MerchantSettlementStatisticsMapperTests` |
| | | 的持久化断言),非本次改动引入。注意:仓库 H2 测试库无法解析 V77 等 MySQL 专用迁移,Spring 测试需按 |
| | | `talent-card-server/docs/huifu-payment-integration.md` 的说明用 `TEST_DATASOURCE_*` 指向 MySQL。 |
| | | |
| | | 遗留(不在本 ticket 范围):`AppOrderCreateRequest` 不携带门店,订单也不写 `store_id`,因此能力校验 |
| | | 只能到商户维度;多门店商户与按门店结算的对账将在后续 ticket 处理。 |