エラーレスポンス仕様
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"
}フィールド説明
| フィールド | 型 | 説明 |
|---|---|---|
status | integer | HTTPステータスコード |
code | string | エラーを識別する一意のコード |
title | string | 人間が読めるエラーの短い説明 |
detail | string | エラーの詳細情報 |
instance | string | エラーが発生したAPIエンドポイントのパス |
type | string | エラーの詳細を説明するドキュメントへのURL |
errors | array | バリデーションエラー時のみ個別のエラー詳細の配列 |
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_registered | Apple Pay ドメイン未登録 |
apple_pay_merchant_validation_failed | Apple Pay マーチャント検証失敗 |
401 Unauthorized
認証が必要または認証に失敗した場合に返却されます。APIキーが無効、または認証情報が不足している場合に発生します。
| コード | 説明 |
|---|---|
unauthorized | 認証失敗または認証情報なし |
402 Payment Required
決済処理が失敗した場合に返却されます。カードが拒否された、カード処理中にエラーが発生した、3Dセキュア認証に失敗したなどの理由で発生します。
| コード | 説明 |
|---|---|
card_declined | カードが拒否された |
processing_error | カード処理中にエラーが発生 |
three_d_secure_failed | 3Dセキュア認証に失敗 |
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 | 冪等性サービスが一時的に利用不可 |