銀行認証なしのカード支払い
よりシンプルな地域限定の実装を構築します。
この統合は、アメリカとカナダのカードのみを受け付けるビジネスをサポートしています。初期統合はシンプルですが、グローバルな顧客ベースをサポートするように成長することはできません。
この組み込みはどのように機能しますか?
ヨーロッパやインドなどの地域の銀行は、購入を確定するために 2 段階認証を求めることがよくあります。主にアメリカとカナダでビジネスを行っている場合には、これらの地域の銀行はほとんど 2 段階認証を求めないため、カード認証を配慮しないことで実装がシンプルになります。
銀行が認証を要求すると、この基本的な組み込みは、支払いを非同期で完了するための認証処理は行わず、直ちに支払いを拒否します (カード拒否のように)。この利点は、支払いの成功や失敗が直ちに決定され、支払い確定がサーバーで行われるため、Webhook を使用せずに直ちに支払い後のアクションを処理できることです。
これはグローバルな組み込みとはどう違いますか?
機能 | この組み込み | グローバル組み込み |
---|---|---|
カスタムの支払いフォーム | ✔ | ✔ |
機密データがお客様のサーバに触れない | ✔ | ✔ |
アメリカとカナダの顧客に対応 | ✔ | ✔ |
カード詳細が不正確な場合や残高不足の場合に支払いを拒否 | ✔ | ✔ |
銀行から認証要求があると支払いを拒否 | ✔ | |
グローバルな顧客に対応 | ✔ | |
銀行の認証が必要なカード支払いを自動的に処理 | ✔ | |
支払い後のタスクに推奨される Webhook | ✔ | |
他の支払い方法 (銀行引き落としなど) に簡単に拡張可能 | ✔ |
成長を遂げている企業やグローバル企業には、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" } }
カード認証を処理するために組み込みをアップグレードする
基本的なカード支払い用の支払い組み込みが完了しました。この組み込みは、支払い中に認証を必要とするカードを拒否することにご注意ください。
ダッシュボードで、Failed
としてリストされた支払いを見かけるようになったら、システムをアップグレードしてください。Stripe のグローバルな導入は、そのような支払いを自動的に拒否せずに処理します。