用途:在支付流程上线前进行验证,以及从测试环境切换到生产环境时使用。适用于测试卡成功/拒付场景、订阅续费、区域支付方式、本地或预发环境的 Webhook 测试,以及准备生产发布。
核心概念:Dodo Payments 维护测试与生产两套完全独立的环境,各自拥有基础 URL、API 密钥、Webhook、产品、客户和交易,数据不互通。测试模式为 https://test.dodopayments.com,生产模式为 https://live.dodopayments.com。SDK 默认使用 live_mode,开发时必须显式设置 environment: 'test_mode'。测试密钥前缀为 dodo_test_,生产密钥前缀为 dodo_live_。
测试支付方式:测试模式提供特定卡号,如 4242 4242 4242 4242 成功、4000 0000 0000 0002 拒付、4000 0000 0000 9995 余额不足、4000 0000 0000 9987 挂失卡、4000 0000 0000 0069 下次续费失败。UPI 可用 success@okhdfcbank 与 failure@okhdfcbank。BNPL、Apple Pay、Google Pay 及欧洲支付方式在测试模式可用,具体场景以官方测试矩阵为准。
订阅续费测试:可通过更新 next_billing_date 强制续费,例如 client.subscriptions.update('sub_123', { next_billing_date: '2026-05-03T00:00:00Z' })。失败扣款会触发 payment.failed,订阅进入 on_hold 并触发 subscription.on_hold。
Webhook 测试:CLI 与 SDK 分开安装,使用 npm install -g dodopayments-cli 和 dodo login。本地监听命令为 dodo wh listen http://localhost:3000/webhook,需要测试模式密钥,通过出站中继转发真实测试事件,不是隧道。触发模拟事件命令为 dodo wh trigger payment.success http://localhost:3000/webhook,离线可用但载荷未签名,只能用 unsafeUnwrap() 处理,且不可用于同时接收真实流量的端点。网络到达的 Webhook 必须用 webhooks.unwrap() 验证签名。
产品迁移:产品按环境隔离,测试产品 ID 不能用于生产,需在生产模式重建或通过仪表盘导出导入。
上线检查清单:完成 KYC 与业务验证;获取生产 API 密钥并轮换误提交的测试密钥;代码使用 live_mode;Webhook 端点使用 HTTPS 公网地址并更新 URL 与密钥;所有产品在生产模式创建并使用生产产品 ID;返回 URL 指向生产域名;配置支付失败、Webhook 投递和 API 错误的监控,并制定退款与拒付处理方案。
常见错误:未设置 environment 导致命中生产;在生产复用测试产品 ID;忘记重新配置生产 Webhook;未验证 Webhook 签名;混用测试与生产密钥。
限制:资料未提供具体收费、价格或平台支持范围;部分区域支付方式的测试场景需参考官方测试矩阵。