メインコンテンツへスキップ
本ページは サブスクリプションのキャンセル(Merchant API Key) と同一エンドポイントの customer-token 呼び出し視点です。動作、リクエストボディ、レスポンス構造は同じで、認証方式と呼び出し元のみが異なります。
POST /v1/actions/subscription-order/cancel-order
認証: Session Token — Customer Endpoints を参照(customer または buyer ロール)
orderId は session token がバインドされている customer に属している必要があります。ある buyer 用に mint されたトークンは、別の buyer のサブスクリプションをキャンセルできません。

キャンセル動作

現在のステータス動作結果ステータス
pending即時キャンセルcanceled
active課金期間終了時にキャンセル(PSP 経由)canceling → 期間終了時に canceled

リクエストボディ

フィールド必須説明
orderIdstring必須サブスクリプション注文 ID(Short ID フォーマット ORD_xxx

リクエスト例

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

const client = new WaffoPancake({
  sessionToken: window.WAFFO_SESSION_TOKEN, // マーチャントのポータルから注入
  environment: "prod",
});

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

console.log(result.orderId); // "ORD_2aUyqjCzEIiEcYMKj7TZtw"
console.log(result.status);  // "canceling" または "canceled"

成功レスポンス (200)

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

レスポンスフィールド

フィールド説明
orderIdstring注文 ID(Short ID)
statusstring新しい注文ステータス(canceling または canceled

エラー

リトライポリシー:4xx は一切リトライしない — リクエストを修正してから再送信。5xx は指数バックオフでリトライ(5s 開始、最大 3 回)。
ステータスerrors[0].message意味推奨処理
400Missing required field: orderIdリクエストボディに orderId が含まれていないリクエストボディを修正して再送信
400Expected format: ORD_xxx, got "..."orderId Short ID のデコード失敗orderId のフォーマットを修正して再送信
400Subscription cannot be canceled, current status: X注文ステータスが pending または active ではない(canceledcancelingexpired など)サブスクリプションはキャンセル不可
401Authentication failedSession token が無効、期限切れ、または不正な形式Issue Session Token で再発行
403Order does not belong to userトークンの buyer が注文の所有者ではない正しい buyer 用にトークンを mint
404Order not found注文が存在しないorder ID を確認
500Internal server errorサーバ側の予期しない障害指数バックオフでリトライ(5s 開始、最大 3 回)
502Failed to cancel subscriptionローカル更新または PSP キャンセル失敗指数バックオフでリトライ(5s 開始、最大 3 回)