Skip to main content
本ページは サブスクリプションのキャンセル(Merchant API Key) と同一エンドポイントの customer-token 呼び出し視点です。動作とレスポンス構造は同じで、customer パスは下記のキャンセル理由フィールド(任意)を追加で受け付けます。その他は認証方式と呼び出し元のみが異なります。
認証: Session Token — Customer Endpoints を参照(customer または customer ロール)
orderId は session token がバインドされている customer に属している必要があります。ある customer 用に mint されたトークンは、別の customer のサブスクリプションをキャンセルできません。

キャンセル動作

保留中のプラン変更サブスクリプションをキャンセルすると、その変更は無効になります。新サブスクリプションは直接 canceled となり、PSP キャンセルが即時送信されるため、予定の切替時刻に有効化も課金も発生しません。元のサブスクリプションは生効状態に戻りません —— canceling のまま一方向に canceled へ進み、サブスクリプションの再開は 400 を返します。支払いを継続するには新規注文が必要です。
past_due のサブスクリプションのキャンセルは期間終了時ではなく即時に有効となり、「キャンセル予定・X 日まで利用可能」のメールも送信されません(課金期間は既に終了しているため)。このキャンセルは取り消せませんサブスクリプションの再開は「キャンセル要求時点で未払いの請求があった」サブスクリプションに対して 400 を返します。

リクエストボディ

理由が保存されるのは購入者側の認証情報による呼び出しで、かつキャンセルが実際に成功した場合のみです。1 回のキャンセル操作につき 1 行なので、キャンセル → 再開 → 再キャンセルでは 2 行残ります。理由の書き込みは副経路であり、失敗してもキャンセル自体は成功しレスポンスは変わりません。キャンセルが失敗した場合(400 / 500 / 502)は何も保存されません。マーチャントは保存された理由を GraphQL 経由で参照します。 cancelReason を省略した場合の挙動は、呼び出しに使った認証情報によって異なります: 2 つのチャネルは意図的にこのセンチネル値を共有しません。「一度も尋ねていない」と「尋ねたが回答を拒んだ」を同一の値にまとめると、マーチャントは not_provided の割合を解釈できなくなります。自作の連携でも理由の選択肢を提示し、スキップを分母に含めたい場合は、cancelReason を明示的に送信してください(値域は開放されており、例えば not_provided を使えます)。

リクエスト例

成功レスポンス (200)

レスポンスフィールド

エラー

リトライポリシー:4xx は一切リトライしない — リクエストを修正してから再送信。5xx は指数バックオフでリトライ(5s 開始、最大 3 回)。