用户指南支付配置
支付配置指南
TinyShip 支付系统配置指南
支付是我们重要的核心功能,目前我们支持三种支付方式:WeChat Pay、Stripe 和 Creem,并且支持三种付费模式:单次付费、订阅和积分充值(微信支付只支持单次付费和积分充值)。
积分系统:如需配置 AI 积分消耗功能,请参阅 积分系统配置指南。
相关页面
| 页面 | 路径 | 说明 |
|---|---|---|
| 定价页 | /pricing | 展示所有付款计划 |
| 支付成功 | /payment-success | 支付成功回调页 |
| 支付取消 | /payment-cancel | 支付取消回调页 |
| 用户仪表盘 | /dashboard | 查看订阅状态和订单历史 |
支持的支付方式
| 支付方式 | 单次付费 | 订阅付费 | 积分充值 | 主要市场 | 币种支持 |
|---|---|---|---|---|---|
| WeChat Pay | 是 | 否 | 是 | 中国大陆 | CNY |
| Stripe | 是 | 是 | 是 | 全球 | 多币种 |
| Creem | 是 | 是 | 是 | 全球 | USD, EUR等 |
配置概览
通过 config/payment.ts 中的 providers 进行设置。建议您根据项目需求和目标市场选择一种支付方式进行配置:
- 中国大陆用户:推荐 WeChat Pay
- 国际用户:推荐 Stripe
- 审核通过更容易:推荐 Creem
特别注意:在本地开发阶段我们要使用这些平台的测试/沙盒模式(Stripe 和 Creem 支持,微信支付不支持),所以微信支付如果想测试都是使用真实 0.01 元真实支付进行测试。
详细配置文档
根据你的需求,选择需要配置的支付方式:
配置付款计划
通过 config/payment.ts 中的 plans 配置产品定价方案。这里配置的计划会自动显示在 /pricing 页面中。
计划类型
系统支持三种付费模式:
| 类型 | 说明 | 适用场景 |
|---|---|---|
| 单次付费 (One-time) | 用户支付一次获得长期或永久权限 | 终身会员、软件买断、课程购买 |
| 订阅付费 (Recurring) | 按周期自动续费 | SaaS 服务、会员订阅 |
| 积分充值 (Credits) | 一次购买积分,按使用量消耗 | AI 对话、图片生成 |
计划配置结构
每个计划需要配置以下字段:
plans: {
lifetime: {
provider: 'wechat', // 支付提供商: 'wechat' | 'stripe' | 'creem'
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 需要)
// Stripe 专用字段
stripePriceId: 'price_xxx', // Stripe 价格 ID(仅 Stripe 订阅需要)
i18n: { /* 多语言配置 */ }
}
}字段说明
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
provider | string | 是 | 支付提供商,决定使用哪个支付渠道 |
id | string | 是 | 计划唯一标识,用于 API 调用 |
amount | number | 是 | 价格金额 |
originalAmount | number | 否 | 原价,用于显示折扣信息 |
currency | string | 是 | 货币代码(ISO 4217) |
recommended | boolean | 否 | 是否在定价页高亮显示 |
hidden | boolean | 否 | 是否隐藏不显示 |
duration.months | number | 是 | 有效期月数 |
duration.type | string | 是 | 付费类型 |
creemProductId | string | Creem 必填 | Creem 平台的产品 ID |
stripePriceId | string | Stripe 订阅必填 | Stripe 平台的价格 ID |
国际化配置
每个计划都需要配置多语言支持:
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: ['所有高级功能', '优先支持']
}
}完整示例
以下是一个终身会员计划的完整配置示例:
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 来区分开发和生产环境的价格,方便测试。
支付流程
支付处理流程
- 用户选择计划 → 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