TinyShip 2.3.0 正式发布
本版本聚焦支付能力扩展,正式为 TinyShip 接入第六个支付提供商 DodoPayments,采用 Merchant of Record(记录商家)模式,开发者无需自行处理全球税务、合规和退款事务,一键对接即可面向全球市场收款。
这次更新代表着 TinyShip 的支付矩阵已完整覆盖国内(微信支付、支付宝)和国际(Stripe、PayPal、Creem、DodoPayments)六大平台,适配订阅、单次付费和积分充值三种业务模式。
核心新增
DodoPayments 全流程集成:新增 dodo 支付提供商,支持 Hosted Checkout(托管结账)、Standard Webhooks(HMAC SHA256 签名验证)和 Customer Portal(用户自助管理订阅),三个框架统一适配
三种付费模式完整支持:订阅(Recurring)、单次付费(One-Time)和积分充值(Credits)均已在 DodoPayments 下实现并通过 E2E 验证
数据库 Schema 扩展:用户表新增 dodoCustomerId,订阅表新增 dodoSubscriptionId,PG 和 SQLite 双方言 Drizzle 迁移同步到位
配置与工程优化
Webhook 事件全覆盖:处理 payment.succeeded、payment.failed 及 7 种订阅生命周期事件(active / renewed / cancelled / expired / on_hold / updated / plan_changed)
Admin 后台适配:管理面板订阅列表支持按 Dodo 提供商筛选和搜索 dodoSubscriptionId,订阅来源正确标识为 Dodo 而非回退到其他类型
支付成功页免验证:DodoPayments 采用 webhook 权威确认模式,/payment-success?provider=dodo 直接展示成功信息,无需客户端二次验证
Customer Portal 按钮:Dashboard 订阅卡片为 Dodo 订户显示 "Manage Subscription" 按钮,跳转到 Dodo 内置的客户门户
文档与配置
用户指南新增 Dodo 章节:docs/user-guide/payment/dodo.md 涵盖申请流程、环境变量、测试模式、Webhook 配置、计划示例和注意事项
支付测试指南更新:补充 Dodo 测试卡号(4242...)、内网穿透配置和本地 Webhook 调试说明
环境变量补全:env.example 新增 DODO_PAYMENTS_API_KEY、DODO_PAYMENTS_WEBHOOK_KEY、DODO_PAYMENTS_TEST_MODE 三个配置项
测试与稳定性
E2E 全覆盖:新增 537 行 Playwright 测试,覆盖订阅支付、单次付费和积分充值三个完整流程,支持 Stripe Elements iframe 内卡号填写和多语言结账页面
三框架 × 双数据库验证:在 Next.js / Nuxt / TanStack Start 三框架 + PostgreSQL / SQLite 双数据库下完成 6 轮 Dodo 专项测试(30/30 通过)
全量回归验证:最终在三框架 + PostgreSQL 下完成全量 E2E(330/330 通过),确认无 regression