Creem
配置 Creem 网关。
MuseMVP 集成了 Creem 作为支付网关之一,面向独立开发者提供无需美国实体的支付方案。通过统一的 Muse Billing 模块,与 Stripe 共用同一套业务逻辑与数据库表。本文介绍如何配置 Creem 网关并了解其工作原理。
获取 Creem API 密钥
在 Creem Dashboard 获取 API 密钥。把 API 密钥和环境(sandbox 或 production)填入 后台 → 运行时设置(/app/admin/settings),不要写进 .env。

密钥安全
网关凭证加密落库。切勿暴露到前端或版本库。
获取 Creem Webhook 密钥


在 Creem Dashboard 创建 Webhook,将回调地址设为:
https://example.com/api/muse-billing/notify/muse_creem选择需要监听的事件类型(或全部):
checkout.completedsubscription.activesubscription.canceledsubscription.updated

得到 Webhook 密钥后填入 后台 → 运行时设置。保存后请在 Creem 侧确认同一份 secret 仍然匹配。
密钥安全
Webhook secret 加密落库。与 Creem 不一致会导致全部 webhook 被拒绝。
创建产品并得到产品 ID
结账产品 ID 存在 后台 → 运行时设置(billing.productMap)。公开定价页使用稳定套餐 ID(pro_monthly、pro_yearly、lifetime)。

在 Creem Dashboard 创建对应产品后,把产品 ID 填入后台产品映射。
本地开发测试
切换到沙盒环境
确保后台运行时设置里的 Creem 环境为 sandbox,并使用 Creem 提供的测试模式在 Dashboard 中进行支付测试。
测试模式
Creem 沙盒环境下的支付不会产生真实扣款,可安全用于本地调试订阅及一次性购买流程。
工作原理解析
了解 Muse Billing 是如何将 Creem 融入系统中的。
集成文件分布
| 文件 | 职责 |
|---|---|
muse-creem-gateway.ts | Creem 网关实现:launch、Webhook 解析、合约同步。 |
orchestrator.ts | 计费编排层:launch、customer-hub、Webhook 分发。 |
router.ts | API 路由:暴露 /api/muse-billing/* 接口。 |
核心工作流
针对付款和获取 Customer Hub 的动作流程如下:
前端调用 POST /api/muse-billing/launch,传入 productId、gatewayId(可选,默认由 orchestrator 选择)等参数。
服务端从后台 billing.productMap 设置中解析 Creem 价格 ID。
Creem 返回 launchUrl 与 launchSessionId,前端跳转至 Creem 托管的结账页。
用户完成支付后,Creem 发送 Webhook,服务端校验签名并同步合约生命周期和访问区间到数据库。
当用户需要进入平台后,通过调用 POST /api/muse-billing/customer-hub 取得跳转 Creem 客户门户的链接来管理订阅或下载收据等。
相关文档
- Stripe 支付网关 — 另一可选支付网关
- Dodo Payments 网关 — 另一可选支付网关
- Waffo Pancake 网关 — 另一可选支付网关
- 运行时设置 — 网关凭证、默认网关与结账产品 ID
- 应用配置 — 定价目录与稳定套餐 ID

