PAY.JP
PAY.JP

エラーレスポンス仕様

PAY.JP API v2 のエラーレスポンス仕様

PAY.JP API v2 のエラーレスポンスは RFC 9457 (Problem Details for HTTP APIs) に準拠しています。

このページではエラーレスポンスの技術仕様とエラーコードの一覧を提供します。エラーハンドリングの実践的な方法については、エラーハンドリングを参照してください。

レスポンス構造

エラーレスポンスは application/problem+json 形式で返却され、以下のような構造を持ちます。

基本構造

{
  "status": 400,
  "code": "invalid_status",
  "title": "Invalid Status",
  "detail": "This operation can only be executed when the payment_flow status is requires_payment_method. The current status is succeeded.",
  "instance": "/v2/payment_flows/pi_xxx",
  "type": "https://docs.pay.jp/v2/errors/invalid-status"
}

フィールド説明

フィールド説明
statusintegerHTTPステータスコード
codestringエラーを識別する一意のコード
titlestring人間が読めるエラーの短い説明
detailstringエラーの詳細情報
instancestringエラーが発生したAPIエンドポイントのパス
typestringエラーの詳細を説明するドキュメントへのURL
errorsarrayバリデーションエラー時のみ個別のエラー詳細の配列
  • errors 配列の各要素
    • field: エラーが発生したフィールド名(ドット区切りでネストしたフィールド構造を表現)
    • message: エラーメッセージ

バリデーションエラー時の errors 配列

{
  "status": 422,
  "code": "validation_error",
  "title": "Validation Error",
  "detail": "The request parameters didn't pass validation.",
  "instance": "/v2/payment_flows",
  "type": "https://docs.pay.jp/v2/errors/validation-error",
  "errors": [
    {
      "field": "amount",
      "message": "Field required"
    },
    {
      "field": "currency",
      "message": "Input should be 'jpy'"
    }
  ]
}

HTTPステータスコード別エラー一覧

400 Bad Request

クライアントのリクエストに問題がある場合に返却されます。リソースのステータスが操作に適していない、必須パラメータが不足している、リクエストの形式が正しくないなどの理由で発生します。

コード説明
invalid_requestリクエストが無効
invalid_statusリソースの状態が操作に適さない
missing_payment_method支払い方法が必須だが未提供
already_exists_id指定された ID が既に存在
resource_missingカーソルが指すリソースが見つからない
card_number_not_allowedクレジットカード番号の直接送信は禁止
unsupported_payment_method_typeサポートされていない支払い方法タイプ
detached_payment_method_not_usable顧客から切断された支払い方法は使用不可
invalid_idempotency_key冪等性キーの形式が不正
payment_method_not_in_allowed_types支払い方法が許可タイプに含まれない
payment_method_not_owned_by_customer支払い方法が顧客に所有されていない
customer_required_for_payment_method支払い方法指定時に顧客が必須
payment_method_already_attached支払い方法が既に顧客に紐付け済み
payment_method_unattached支払い方法が顧客に紐付けられていない
payment_method_already_detached支払い方法が既に切断済み
already_refunded支払いが既に全額返金済み
refund_exceeds_payment返金額が支払額を超過
apple_pay_domain_not_registeredApple Pay ドメイン未登録
apple_pay_merchant_validation_failedApple Pay マーチャント検証失敗

401 Unauthorized

認証が必要または認証に失敗した場合に返却されます。APIキーが無効、または認証情報が不足している場合に発生します。

コード説明
unauthorized認証失敗または認証情報なし

402 Payment Required

決済処理が失敗した場合に返却されます。カードが拒否された、カード処理中にエラーが発生した、3Dセキュア認証に失敗したなどの理由で発生します。

コード説明
card_declinedカードが拒否された
processing_errorカード処理中にエラーが発生
three_d_secure_failed3Dセキュア認証に失敗
test_card_on_livemode本番環境でテストカードを使用

403 Forbidden

アクセス権限がない場合に返却されます。リソースへのアクセス権限が不足している場合に発生します。

コード説明
forbiddenアクセス権限がない

404 Not Found

指定されたリソースが見つからない場合に返却されます。存在しないリソースIDを指定した場合などに発生します。

コード説明
not_found指定されたリソースが見つからない

409 Conflict

冪等リクエスト機能で、リクエストが現在のリソース状態と競合している場合に返却されます。同じ冪等性キーが異なるパラメータで既に使用されている場合などに発生します。

コード説明
idempotency_conflict同じ冪等性キーが異なるパラメータで使用済み
idempotency_timeout冪等性リクエストのタイムアウト

422 Unprocessable Entity

リクエストパラメータのバリデーションに失敗した場合に返却されます。パラメータの型や形式が正しくない、必須フィールドが不足しているなどの理由で発生します。

コード説明
validation_errorリクエストパラメータのバリデーション失敗

500 Internal Server Error

サーバー内部でエラーが発生した場合に返却されます。

コード説明
internal_server_errorサーバー内部エラー

503 Service Unavailable

サーバーの一時的な障害やメンテナンス中などに発生します。

コード説明
idempotency_infrastructure_error冪等性サービスが一時的に利用不可