使用结账会话创建一次性产品订单。创建订单后,将消费者重定向到返回的 checkoutUrl 以在 PSP 托管页面完成支付。
POST /v1/actions/onetime-order/create-order
认证方式: API Key
请求体
| 字段 | 类型 | 必需 | 说明 |
|---|
checkoutSessionId | string | 是 | 结账会话 ID(cs_ + UUID 格式) |
billingDetail | object | 是 | 订单的最终账单信息 |
buyerEmail | string | 否 | 消费者邮箱地址 |
buyerIp | string | 否 | 消费者 IP 地址(用于税务管辖区判定) |
successUrl | string | 否 | 覆盖支付成功后的重定向 URL |
账单信息对象
| 字段 | 类型 | 必需 | 说明 |
|---|
country | string | 是 | ISO 3166-1 alpha-2 国家代码 |
isBusiness | boolean | 是 | 是否为企业购买 |
postcode | string | 否 | 邮政编码 |
state | string | 条件 | US 和 CA 必填 |
businessName | string | 条件 | isBusiness 为 true 时必填 |
taxId | string | 条件 | isBusiness 为 true 时欧盟国家必填 |
请求示例
import { WaffoPancake } from "@waffo/pancake-ts";
const client = new WaffoPancake({
merchantId: process.env.WAFFO_MERCHANT_ID!,
privateKey: process.env.WAFFO_PRIVATE_KEY!,
});
const { checkoutUrl } = await client.orders.createOnetimeOrder({
checkoutSessionId: "cs_550e8400-e29b-41d4-a716-446655440000",
billingDetail: {
country: "US",
isBusiness: false,
state: "CA",
postcode: "94105",
},
buyerEmail: "customer@example.com",
});
// Redirect the consumer to complete payment
console.log(checkoutUrl);
成功响应
{
"data": {
"checkoutUrl": "https://checkout.waffo.ai/my-store-abc123/payment/ORDER_TOKEN"
}
}
响应字段
| 字段 | 类型 | 说明 |
|---|
checkoutUrl | string | PSP 托管支付页面 URL。将消费者重定向到此处完成支付。 |
| 状态码 | 消息 | 说明 |
|---|
| 400 | 缺少必填字段 | checkoutSessionId 或 billingDetail 缺失 |
| 400 | 无效的 billingDetail | 账单信息验证失败 |
| 404 | 会话未找到 | 没有匹配给定 ID 的结账会话 |
| 404 | 会话已过期 | 结账会话已过期 |
调用此端点后,将消费者重定向到 checkoutUrl。托管支付页面处理支付收集、3D Secure 认证,并在完成后重定向回您的 successUrl。