wangjia
|
0ae7769abe
|
test(pay): 补 settle 并发/跨包全链 e2e/reconcile 装配/alipay 验签健壮性/money 零小数位
- gateway: TestSettleConcurrentSameOrder 真并发钉住 MarkAttemptPaid 行锁不变量
(文件型 sqlite,规避 in-memory cache=shared 的 SQLITE_LOCKED_SHAREDCACHE)。
- gateway: e2e_fullchain_test.go 补下单→回调→settle→webhook 实际 HTTP 投递→
delivered 整链(httptest server + 真实 store.WebhookStore/webhook.Notifier)。
- reconcile: main.go 装配抽到 reconcile.Assemble(+Runner.TaskNames 访问器),
补 assembly_test.go 钉住 7 个后台任务全部注册 + crypto 缺渠道/interval=0 分支。
- alipay: 补验签健壮性(未知多余字段/字段乱序/中文unicode/空值字段),意外定位
vendor Encoder 对空值字段的真实语义与官方文档描述不同,已记录在测试注释。
- money: 补 TestZeroDecimalCurrencyJPYNotSupported,记录 JPY/KRW 当前未注册进
exponents(接入会先踩 ErrUnknownCurrency,不是乘除法坑)。
|
2026-07-11 08:50:45 +08:00 |
|
wangjia
|
b0714ca758
|
feat(pay-v2): P8 Task6 拒付 chargeback 记录 + chargeback.received
|
2026-07-10 18:52:13 +08:00 |
|
wangjia
|
4c242607a7
|
feat(pay-v2): P8 Task3 订阅创建 + 首期激活(subscription.created)+ 端点
|
2026-07-10 17:59:35 +08:00 |
|
wangjia
|
2016c5d16e
|
feat(v2): gateway.Refund 编排(部分/多次累计 + 超退守卫 + crypto 人工向闭环)+ RefundingProvider 加 refundID 幂等键
|
2026-07-10 17:23:14 +08:00 |
|
wangjia
|
7a27a6223a
|
feat(v2): order 补 biz_code + webhook payload 带 product_biz_code(收口 P2 延后项)
|
2026-07-10 14:12:44 +08:00 |
|
wangjia
|
c06f6d3a3c
|
feat(v2): gateway 经 Picker 路由选账户 + retry 换号(ExcludeAccounts);替换首个 enabled
|
2026-07-10 14:02:33 +08:00 |
|
wangjia
|
0877b01874
|
fix(v2): settle 定位尝试的瞬时读库错误归 SettleFailed(可重试),不再误标 not_found
AttemptByProviderRef 返回非哨兵错误(如 DB 抖动)时原先与"查无此单"终态
一并标 SettleNotFound;调用方按结果值决定 ack,会把已付订单永久丢弃。
非哨兵分支改判 SettleFailed(可重试,渠道会重投),errors.Is(ErrAttemptNotFound)
分支维持 SettleNotFound 不变。新增 TestSettleTransientReadErrorIsFailed 通过
关闭底层连接强制产出瞬时读库错误,验证结果与语义。
|
2026-07-10 11:20:53 +08:00 |
|
wangjia
|
68d162d6c4
|
feat(v2): 入账管线 Settle/HandleCallback/SyncPending(归一→定位→幂等→核对→标付→入队)
|
2026-07-10 11:15:10 +08:00 |
|