diff --git a/README.md b/README.md index 3bb8c3e..b9b5890 100644 --- a/README.md +++ b/README.md @@ -50,3 +50,54 @@ const result = await widgets.confirmPayment({ return_url: 'https://example.com/r ```typescript const result = await widgets.confirmSetup({ return_url: 'https://example.com/return_url' }) ``` + +## エラーハンドリング + +`confirmPayment()` や `confirmSetup()` は正常に処理が進むと画面遷移が発生します。 +これらのメソッドから値が返ってきた場合は `error.type` で種類を判別し、適切なハンドリングを行ってください。 + +### エラータイプ一覧 + +| type | 説明 | 対応方法 | +|------|------|----------| +| `payment_error` | 支払い処理が失敗しました | 利用者に別の支払い情報の入力を促してください | +| `validation_error` | 入力内容に問題があります | フォームにエラーメッセージが自動表示されるため、通常は追加の対応は不要です | +| `api_error` | APIリクエストでエラーが発生しました | `code` を確認し、実装の見直しまたは時間をおいた再試行を検討してください | +| `sdk_error` | SDKの使用方法に問題がある可能性があります | 実装内容の再確認をお願いします | +| `user_error` | キャンセルや支払い方法が利用不可など利用者の操作に起因するエラーです | 通常は追加の対応は不要です | + +### 使用例 + +```typescript +import { PayjpPaymentsError } from '@payjp/payments-js' + +function handleError(error: PayjpPaymentsError) { + switch (error.type) { + case "payment_error": + showMessage("お支払いに失敗しました。別の支払い情報をお試しください。"); + break; + case "validation_error": + // フォームにエラーが自動表示されるため、通常は追加の対応は不要です + break; + case "api_error": + // error.code を確認し、実装の見直しまたは再試行を検討してください + console.error(error.code, error.message); + break; + case "sdk_error": + // SDKの初期化や使用方法に問題がある可能性があります。実装を見直してください + console.error(error.code, error.message); + break; + case "user_error": + // 利用者の操作に起因するエラーです、通常は追加の対応は不要です + break; + default: + // 将来追加される可能性のある新しいエラータイプに対応 + console.error(error.type, error.code, error.message); + } +} + +const { error } = await widgets.confirmPayment({ return_url: "..." }); +if (error) { + handleError(error); +} +``` diff --git a/package-lock.json b/package-lock.json index f14443e..6d47b3f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@payjp/payments-js", - "version": "1.1.0", + "version": "1.1.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@payjp/payments-js", - "version": "1.1.0", + "version": "1.1.1", "license": "MIT", "devDependencies": { "typescript": "~5.7.3", diff --git a/package.json b/package.json index 347017e..0f46fef 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@payjp/payments-js", - "version": "1.1.0", + "version": "1.1.1", "description": "helper module for PAY.JP payments.js", "type": "module", "files": [