简单版本
直接告诉你的 AI 助手:SKILL.md 时再打开下面的官方 Skill 文件。
完整版本
需要带端到端测试的完整集成:官方 Waffo Pancake Skill
从 AI 集成页打开官方 Skill 文件,即可查看、复制或下载团队实际使用的标准
SKILL.md。@waffo/pancake-ts 是 Waffo Pancake API 的官方服务端 TypeScript 客户端,负责请求签名、收银台会话创建、Webhook 验证和 GraphQL 查询。
AI 编码工作流
当你已经明确业务模式,但希望 AI 帮你把它整理成一套清晰的 Waffo 产品目录和实施方案时,AI 编码代理最有价值。 典型任务:- 将定价页转换成 Waffo 产品和产品组
- 判断哪些收费应建模为订阅产品,哪些应保留为一次性收费
- 设计基于
priceSnapshot的动态定价流程 - 批量生成产品定义、元数据和上线清单
- 审查现有产品目录的命名、套餐结构和生产就绪度
推荐工作流
1
描述业务模型
说明你卖什么、客户如何被收费、哪些部分是固定价格、哪些部分按用量计算。
2
让代理输出产品目录规划
让它把你的收费项映射成一次性产品、订阅产品、产品组,以及可选的动态定价流程。
3
审核输出结果
确认产品命名、计费周期、税务类别,以及哪些附加项应该保持为一次性收费。
4
落地实施
用输出结果在控制台中创建产品,或进一步生成 SDK / API 集成代码。
提示词模板
1. 把定价页转成 Waffo 产品结构
2. 规划动态定价
3. 审查现有产品目录
实务判断规则
订阅型业务同时创建订阅产品和一次性收费是完全正常的。收费模型应该匹配业务事件,而不是公司标签。
不建议这样做
- 不要把私钥或生产环境密钥直接贴进提示词
- 不要在未经人工审核的情况下让 AI 代理直接发布生产产品
- 如果最终金额在运行时计算,不要把每种价格变体都建成单独的产品
- 如果收费是事件型的,不要把超额计费硬塞进订阅产品
常见陷阱 — 先读这里
这些是导致集成失败的常见错误。写任何代码之前先过一遍。使用场景
Waffo Pancake 是一个 Merchant of Record(MoR)支付平台。SDK 适合有以下需求的项目:- SaaS 订阅计费 — 月付/年付计划,支持升降级(例如 Free/Pro/Team 层级)
- 数字商品销售 — 电子书、模板、课程、许可证的一次性购买
- 按次付费 — 按下载、API 调用或生成报告收费
- 混合模式 — 订阅 + 一次性购买组合
安装与配置
WAFFO_MERCHANT_ID 指的是你的 Merchant ID(商户 ID),不是 storeId,也不是 URL 里的商店标识。storeId 仍然是当前 API 模型的一部分,在商店和产品管理流程中会继续使用,不要把这两个概念混在一起。
对第一版能跑通的接入来说,只需要这两个环境变量:WAFFO_MERCHANT_ID 和 WAFFO_PRIVATE_KEY。Store ID 和 Product ID 属于运行时值,可以放在代码、应用配置或你自己的数据库里。
PEM 私钥处理
转义换行符(最简单):快速开始:路径 A
快速开始:路径 B
如果产品已在控制台中创建,复制 Product ID 后即可直接创建收银台。在这个流程里,你仍然只需要前面的两个环境变量:API 参考
商店
一次性产品
digital_goods | saas | software | ebook | online_course | consulting | professional_service
订阅产品
订阅产品组
产品组支持共享试用期和订阅产品之间的计划切换。收银台会话
订单级参数与优先级
通过createSession 传递的参数可以覆盖产品级设置。理解优先级关系对 AI 集成至关重要:
Webhook 集成要点
集成 Webhook 时需要注意以下关键点:
典型 Webhook 处理模式:
取消订阅
GraphQL 查询
只读。ID 变量使用String!(不是 ID!)。
Webhook 验证
SDK 内置两个环境的公钥。验证只需一次函数调用。Next.js App Router
Express
Hono
验证选项
事件类型
事件结构
配置 Webhook URL
一个商店可以有多条 webhook,每条投递到不同渠道(http、feishu、discord、telegram、slack)。每个渠道和环境各注册一条记录:
Store.storeWebhooks 字段 — 这是唯一的查询入口。
错误处理
errors[0] 是根本原因(最深层),errors[n] 是最外层调用者。
开发提示
- Webhook 隧道 — 使用
cloudflared,不要用 localtunnel(见常见陷阱)。
-
幂等性自动处理 — SDK 根据
merchantId + path + body生成确定性键。重试是安全的。 -
Test → Prod 工作流 — 产品默认创建在 test 环境。使用
.publish()发布到生产环境。Webhook 事件包含mode: "test" | "prod",你的处理程序可以据此区分。
控制台 UI 术语表
控制台支持英文、中文和日文。当文档引用控制台位置(例如”前往 Integration”)时,不同语言下的标签可能不同。使用下表找到正确的菜单项。导航
关键字段
模式与操作
产品与计费
状态
在哪里找到各类 ID
快速上手清单
npm install @waffo/pancake-ts- 配置
WAFFO_MERCHANT_ID和WAFFO_PRIVATE_KEY环境变量(见上方”在哪里找到各类 ID”) - 初始化
new WaffoPancake({ merchantId, privateKey }) - 创建或引用商店
- 如果商户名下有多个商店,先确认产品应该归属哪个商店
- 创建或引用产品
- 创建收银台:
client.checkout.createSession(...)→ 重定向到checkoutUrl - 在沙盒中使用测试卡
4576750000000110(成功)或4576750000000220(拒绝)测试 - 处理 Webhook:
verifyWebhook(rawBody, sig)— 必须使用request.text() - 配置 Webhook URL:
client.webhooks.add({ storeId, channel: "http", url, events, testMode })