跳转到主要内容
取消活跃或待处理的订阅。行为取决于当前订阅状态。
POST /v1/actions/subscription-order/cancel-order
认证方式: API Key(merchant、owner 角色)
此端点也有 customer 侧的 session-token 调用流程:见 取消订阅(Customer)

取消行为

当前状态操作结果状态
pending立即取消canceled
active在周期结束时取消(通过 PSP)canceling -> 周期结束时变为 canceled
  • pending:直接取消,状态变为 canceled
  • active:触发 PSP 取消(在计费周期结束时生效)。本地状态变为 canceling,然后在周期结束时通过 Webhook 更新为 canceled

请求体

字段类型必需说明
orderIdstring订阅订单 ID(Short ID 格式 ORD_xxx

请求示例

import { WaffoPancake } from "@waffo/pancake-ts";

const client = new WaffoPancake({
  merchantId: process.env.WAFFO_MERCHANT_ID!,
  privateKey: process.env.WAFFO_PRIVATE_KEY!,
});

const result = await client.orders.cancelSubscription({
  orderId: "ORD_2aUyqjCzEIiEcYMKj7TZtw",
});

console.log(result.orderId); // "ORD_2aUyqjCzEIiEcYMKj7TZtw"
console.log(result.status);  // "canceling" or "canceled"

成功响应 (200) — 活跃订阅

{
  "data": {
    "orderId": "ORD_2aUyqjCzEIiEcYMKj7TZtw",
    "status": "canceling"
  }
}

成功响应 (200) — 待处理订阅

{
  "data": {
    "orderId": "ORD_2aUyqjCzEIiEcYMKj7TZtw",
    "status": "canceled"
  }
}

响应字段

字段类型说明
orderIdstring订单 ID(Short ID)
statusstring新的订单状态(cancelingcanceled

错误响应

重试策略:4xx 一律不要重试 — 修正请求后重发。5xx 指数退避重试(起步 5s,最多 3 次)。
状态码errors[0].message含义推荐处理
400Missing X-Context-Merchant-Id headerAPI Key 认证下 merchant 上下文缺失检查认证流水线
400Missing required field: orderId请求体未提供 orderId修正请求体后重新提交
400Expected format: ORD_xxx, got "..."orderId Short ID 解码失败修正 orderId 格式后重新提交
400Subscription cannot be canceled, current status: X订单状态非 pendingactive(如已 canceledcancelingexpired该订阅已不可取消
401Authentication failedAPI Key 签名无效检查认证请求头
403Order does not belong to user归属校验失败验证调用方拥有该订单
404Order not found订单不存在验证 order ID
500Internal server error服务端意外失败指数退避重试(起步 5s,最多 3 次)
502Failed to cancel subscription本地更新或 PSP 取消失败指数退避重试(起步 5s,最多 3 次)