Files
vmall/docs/TBD-payments.md
Chengdong Zhang a7cd392bd4 feat(payments): configurable checkout payments — wallet + Stripe crypto, original-method refunds (add-configurable-payments)
- payment domain: payments/memberships/attempts/receipts/refunds/commands/events, legacy-demo provenance (0024), checkout header-hash idempotency (0025)
- wallet collection all-or-none across shop orders; group-wide cancellation; checkout cutover, status-only payOrder removed
- Stripe crypto-only Checkout adapter, raw-body HMAC webhooks, durable command worker with leases
- original-method refunds with receipt/allocation budgets; refund_pending/refund_failed aftersale states
- admin channel CRUD/revisions/audit/verify + operations list/detail/reconcile; secret-ref allowlist (VMALL_PAYMENT_*), env-fixed demo/sandbox/live
- mall/mobile checkout pay surfaces, admin console pages; shared contract updated
- pre-launch leftovers recorded in docs/TBD-payments.md

cargo test -p vmall-api green twice; four frontend builds green; browser smoke: mall wallet checkout paid, admin channels/operations verified
2026-10-15 16:14:28 +08:00

2.2 KiB
Raw Permalink Blame History

TBD — 支付上线前事项(add-configurable-payments 归档遗留)

归档时间:2026-10-15。以下条目是 add-configurable-payments 中依赖外部资源或 额外覆盖、在归档时如实保留未完成的事项。任何 sandbox/live 部署前必须全部关闭。

外部前置(阻塞 sandbox/live 激活)

  • Stripe 账户尽调(原 task 1.1):复核 Stripe 官方文档,记录 pinned API 版本、crypto-only Checkout 参数、paid/refund 事件、交易限额与商户资格;确认 hosted crypto 权限与 sandbox/testnet 钱包可用性(有效 API key 不等于已获批)。
  • 真实 sandbox 全链路(原 task 10.2):用合格 Stripe sandbox 账户 + testnet 资金完成 hosted crypto 支付,验证签名回调入账 USD receipt/application, 并执行一次部分 original-wallet 退款,留存外部证据。
  • Worker 重启恢复 + 渠道轮换演练(原 task 10.3):实际重启 worker 并 在有未完成操作时禁用渠道/轮换密钥,确认回调与 original-method 退款继续、 unknown 状态不会重复收款、补偿只恢复未支付资源一次。
  • mobile 端浏览器走查(原 task 10.4 残余):mobile checkout/return reload、pending/failure/refund UX;伪造成功参数、过期方法、不安全取消均不能 伪造完成态。

覆盖缺口(不阻塞归档,建议补齐)

  • Stripe 协议行为用例(原 task 5.6):未支付完成会话、延迟结算、 团购席位丢失、多笔真实收据、补偿成功重放、金额/币种不匹配隔离、 crypto 精度无损的集成测试。现有覆盖:伪造签名拒绝 (forged_stripe_webhook_is_rejected_without_payment_effects)。

已验证基线(归档时证据)

  • cargo test -p vmall-api 两轮全绿(payments 11/11、wallet 7/7、aftersales 10/10 等)。
  • 四端构建全绿:@vmall/mall、@vmall/mobile、@vmall/admin、@vmall/shop-admin。
  • demo 环境浏览器走查:mall 加购→结算→钱包支付成功(VM260928000005,$315.96)、 余额不足 400、demo 充值、订单 Paid、order_paid 消息;admin 渠道与操作列表/ 详情渲染正确。