Documentation Index
Fetch the complete documentation index at: https://waffo.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
两种收银台模式
Waffo 支持两种收银台集成模式,商户根据自身需求选择:
- Waffo 托管收银台(Checkout):Waffo 提供完整支付页面,用户在 Waffo 侧选择支付方式并完成支付
- 商户自建收银台(API 直连):商户自己构建支付页面,用户在商户侧选择支付方式,商户通过 API 参数指定支付通道
方案对比
| 维度 | Waffo Checkout | 商户自建收银台 |
|---|
| 支付方式选择 | 用户在 Waffo 收银台选择 | 用户在商户页面选择 |
| 集成复杂度 | 低(重定向即可) | 高(自建 UI + 指定支付方式参数) |
| 支付方式覆盖 | 自动全覆盖,新增支付方式无需改代码 | 需自行维护支持列表 |
| PCI DSS 合规 | Waffo 负责 | 商户需自行处理(卡支付场景) |
| UI 定制化 | 支持主题色、Logo、语言等 | 完全自定义 |
| 适用场景 | 大多数商户 | 有自建收银台的大型商户 |
Waffo Checkout 传参方案
用户在 Waffo 侧选择支付方式,商户不需要传 payMethodType / payMethodName,Waffo 收银台自动展示所有可用支付方式。
对于以下支付方式,建议传 payMethodType(不传 payMethodName):
| 支付方式 | 建议传参 | 原因 |
|---|
| 卡支付 | payMethodType: "CREDITCARD,DEBITCARD" | Waffo 通过 BIN 自动识别卡类型,减少用户选择成本 |
| VA(虚拟账户) | payMethodType: "VA" | 用户在收银台选择具体银行 |
| 其他 | 不传 | 收银台自动展示所有可用方式 |
最简传参(不指定支付方式)
{
"paymentRequestId": "REQ_20260420_001",
"merchantOrderId": "ORDER_001",
"orderCurrency": "IDR",
"orderAmount": "50000",
"orderDescription": "商品描述",
"orderRequestedAt": "2026-04-20T12:00:00Z",
"notifyUrl": "https://merchant.com/webhook",
"merchantInfo": {
"merchantId": "M000001"
},
"userInfo": {
"userId": "user_001",
"userTerminal": "WEB"
},
"paymentInfo": {
"productName": "ONE_TIME_PAYMENT"
}
}
卡支付建议传参
{
"paymentRequestId": "REQ_20260420_002",
"merchantOrderId": "ORDER_002",
"orderCurrency": "USD",
"orderAmount": "29.99",
"orderDescription": "Premium Plan",
"orderRequestedAt": "2026-04-20T12:00:00Z",
"notifyUrl": "https://merchant.com/webhook",
"merchantInfo": {
"merchantId": "M000001"
},
"userInfo": {
"userId": "user_001",
"userTerminal": "WEB"
},
"paymentInfo": {
"productName": "ONE_TIME_PAYMENT",
"payMethodType": "CREDITCARD,DEBITCARD"
}
}
商户自建收银台传参方案
用户已在商户页面选择了具体支付方式,需要通过参数告诉 Waffo 走哪个通道。
| 场景 | 传参方式 | 示例 |
|---|
| 用户选了 DANA | payMethodType + payMethodName | "EWALLET" + "DANA" |
| 用户选了信用卡 | payMethodType(不传 payMethodName) | "CREDITCARD,DEBITCARD"(Waffo 通过 BIN 自动识别) |
| 用户选了 VA | payMethodType | "VA"(用户在 Waffo 侧选择具体银行) |
卡支付:不需要传 payMethodName,传 payMethodType 即可。Waffo 通过卡号 BIN 自动识别 Visa / Mastercard / JCB / AMEX。VA:只传 payMethodType: "VA",用户在 Waffo 侧选择具体银行。电子钱包:需传 payMethodName 指定具体钱包(如 DANA、GCash),目的是跳过 Waffo 收银台直达支付。Waffo 收银台本身支持所有支付方式的处理流程,传 payMethodName 是为了让用户直接进入指定钱包的支付流程。
电子钱包直连(DANA)
{
"paymentRequestId": "REQ_20260420_003",
"merchantOrderId": "ORDER_003",
"orderCurrency": "IDR",
"orderAmount": "50000",
"orderDescription": "商品描述",
"orderRequestedAt": "2026-04-20T12:00:00Z",
"notifyUrl": "https://merchant.com/webhook",
"merchantInfo": {
"merchantId": "M000001"
},
"userInfo": {
"userId": "user_001",
"userTerminal": "WEB"
},
"paymentInfo": {
"productName": "ONE_TIME_PAYMENT",
"payMethodType": "EWALLET",
"payMethodName": "DANA"
}
}
卡支付直连
{
"paymentRequestId": "REQ_20260420_004",
"merchantOrderId": "ORDER_004",
"orderCurrency": "USD",
"orderAmount": "29.99",
"orderDescription": "Premium Plan",
"orderRequestedAt": "2026-04-20T12:00:00Z",
"notifyUrl": "https://merchant.com/webhook",
"merchantInfo": {
"merchantId": "M000001"
},
"userInfo": {
"userId": "user_001",
"userTerminal": "WEB"
},
"paymentInfo": {
"productName": "ONE_TIME_PAYMENT",
"payMethodType": "CREDITCARD,DEBITCARD"
}
}
VA 直连
{
"paymentRequestId": "REQ_20260420_005",
"merchantOrderId": "ORDER_005",
"orderCurrency": "IDR",
"orderAmount": "100000",
"orderDescription": "商品描述",
"orderRequestedAt": "2026-04-20T12:00:00Z",
"notifyUrl": "https://merchant.com/webhook",
"merchantInfo": {
"merchantId": "M000001"
},
"userInfo": {
"userId": "user_001",
"userTerminal": "WEB"
},
"paymentInfo": {
"productName": "ONE_TIME_PAYMENT",
"payMethodType": "VA"
}
}
嵌入方式
收到 orderAction 后,有三种方式将用户引导到支付页面:
| 方式 | 适用场景 | 说明 |
|---|
| 重定向 | Web 默认方式 | window.location.href = orderAction.webUrl |
| iframe 嵌入 | 不希望用户离开商户页面 | 需配置 allow="payment" 和 Referrer Policy |
| App WebView | 移动 App | 需确认 WebView 支持外部跳转、下载/复制、URL 参数保真等能力 |
详细注意事项参见 Checkout 集成步骤 和 支付方式集成注意事项。