简单版本
直接告诉你的 AI 助手:SKILL.md 时再直接打开下面的官方 Skill 入口。
完整版本
需要端到端完整集成和测试:官方 Waffo Pancake Skill
这是 AI 集成页内的官方 Skill 入口。打开后可查看、复制或下载团队当前实际使用的标准
SKILL.md 文件。@waffo/pancake-ts 是 Waffo Pancake 官方服务端 TypeScript SDK,负责请求签名、收银台会话创建、Webhook 验证和 GraphQL 查询。
AI 编码工作流
当你已经明确业务模式,但希望代理把它整理成一套清晰的 Waffo 产品结构和实施方案时,AI 编码助手最有价值。 典型场景:- 将官网定价页映射成 Waffo 的产品、订阅产品组和动态定价流程
- 判断哪些收费应建模为订阅,哪些应保留为一次性收费
- 设计基于
priceSnapshot的动态定价方案 - 批量生成产品命名、元数据、上线清单
- 审查现有产品目录,找出命名、分组和生产发布上的问题
推荐工作流
1
先描述业务模型
说明你卖什么、如何收费、哪些部分是固定价格、哪些部分按用量或报价动态计算。
2
让代理输出产品规划
让它把你的收费模型映射成一次性产品、订阅产品、产品组和动态定价流程。
3
人工审核
确认产品命名、计费周期、商品类别,以及哪些项目应该保持为一次性收费。
4
落地执行
用输出结果在控制台中创建产品,或进一步生成 SDK / API 集成代码。
推荐提示词
1. 把定价页转成 Waffo 产品结构
2. 规划动态定价
3. 审查现有产品目录
实务判断规则
“订阅型业务”同时包含订阅产品和一次性收费,是完全正常的。建模要服从收费事件,而不是服从公司标签。
不建议这样做
- 不要把私钥或生产环境密钥直接贴进提示词
- 不要在未经人工审核的情况下让 AI 直接发布生产产品
- 不要把所有价格变化都建成新产品;如果金额在运行时计算,应优先考虑
priceSnapshot - 不要把超额计费硬塞进订阅产品;如果它是事件型收费,就应该是一笔一次性收费
常见陷阱 — 先读这里
这些是导致集成失败的常见错误。写代码之前先过一遍。使用场景
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
如果产品已在控制台中创建,复制产品 ID 后即可直接创建收银台会话。在这个流程里,你仍然只需要前面的两个环境变量:API 参考
商店
一次性产品
digital_goods | saas | software | ebook | online_course | consulting | professional_service
订阅产品
订阅产品组
产品组支持共享试用期和订阅计划之间的切换。收银台会话
订单级参数与优先级
通过createSession 传递的参数可以覆盖产品级设置。理解优先级关系对 AI 集成至关重要:
Webhook 集成要点
集成 Webhook 时需要注意以下关键点:
典型 Webhook 处理模式:
取消订阅
GraphQL 查询
只读查询。ID 变量使用String!(不是 ID!)。
Webhook 验证
SDK 内置 test 和 prod 两个环境的公钥。验证只需一次函数调用。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",你的处理程序可以据此区分。
快速上手清单
npm install @waffo/pancake-ts- 配置
WAFFO_MERCHANT_ID和WAFFO_PRIVATE_KEY环境变量(在控制台 → API 与开发页面顶部,点复制按钮获取) - 初始化
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 })