项目中关于Waffo Pancake支付相关配置
发给 ChatGPT / Claude 等 AI,可更快消化本页并上手上站。
朋友,可能你看到这篇文章的时候和我写的时候相隔很久,文章中所说可能已经不是对应官网的最新信息,需要你将文章发给AI让其确认是否还可行后再去做,感谢理解
Waffo Pancake 接入指南
附上 Waffo.ai 哥飞专属注册优惠
国内个人身份的朋友注册 Waffo,用哥飞邀请码:https://waffo.ai/?ref=GEFEI01
1000 USD 交易免手续费(2027 年 3 月 31 日前有效)
审核绿色通道,1 个工作日内完成初审或反馈
社群专人客服,有问题随时问
有海外公司的,注册 https://waffo.com
信息截至 2026 年 10 月,各平台政策常变,以官方为准
本指南介绍如何在 GPT Image 2 中配置与使用 Waffo Pancake 处理一次性点数购买与循环订阅支付。
Waffo Pancake 是一家 Merchant of Record(MoR,记录商) 平台,以法定卖家身份处理全球税务计算、代收、合规与跨境结算。
GPT Image 2 采用官方 @waffo/pancake-ts SDK,集成 Waffo 托管结账收银台与消费者门户,卡片敏感信息完全不经过您的服务器。
GPT Image 2 将所有 Waffo 配置统一收敛至管理后台(Admin Settings)在线可视化管理,无需在 .env 中维护繁琐的环境变量,并支持测试与生产环境即时切换。
订阅为什么没有人民币币种:
提现:顾客付款后,这笔钱进入店铺余额,等待约 10 个工作日,期间用于覆盖可能发生的退款或拒付。工作日按香港公众假期计算,遇长假实际日历天数会超过两周
!!!注意:提现手续费 1%,最低收费 $10(minimum payout fee),不是最低提现金额 $10
| 提现金额 | 手续费 | 到手金额 |
|---|---|---|
| $70 | $10 | $60 |
| $500 | $10 | $490 |
| $1,000 | $10 | $990 |
| $2,000 | $20 | $1,980 |
一、前置准备与账号设置
GPT Image 2 默认内置一次性积分包 credits-package 与订阅计划(按月 starter-monthly、按年 premium-yearly),按照以下步骤完成开通与配置:
1. 创建 Waffo 账户
在 Waffo Pancake 控制台 注册商户账户,并在引导流程中创建一个商店。参考 Waffo 快速入门。
2. 获取 API 密钥
从 Waffo 控制台获取 Merchant ID 与私钥:
- 进入 Waffo 控制台 > API & Development,点击 Create API Key 生成密钥对。
- 复制 Merchant ID(以
MER_开头)和完整的 PEM 格式私钥。 - 妥善保存私钥。API 密钥在创建时即绑定至测试(Test)或生产(Production)环境,请为不同环境分别创建对应密钥。

