TinyShip
TinyShip
 TinyShip
TinyShip
TinyShip 文档中心
TinyShip 用户指南快速开始基础配置
支付配置指南Stripe 配置PayPal 配置微信支付配置支付宝配置Creem 配置Dodo Payments 配置Waffo Pancake 配置动态定价配置支付测试指南
积分系统配置指南返利系统配置指南
存储服务配置数据库配置验证码配置
开发最佳实践本地 E2E 测试流程
用户指南支付配置

Dodo Payments 配置

配置 Dodo Payments 支付

Dodo Payments 是一个全球化的支付平台,采用 Merchant of Record(记录商家)模式,替开发者处理税务、合规和退款等事务,特别适合面向全球市场的 SaaS 和数字产品。

申请流程

  1. 注册 Dodo Payments 账号

    • 访问 Dodo Payments 官网
    • 注册账号并完成 KYB(企业验证)或 KYC(个人验证)
  2. 获取 API 密钥

    • 登录 Dodo Payments Dashboard
    • 前往 "Developer" → "API Keys"
    • 生成 API Key(以 TSzsgjLa... 格式)
  3. 创建产品

    • 在 Dashboard 的 "Products" 页面创建产品
    • 选择产品类型:Recurring(订阅)或 One-Time(单次付费)
    • 设置价格和币种
    • 记录产品 ID(以 pdt_ 开头),用于配置 dodoProductId
  4. 配置 Webhook

    • 前往 "Developer" → "Webhooks"
    • 添加 Webhook URL:https://yourdomain.com/api/payment/webhook/dodo
    • 选择事件类型:payment 和 subscription
    • 记录 Webhook Signing Key(以 whsec_ 开头)

环境变量配置

在 .env 文件中添加:

# Dodo Payments 配置
DODO_PAYMENTS_API_KEY=TSxxxxxxxxxx
DODO_PAYMENTS_WEBHOOK_KEY=whsec_xxxxxxxxxx
DODO_PAYMENTS_TEST_MODE=true

DODO_PAYMENTS_TEST_MODE=true 表示使用测试模式;生产环境请设置为 false,并使用生产环境的 API Key 和 Webhook Key。

Webhook 配置

必需的事件类型

在 Dodo Dashboard 配置 Webhook 时,选择以下事件类型:

  • payment:支付相关事件
    • payment.succeeded:支付成功(单次付费和积分充值)
    • payment.failed:支付失败
  • subscription:订阅相关事件
    • subscription.active:订阅激活
    • subscription.renewed:订阅续期
    • subscription.cancelled:订阅取消
    • subscription.expired:订阅到期
    • subscription.on_hold:订阅暂停
    • subscription.updated:订阅更新
    • subscription.plan_changed:订阅方案变更

计划配置示例

以下 config/payment.ts 配置仅适用于静态定价模式(默认)。使用动态定价时无需修改此文件,直接在管理后台 /admin/pricing 创建方案并填写对应的 ID 即可。

订阅方案(Recurring)

config/payment.ts
monthlyDodo: {
  provider: 'dodo',
  id: 'monthlyDodo',
  amount: 10,
  currency: 'USD',
  duration: {
    months: 1,
    type: 'recurring'
  },
  dodoProductId: 'pdt_xxxxxxxxxxxxxxxxxxxxx',
  i18n: {
    'en': {
      name: 'Dodo Monthly Plan',
      description: 'Monthly recurring subscription via Dodo Payments',
      duration: 'month',
      features: ['All premium features', 'Priority support']
    },
    'zh-CN': {
      name: 'Dodo 月度订阅',
      description: '通过 Dodo Payments 的月度循环订阅',
      duration: '月',
      features: ['所有高级功能', '优先支持']
    }
  }
}

单次付费方案(One-Time)

config/payment.ts
monthlyDodoOneTime: {
  provider: 'dodo',
  id: 'monthlyDodoOneTime',
  amount: 10,
  currency: 'USD',
  duration: {
    months: 1,
    type: 'one_time'
  },
  dodoProductId: 'pdt_xxxxxxxxxxxxxxxxxxxxx',
  i18n: {
    'en': {
      name: 'Dodo Monthly Plan (One Time)',
      description: 'One-time payment for monthly access via Dodo Payments',
      duration: 'month',
      features: ['All premium features', 'Priority support']
    },
    'zh-CN': {
      name: 'Dodo 月度 (一次性)',
      description: '通过 Dodo Payments 的一次性月度付费',
      duration: '月',
      features: ['所有高级功能', '优先支持']
    }
  }
}

积分充值方案(Credits)

config/payment.ts
creditsDodo: {
  provider: 'dodo',
  id: 'creditsDodo',
  amount: 5,
  currency: 'USD',
  duration: { type: 'credits' },
  credits: 100,
  dodoProductId: 'pdt_xxxxxxxxxxxxxxxxxxxxx',
  i18n: {
    'en': {
      name: '100 Credits Dodo',
      description: 'Purchase 100 AI credits via Dodo Payments',
      duration: 'one-time',
      features: ['100 AI conversations', '100 image generations']
    },
    'zh-CN': {
      name: '100 积分包 Dodo',
      description: '通过 Dodo Payments 购买的 100 个 AI 积分',
      duration: '一次性',
      features: ['100 次 AI 对话', '100 次图片生成']
    }
  }
}

返回 支付配置概览

Creem 配置

配置 Creem 支付

Waffo Pancake 配置

配置 Waffo Pancake 支付(Merchant of Record 模式)

On this page

申请流程环境变量配置Webhook 配置必需的事件类型计划配置示例订阅方案(Recurring)单次付费方案(One-Time)积分充值方案(Credits)