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

动态定价配置

在管理后台实时管理定价方案,无需修改代码或重新部署

动态定价让你直接在管理后台创建、编辑和调整定价方案,无需修改代码或重新部署。默认的静态定价(config/payment.ts)不受影响,两种模式可随时切换。

开启动态定价

  1. 在 .env 中设置:

    PRICING_MODE=dynamic
  2. 确保数据库已创建 pricing_plan 表。新版本模板的数据库结构自带该表,正常初始化(pnpm db:push)即可,无需额外操作;从旧版本升级的项目需要手动补充表结构:

    pnpm db:push          # PostgreSQL
    pnpm db:push:sqlite   # SQLite / D1
  3. 重启应用。定价页面将改为从数据库读取方案。

PRICING_MODE 仅在服务端生效;不设置或设为 static 时行为与之前完全一致。

管理后台

开启动态定价后,访问 /admin/pricing 管理所有方案:

  • 创建 / 编辑方案:填写名称、价格、货币、类型(订阅 / 终身 / 积分包),以及对应支付商的 Price ID / Product ID
  • 启用 / 停用:通过开关控制方案是否在定价页显示
  • 排序:拖拽调整方案在定价页的展示顺序
  • 一键导入:将 config/payment.ts 中已有的静态方案导入数据库,适合首次迁移

导入操作只新增记录、不覆盖已有方案,重复导入会产生重复数据。

核心能力

相比静态定价,动态模式额外提供:

  • 划线价格:设置原价 originalPrice,定价页自动显示删除线和折扣
  • 多语言内容:每个方案可按语言单独设置名称、描述和功能特性,缺失语言自动回退到英语
  • Markdown 功能特性:Features 支持 Markdown 格式,可编写富文本功能亮点
  • 区域筛选:为方案指定适用语言(如仅 zh-CN),定价页按用户语言自动过滤;不指定则对所有用户可见
  • 自定义排序:通过排序权重控制展示顺序,不受代码顺序限制

区域筛选只控制定价页的展示范围,不影响实际支付——用户仍可通过 API 直接购买其他区域的方案。

从静态迁移到动态

本节仅适用于从旧版本升级的已有项目。新版本项目的数据库结构自带 pricing_plan 表,设置 PRICING_MODE=dynamic 后直接在后台导入或创建方案即可,无需执行第 1 步。

  1. 执行 pnpm db:push(或 pnpm db:push:sqlite)为数据库补充 pricing_plan 表
  2. 在 /admin/pricing 点击「Import from Config」导入现有方案
  3. 检查导入结果,特别是各支付商的 Price / Product ID
  4. 设置 PRICING_MODE=dynamic 并重启
  5. 用测试模式跑一遍完整支付流程,确认定价页展示和 Webhook 回调正常

回退:把 PRICING_MODE 改回 static 并重启即可,数据库中的方案会保留。

注意事项

  • 动态方案必须正确填写支付商 ID,否则无法发起支付:Stripe 填 stripePriceId、Creem 填 creemProductId、Dodo 填 dodoProductId、Waffo 填 waffoProductId(PROD_xxx);微信 / 支付宝无需填写
  • 与返利系统完全兼容,佣金按订单实付金额计算,与定价模式无关
  • 运行 pnpm db:seed 可生成各提供商的示例方案(含 Stripe、微信、Creem、PayPal、Dodo、Waffo)。若库中已有方案,seed 会跳过插入,需在管理后台手动新增

参考文档

  • 支付配置概览 — 支付方式和静态定价配置
  • 积分系统指南 — 积分充值和消耗配置
  • 支付测试指南 — 本地开发测试和 Webhook 调试

Waffo Pancake 配置

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

支付测试指南

本地开发环境支付测试和 Webhook 调试

On this page

开启动态定价管理后台核心能力从静态迁移到动态注意事项参考文档