注意:
Merchant ID为商户 ID(以MER_开头),不是 storeId,也不是 URL 中的商店标识。- 私钥必须包含完整头部与尾部(支持多行完整粘贴):
-----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC... -----END PRIVATE KEY-----
3. 设置 Webhook
设置 Webhook 以接收异步履约通知:
- 进入 Waffo 控制台 > Settings > Webhooks,点击 Add Webhook。
- Payload 格式:选择
Raw(只有 Raw 格式会携带用于验签的X-Waffo-Signature请求头)。 - Webhook URL 严格填写:
https://YOUR-DOMAIN.com/api/payment/notify/waffo - 订阅事件:建议勾选以下核心事件:
order.completed(一次性点数购买完成)subscription.activated(订阅首次激活)subscription.payment_succeeded(订阅续费扣款成功)subscription.renewed(订阅续订成功)subscription.updated(订阅信息更新)subscription.canceling(客户发起取消申请)subscription.canceled(订阅正式终止)refund.succeeded(退款完成)
说明:
与 Stripe 不同,Waffo 无需在后台单独配置 Webhook 密钥。@waffo/pancake-tsSDK 内置了官方公钥并根据当前环境自动识别,GPT Image 2 服务端通过verifyWebhook()验证签名与防范重放攻击。
4. 创建产品与价格计划
在 Waffo 中创建产品并获取 Product ID(以 PROD_ 开头):
- 进入 Waffo 控制台 > Products,点击 Create Product。
- 对应 GPT Image 2 的方案创建以下产品:
- 一次性点数包(
credits-package):- 产品类型:
One-time - 名称:例如
500 Credits Package - 设置币种与金额(如 USD 10.99,或根据需要添加 CNY 69.99 币种支持)
- 保存并复制产品 ID(
PROD_...)
- 产品类型:
- 入门版方案月付(
starter-monthly):- 产品类型:
Subscription - 计费周期:
Monthly - 设置币种与金额(如 USD 9.99 / 月)
- 保存并复制产品 ID(
PROD_...)
- 产品类型:
- 高级版方案年付(
premium-yearly):- 产品类型:
Subscription - 计费周期:
Yearly - 设置币种与金额(如 USD 99.99 / 年)
- 保存并复制产品 ID(
PROD_...)
- 产品类型:
- 一次性点数包(
提示:如需支持中文收银台或不同非美金币种,可编辑产品并在 Pricing 设置中配置对应货币与本地化信息。
二、在管理后台完成配置
以管理员身份登录 GPT Image 2 后台,访问 系统设置 > 支付设置(/admin/settings,Payment 标签页):
在 Waffo Pancake 分组下配置以下参数:
| 配置项名称 | 键名(Key) | 类型 | 说明与示例 |
|---|---|---|---|
| Enable Waffo Pancake | waffo_enabled |
开关 | 开启以启用 Waffo 支付通道 |
| Environment | waffo_environment |
单选下拉 | 选择 test(测试)或 production(生产环境) |
| Merchant ID | waffo_merchant_id |
文本 | 填入 MER_ 开头的商户 ID |
| Private Key | waffo_private_key |
密码文本 | 完整粘贴包含 PEM 标头的私钥 |
| Product IDs Mapping | waffo_product_ids_mapping |
多行文本 | 将 pricing 中的 product_id 映射到 Waffo 产品 ID(见下文) |
配置产品映射表(Product IDs Mapping)
GPT Image 2 的商品 ID 定义在 src/config/locale/messages/{zh,en}/pages/pricing.json 中(credits-package、starter-monthly、premium-yearly)。
在管理后台的 Waffo 产品 ID 映射 中填入合法的 JSON 映射:
{
"credits-package": "PROD_xxx",
"starter-monthly": "PROD_xxx",
"premium-yearly": "PROD_xxx"
}
支持按币种差异化映射(可选)
如果同一商品在不同币种下对应不同 Waffo 产品,映射表支持 ${product_id}_${currency} 优先级匹配:
{
"credits-package": "PROD_USD_xxx",
"credits-package_CNY": "PROD_CNY_xxx",
"starter-monthly": "PROD_MONTHLY_xxx",
"premium-yearly": "PROD_YEARLY_xxx"
}
结账 API 会优先检索匹配当前币种的 key,找不到时自动回退到基础 product_id。
设为默认支付方式(可选)
如需将 Waffo 作为定价页面的首选支付通道,可在 Default Payment Provider 下拉框中选择 Waffo Pancake。
三、支付实现与运行机制
1. 认证收银台与语言自适应
- 买家身份绑定(Authenticated Checkout):服务端发起结账时,自动将当前登录用户的
user.id注入buyerIdentity,并将orderNo作为商户外部订单号(orderMerchantExternalId)传递给 Waffo。 - 收银台语言自适应:系统根据用户当前站点的 locale 自动转换收银台语言(中文转为
zh-Hans,英文保持en),保证支付体验无缝贴合。 - 页面回跳定向:一次性点数购买跳回
/settings/credits(积分明细页),循环订阅计划跳回/settings/billing(账单与订阅页)。
2. 同步回跳轮询(保证即时到账与无公网调试)
当用户在 Waffo 收银台完成付款跳回 /api/payment/callback?order_no=... 时:
- 服务端将商户订单号
orderNo作为查询标识,直接调用 Waffo GraphQL API 检索交易状态:query ($ref: String!) { payments(filter: { orderMerchantExternalId: { eq: $ref } }) { id status orderId snapshotAmountDetails { currency total } subscriptionOrder { ... } } } - 平滑轮询机制:Waffo 在跳转后可能需要短暂瞬间同步支付状态。若状态为
processing,服务端会自动以 1 秒间隔重试轮询至多 5 次。状态确认为成功后,立即完成订单标记并下发积分。 - 这意味着即使本地没有公网 Webhook 隧道,测试支付也能在浏览器跳回瞬间完成权益发放!
3. Webhook 权威异步履约
线上运行依靠 /api/payment/notify/waffo 端点进行双重保障与订阅生命周期维护:
| 事件名称 | 业务处理逻辑 |
|---|---|
order.completed |
一次性点数包支付完成,标记订单已支付并为用户账号下发积分 |
subscription.activated |
订阅首次激活,记录订阅并下发首期权益积分 |
subscription.payment_succeeded / subscription.renewed |
周期自动扣款续费,幂等性校验后为新周期发放积分并延长到期时间 |
subscription.updated |
订阅信息变更,自动同步起止时间与计划状态 |
subscription.canceling |
客户发起取消(周期末生效),本地订阅标记为待取消(Pending Cancel) |
subscription.canceled |
订阅正式终止,更新本地订阅状态为已取消 |
refund.succeeded |
收到退款通知,原订单标记为失败并自动处理关联积分与订阅 |
安全环境校验:
Webhook 负载携带mode(test或prod),服务端会自动与管理后台当前配置的waffo_environment进行比对,环境不一致的请求将被自动拦截,防止测试事件污染生产数据库。
四、本地联调与生产上线
本地联调
- 在管理后台将
waffo_environment设为test,填入测试环境的Merchant ID与Private Key。 - 配置好测试产品的
waffo_product_ids_mapping。 - 访问
http://localhost:3000/pricing发起购买。由于具备同步回跳轮询机制,可以直接完成结账跳回与点数充值测试。 - 若需验证异步续订等长周期 Webhook,可通过隧道工具暴露本地端口:并在 Waffo 控制台添加对应的 Webhook 地址(格式为
# 使用 cloudflared cloudflared tunnel --url http://localhost:3000Raw)。
生产上线检查清单
- 商户审核:完成 Waffo 商店审核 / KYB 认证,以启用真实资金清结算。
- 发布产品:在 Waffo 控制台将产品从测试环境发布(Publish)至生产环境,获取生产环境下的
PROD_...ID。 - 获取生产密钥:在 Waffo 控制台生成生产环境专用的 API 密钥。
- 配置生产 Webhook:在 Waffo 控制台添加正式 Webhook:
https://YOUR-DOMAIN.com/api/payment/notify/waffo,格式选择Raw。 - 更新管理后台配置:
- 将
waffo_environment切换为production。 - 填入生产环境的
Merchant ID与Private Key。 - 更新
waffo_product_ids_mapping为生产环境的产品 ID。
- 将
五、消费者客户门户
Waffo 提供官方托管的消费者门户:
https://pancake.waffo.ai/consumer/portal/login
用户使用结账时填写的邮箱,通过一次性邮箱验证码(Magic Link)直接免密登录。用户可在门户中:
- 查看活跃订阅、下次扣费时间与历史发票
- 自主取消或恢复订阅
- 下载官方税务发票与收据 PDF
- 更新绑定的信用卡信息
六、测试卡信息
在 Waffo 测试模式(Test)下,可以使用以下测试卡进行模拟支付:
| 卡种 | 卡号 | 有效期 | CVC | 模拟场景 |
|---|---|---|---|---|
| Visa | 4576 7500 0000 0110 |
任意未来月份(如 12/28) | 任意 3 位(如 123) | 正常支付成功 |
| Mastercard | 2226 9000 0000 0110 |
任意未来月份(如 12/28) | 任意 3 位(如 123) | 正常支付成功 |
| Visa | 4576 7500 0000 0220 |
任意未来月份(如 12/28) | 任意 3 位(如 123) | 模拟 3D Secure 验证 |
在 Waffo 托管结账页面中,也可以直接点击 Quick Fill 下的 Success 按钮一键自动填充测试卡。

