銀行認証なしのカード支払い
よりシンプルな地域限定の実装を構築します。
この実装は、アメリカとカナダのカードのみを受け付けるビジネスをサポートしています。シンプルですが、グローバルな顧客ベースをサポートするように拡張することはできません。
この組み込みはどのように機能しますか?
これはグローバルな組み込みとはどう違いますか?
成長を遂げている企業やグローバル企業には、Stripe のグローバルなシステムを使用して、銀行の 2 段階認証の要求に対応し、顧客がより広範な支払い方法を使用できるようにすることをお勧めします。
決済フォームの構築クライアント側
Stripe.js の一部である Elements は、顧客からカード情報を収集するドロップイン UI コンポーネントを提供します。これらは Stripe がオンラインで提供し、支払いフォーム内に iframe として配置されるため、顧客のカードの詳細はお客様のコードに触れません。
Stripe の設定サーバ側
アプリケーションから Stripe API にリクエストを作成するには、公式ライブラリを使用します。
支払いの作成サーバ側
サーバにエンドポイントを設定し、クライアントからリクエストを受信します。
Stripe は PaymentIntent (支払いインテント) オブジェクトを使用して、顧客から支払いを回収する意図を示し、プロセス全体を通して請求の実施と支払い状態の変化を追跡します。
クライアント側ではなく、信頼できる環境のサーバ側で常に支払い金額を指定してください。これにより、悪意のある顧客が独自の金額を選択できないようにします。
ステップ 1 の AJAX リクエストに応答する HTTP エンドポイントを作成します。そのエンドポイントで、顧客にいくら請求するかを決定します。支払いを作成するには、以下のコードで、ステップ 1 からの PaymentMethod ID を使用して PaymentIntent を作成します。
警告
支払いを確定する際に、error_on_requires_action を true
に設定すると、ユーザーから 2 段階認証が必要とされる場合、Stripe はその支払いを自動的に拒否します。
Payment Intents API レスポンス
API で支払いを作成すると、そのレスポンスには PaymentIntent のステータスが含まれます。支払いが成功した場合には、ステータスは succeeded
になります。
{ "id": "pi_0FdpcX589O8KAxCGR6tGNyWj", "object": "payment_intent", "amount": 1099, "charges": { "object": "list", "data": [ { "id": "ch_GA9w4aF29fYajT", "object": "charge", "amount": 1099, "refunded": false, "status": "succeeded", } ] }, "client_secret": "pi_0FdpcX589O8KAxCGR6tGNyWj_secret_e00tjcVrSv2tjjufYqPNZBKZc", "currency": "usd", "last_payment_error": null, "status": "succeeded", }
支払いが拒否されると、そのレスポンスにはエラーコードとエラーメッセージが含まれます。以下は、カードに 2 段階認証が必要とされるために支払いが拒否された例です。
{ "error": { "code": "authentication_required", "decline_code": "authentication_not_handled", "doc_url": "https://docs.stripe.com/error-codes#authentication-required", "message": "This payment required an authentication action to complete, but `error_on_requires_action` was set. When you're ready, you can upgrade your integration to handle actions at https://stripe.com/docs/payments/payment-intents/upgrade-to-handle-actions.", "payment_intent": { "id": "pi_1G8JtxDpqHItWkFAnB32FhtI", "object": "payment_intent", "amount": 1099, "status": "requires_payment_method", "last_payment_error": { "code": "authentication_required", "decline_code": "authentication_not_handled", "doc_url": "https://docs.stripe.com/error-codes#authentication-required", "message": "This payment required an authentication action to complete, but `error_on_requires_action` was set. When you're ready, you can upgrade your integration to handle actions at https://stripe.com/docs/payments/payment-intents/upgrade-to-handle-actions.", "type": "card_error" }, }, "type": "card_error" } }
組み込みのテスト
組み込みの準備ができていることを確認するために、テスト環境で使用できるテストカードがいくつかあります。任意のセキュリティコード、郵便番号、および将来の有効期限を指定して使用します。
番号 | 説明 |
---|---|
成功し、すぐに支払いを処理します。 | |
支払い拒否コード insufficient_ で常に失敗します。 | |
認証を必要とします。この組み込みでは、authentication_ というコードで拒否されます。 |
テストカードの全一覧をご覧ください。
カード認証を処理するために組み込みをアップグレードする
基本的なカード支払い用の支払い組み込みが完了しました。この組み込みは、支払い中に認証を必要とするカードを拒否することにご注意ください。
ダッシュボードで、Failed
としてリストされた支払いを見かけるようになったら、システムをアップグレードしてください。Stripe のグローバルな導入は、そのような支払いを自動的に拒否せずに処理します。