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

支付配置指南

TinyShip 支付系统配置指南

支付是我们重要的核心功能,目前我们支持七种支付方式:WeChat Pay、Alipay、Stripe、PayPal、Creem、Dodo Payments 和 Waffo Pancake,并且支持三种付费模式:单次付费、订阅和积分充值(微信支付和支付宝只支持单次付费和积分充值)。

积分系统:如需配置 AI 积分消耗功能,请参阅 积分系统配置指南。

AI 快速配置: 已安装 Agent Skills 的用户可以直接对 AI 说「帮我配置支付」,使用 tinyship-payment skill 交互式完成配置。

定价模式:静态 vs 动态

在开始配置付款计划前,先确定使用哪种定价模式:

  • 静态定价(默认):方案写在 config/payment.ts 中,随代码部署,适合方案固定、很少调整的项目。本文档下面的「配置付款计划」章节即静态模式
  • 动态定价:方案存储在数据库,通过管理后台 /admin/pricing 实时创建和调整,无需重新部署,还支持划线价格、区域筛选、自定义排序等能力。详见动态定价配置

两种模式通过环境变量 PRICING_MODE 随时切换,互不影响。

相关页面

页面路径说明
定价页/pricing展示所有付款计划
支付成功/payment-success支付成功回调页
支付取消/payment-cancel支付取消回调页
用户仪表盘/dashboard查看订阅状态和订单历史

支持的支付方式

支付方式单次付费订阅付费积分充值主要市场币种支持
WeChat Pay是否是中国大陆CNY
Alipay是否是中国大陆CNY
Stripe是是是全球多币种
PayPal是是是全球多币种
Creem是是是全球USD, EUR等
Dodo Payments是是是全球多币种
Waffo Pancake是是是全球多币种(订阅不含 CNY)

配置概览

通过 config/payment.ts 中的 providers 进行设置。建议您根据项目需求和目标市场选择一种支付方式进行配置:

  • 中国大陆用户:推荐 WeChat Pay 或 Alipay
  • 国际用户:推荐 Stripe 或 PayPal
  • 审核通过更容易:推荐 Creem
  • 免处理税务合规:推荐 Dodo Payments 或 Waffo Pancake(Merchant of Record 模式)

特别注意:在本地开发阶段建议优先使用测试/沙盒模式(Stripe 和 Creem 支持,微信支付不支持),所以微信支付如果想测试需要使用真实 0.01 元支付。

详细配置文档

根据你的需求,选择需要配置的支付方式:

微信支付配置

中国大陆用户推荐,支持扫码支付

支付宝配置

中国大陆用户推荐

Stripe 配置

国际用户推荐,支持订阅和一次性支付

PayPal 配置

全球市场,支持订阅和一次性支付

Creem 配置

独立开发者出海推荐,审核简单

Dodo Payments 配置

全球市场 MoR 模式推荐,代处理税务合规

Waffo Pancake 配置

全球市场 MoR 模式,托管结账

动态定价配置

数据库驱动的实时定价管理,无需重新部署

支付测试指南

本地开发测试和 Webhook 调试

配置付款计划

通过 config/payment.ts 中的 plans 配置产品定价方案。这里配置的计划会自动显示在 /pricing 页面中。

动态定价:如果你需要在不重新部署的情况下实时调整定价方案,可以使用动态定价功能。开启后,定价方案将从数据库读取,可通过管理后台 /admin/pricing 随时修改。

计划类型

系统支持三种付费模式:

类型说明适用场景
单次付费 (One-time)用户支付一次获得长期或永久权限终身会员、软件买断、课程购买
订阅付费 (Recurring)按周期自动续费SaaS 服务、会员订阅
积分充值 (Credits)一次购买积分,按使用量消耗AI 对话、图片生成

计划配置结构

每个计划需要配置以下字段:

