Stripe Node.js ライブラリでは、各エラーオブジェクトに type
属性が設定されています。応答方法については、各タイプのドキュメントをご覧ください。
支払いエラー カード以外の支払いエラー このセクションのすべての内容はカード以外の支払いにも適用されます。歴史的理由から、支払いエラーには、StripeCardError のタイプがあります。しかし、実際には決済手段に関係なく、あらゆる支払いの問題を表す可能性があります。
支払いエラー (歴史的理由から「カードエラー」と呼ばれることもあります) は、幅広い一般的な問題から発生し、以下の 3 つのカテゴリーに分類されます。
これらのカテゴリーの区別や対応方法の詳細については、エラーコード 、拒否コード 、支払い結果 をご覧ください。
(エラーオブジェクトから支払い結果を見つけるには、最初に、関連する Payment Intent と作成された最新の Charge を取得します。以下の例でデモンストレーションをご覧ください。)
const stripe = require ( 'stripe' ) ( 'sk_test_4eC39HqLyjWDarjtT1zdp7dc'
) ;
async function exampleFunction ( args ) {
try {
const paymentIntent = await stripe . paymentIntents . create ( args ) ;
} catch ( e ) {
console . log ( e )
const charge = await stripe . charges . retrieve ( e . payment_intent . latest_charge )
if ( e . type === 'StripeCardError' ) {
if ( charge . outcome . type === 'blocked' ) {
console . log ( 'Payment blocked for suspected fraud.' )
} else if ( e . code === 'card_declined' ) {
console . log ( 'Payment declined by the issuer.' )
} else if ( e . code === 'expired_card' ) {
console . log ( 'Card expired.' )
} else {
console . log ( 'Other card error.' )
}
}
}
}
API バージョン 2022-08-01 以前のユーザー:
(エラーオブジェクトから支払い結果を見つけるには、最初に、関連する Payment Intent と 作成された最新の Charge を取得します。下記の例でデモンストレーションをご覧ください。)
const stripe = require ( 'stripe' ) ( 'sk_test_4eC39HqLyjWDarjtT1zdp7dc'
) ;
async function exampleFunction ( args ) {
try {
const paymentIntent = await stripe . paymentIntents . create ( args ) ;
} catch ( e ) {
console . log ( e )
if ( e . type === 'StripeCardError' ) {
if ( e . payment_intent . charges . data [ 0 ] . outcome . type === 'blocked' ) {
console . log ( 'Payment blocked for suspected fraud.' )
} else if ( e . code === 'card_declined' ) {
console . log ( 'Payment declined by the issuer.' )
} else if ( e . code === 'expired_card' ) {
console . log ( 'Card expired.' )
} else {
console . log ( 'Other card error.' )
}
}
}
}
テストカードを使用して、一般的な支払いエラーをトリガーすることができます。オプションについては、以下のリストをご覧ください。
以下のテストコードは、いくつかの可能性を示しています。
exampleFunction ( {
currency : 'usd' ,
amount : 2000 ,
confirm : true ,
payment_method : ,
} )
Payment blocked for suspected fraud.
支払いが不正使用の疑いのためにブロックされた タイプ StripeCardError
コード const charge = await stripe.charges.retrieve(e.payment_intent.latest_charge)
charge.outcome.type === 'blocked'
コード e.payment_intent.charges.data[0].outcome.type === 'blocked'
問題 Stripe の不正使用防止システムである Radar によって支払いがブロックされました 解決方法
このエラーは、組み込みが正常に機能している場合でも発生することがあります。このエラーを検出して、別の決済手段を使用するように顧客に求めます。
正当な支払いのブロックを減らすには、以下を試します。
Radar for Teams の顧客は、以下の追加のオプションを使用できます。
特定の支払いを免除するには、許可リストに追加します。Radar for Fraud Teams リスク許容度を変更するには、リスク設定 を調整します。Radar for Teams 支払いをブロックする基準を変更するには、カスタムルール を使用します。Radar for Teams 不正使用をシミュレーションするテストカード を使用して、組み込みの設定をテストすることができます。カスタムの Radar ルールを使用している場合は、Radar ドキュメント に記載されているテストに関するアドバイスに従ってください。
支払いがカード発行会社によって拒否された タイプ StripeCardError
コード e.code === 'card_declined'
問題 カード発行会社によって支払いが拒否されました。 解決方法
このエラーは、システムが正常に機能している場合でも発生することがあります。このエラーは、カード発行会社によるアクションを反映しており、そのアクションは正当である可能性があります。適切な次のステップを判断するには、拒否コードを使用します。各コードに対する適切な対応については、拒否コードに関するドキュメント をご覧ください。
以下も行うことができます。
成功した支払いと拒否された支払いをシミュレーションするテストカード を使用して、組み込みで支払い拒否を処理する方法をテストします。
他の支払いエラー タイプ StripeCardError
問題 別の支払いエラーが発生しました。 解決方法 このエラーは、組み込みが正常に機能している場合でも発生することがあります。適切な次のステップを判断するには、エラーコードを使用します。各コードに対する適切な対応については、エラーコードに関するドキュメント をご覧ください。
無効なリクエストエラー タイプ StripeInvalidRequestError
問題 API コールのパラメーターが誤っているか、状態が誤っているか、方法が無効でした。 解決方法 大半の場合、問題はリクエスト自体にあります。パラメーターが無効であるか、組み込みの現在の状態では実行でないかのどちらかです。問題の詳細については、エラーコードのドキュメント をご覧ください。 ご参考までに、e.doc_url
のリンクからエラーコードに関するドキュメントをご覧いただけます。 エラーが特定のパラメーターに関連している場合は、e.param
を使用して、そのパラメーターを判断します。
接続エラー タイプ StripeAPIConnectionError
問題 お客様のサーバーと Stripe の間でネットワークの問題が発生しました。 解決方法
API コールの結果は不確定なものとして扱います。成功または失敗の断定をしないでください。
成功したかどうかを確認するには、以下のようにします。
関連オブジェクトを Stripe から取得して、ステータスを確認します。 操作の成功または失敗を示す Webhook 通知をリッスンします。 接続エラーからの回復を容易にするには、以下のようにします。
オブジェクトを作成または更新するときに、べき等キー を使用します。これにより、接続エラーが発生した場合に、2 つ目のオブジェクトを作成したり 2 度更新するリスクを生じさせることなく、リクエストを安全に繰り返すことができます。成功または失敗の明確な結果を得られるまで、同じべき等キーを使用してリクエストを繰り返します。この対策に関する高度なアドバイスについては、低レベルのエラー処理 をご覧ください。 自動リトライ をオンにします。これにより、Stripe は自動的にべき等キーを生成して、安全な状況でリクエストを繰り返します。このエラーにより他のエラーが隠される場合があり、接続エラーが解決された後で他のエラーが明らかになる可能性があります。元のリクエストと同じように、これらのすべての解答にエラーがないかを確認してください。
API エラー タイプ StripeAPIError
問題 Stripe 側で問題が発生しました (稀な状況です)。 解決方法
API コールの結果は不確定なものとして扱います。成功または失敗の断定をしないでください。
Webhook を使用して結果に関する情報を確認します。可能な限り、Stripe は問題を解決するときに作成する新しいオブジェクトに関する Webhook を送信します。
異常な状況下で最大限の堅牢性を得るために組み込みを設定するには、サーバーエラーに関する詳しい説明 をご覧ください。
認証エラー タイプ StripeAutheticationError
問題 Stripe は、提供された情報では認証できません。 解決方法
べき等エラー タイプ StripeIdempotencyError
問題 別のパラメーターを渡してリクエストを再試行するなど、予期しないものにべき等キー が使用されました。 解決方法 べき等キーを使用した後は、同一の API コールでのみ再使用してください。 255 文字の制限内でべき等キーを使用してください。
権限エラー タイプ StripePermissionError
問題 このリクエストに使用された API キーには必要な権限がありません。 解決方法 アクセスできないサービスに制限付き API キー を使用していませんか? Are you performing an action in the Dashboard while logged in as a user role that lacks permission?
レート制限エラー タイプ StripeRateLimitError
問題 短時間のうちに過剰な回数の API コールが行われました。 解決方法 単一の API コールでこのエラーがトリガーされた場合は、しばらくしてからもう一度お試しください。 レート制限を自動的に処理するには、遅延後に API コールを再試行して、エラーが続く場合には遅延時間を飛躍的に増加させます。詳細については、レート制限 に関するドキュメントをご覧ください。 トラフィックが大幅に増えることが予想され、レート制限の引き上げをご希望の場合は、事前にサポートまでお問い合わせください 。
署名確認エラー タイプ StripeSignatureVerificationError
問題 Webhook の署名確認 が使用されており、Webhook イベントが本物であるかどうかを確認できませんでした。解決方法
このエラーは、組み込みが正常に機能している場合でも発生することがあります。Webhook の署名確認を使用する際に、サードパーティーが偽物の Webhook や悪意のある Webhook の送信を試みると、確認が失敗してこのエラーが発生します。このエラーを検出して、400 Bad Request
ステータスコードで応答してください。
受け取るはずがないエラーを受け取った場合、(Webhook の発信者が Stripe であることが明らかな場合など)、Webhook の署名の確認 に関するドキュメントをご覧ください。具体的には、正しいエンドポイントシークレットを使用していることを確認します。これは、API キーとは別のものです。