config/payment.ts
plans: {
  lifetime: {
    provider: 'wechat',           // 支付提供商: 'wechat' | 'alipay' | 'stripe' | 'paypal' | 'creem' | 'dodo'
    id: 'lifetime',               // 计划唯一标识
    amount: 199.00,               // 价格
    originalAmount: 299.00,       // 原价(用于显示折扣)
    currency: 'CNY',              // 货币: 'CNY' | 'USD' | 'EUR' 等
    recommended: true,            // 是否推荐(在定价页高亮显示)
    hidden: false,                // 是否隐藏(不在定价页显示)
    duration: {
      months: 999999,             // 有效期月数(999999 表示终身)
      type: 'one_time'            // 类型: 'one_time' | 'recurring' | 'credits'
    },
    // Creem 专用字段
    creemProductId: 'prod_xxx',   // Creem 产品 ID(仅 Creem 需要)
    // Dodo Payments 专用字段
    dodoProductId: 'pdt_xxx',     // Dodo 产品 ID(仅 Dodo Payments 需要)
    // Stripe 专用字段
    stripePriceId: 'price_xxx',   // Stripe 价格 ID(仅 Stripe 订阅需要)
    i18n: { /* 多语言配置 */ }
  }
}

字段说明

字段类型必填说明
providerstring是支付提供商,决定使用哪个支付渠道
idstring是计划唯一标识,用于 API 调用
amountnumber是价格金额
originalAmountnumber否原价,用于显示折扣信息
currencystring是货币代码(ISO 4217)
recommendedboolean否是否在定价页高亮显示
hiddenboolean否是否隐藏不显示
duration.monthsnumber是有效期月数
duration.typestring是付费类型
creemProductIdstringCreem 必填Creem 平台的产品 ID
dodoProductIdstringDodo Payments 必填Dodo Payments 平台的产品 ID
stripePriceIdstringStripe 订阅必填Stripe 平台的价格 ID

国际化配置

每个计划都需要配置多语言支持:

config/payment.ts
i18n: {
  'en': {                    // 英文
    name: 'Monthly Plan',
    description: 'Perfect for short-term projects', 
    duration: 'month',
    features: ['All premium features', 'Priority support']
  },
  'zh-CN': {                 // 简体中文
    name: '月度订阅',
    description: '每月订阅,灵活管理',
    duration: '月', 
    features: ['所有高级功能', '优先支持']
  }
}

完整示例

以下是一个终身会员计划的完整配置示例:

config/payment.ts
lifetime: {
  provider: 'wechat',
  id: 'lifetime',
  amount: process.env.NODE_ENV === 'development' ? 0.01 : 199.00,
  originalAmount: 299.00,
  currency: 'CNY',
  recommended: true,
  duration: {
    months: 999999,
    type: 'one_time'
  },
  i18n: {
    'en': {
      name: 'TinyShip Complete',
      description: 'Get lifetime access to the complete SaaS starter kit',
      duration: 'lifetime',
      features: [
        'Complete SaaS template source code',
        'Free lifetime updates',
        'Priority customer support',
        'Access to private GitHub repository'
      ]
    },
    'zh-CN': {
      name: 'TinyShip 完整版',
      description: '获得完整SaaS启动套件的终身访问权限',
      duration: '终身',
      features: [
        '完整SaaS模板源码',
        '终身免费更新',
        '优先客户支持',
        '访问GitHub私有仓库'
      ]
    }
  }
}

开发环境测试:示例中使用 process.env.NODE_ENV === 'development' ? 0.01 : 199.00 来区分开发和生产环境的价格,方便测试。

支付流程

支付处理流程

  1. 用户选择计划 → 2. 创建订单 → 3. 跳转支付 → 4. 处理回调 → 5. 更新状态

API 端点

项目提供以下支付相关的 API 端点:

// 发起支付
POST /api/payment/initiate
{
  "planId": "monthly",
  "provider": "stripe"
}

// 支付状态查询  
GET /api/payment/query/:orderId

// 支付回调处理
POST /api/payment/webhook/:provider

// 取消支付
POST /api/payment/cancel/:orderId

参考文档

相关指南

  • 支付测试指南 - 本地开发测试和 Webhook 调试
  • 积分系统指南 - 积分充值和消耗配置

官方文档

  • 微信支付开发文档
  • 支付宝开放平台
  • Stripe 开发文档
  • PayPal 开发者文档
  • Creem API 文档
  • Dodo Payments 文档
  • Waffo Pancake 文档

短信验证登录配置

配置手机短信验证登录

Stripe 配置

配置 Stripe 支付

On this page

定价模式:静态 vs 动态相关页面支持的支付方式配置概览详细配置文档配置付款计划计划类型计划配置结构字段说明国际化配置完整示例支付流程支付处理流程API 端点参考文档相关指南官方文档