銀行認証なしのカード支払い
地域的な制限があるシンプルなモバイルシステムを構築します。
この実装は、アメリカとカナダのカードのみを受け付けるビジネスをサポートしています。シンプルですが、グローバルな顧客ベースをサポートするように拡張することはできません。
この組み込みはどのように機能しますか?
これはグローバルな組み込みとはどう違いますか?
成長を遂げている企業やグローバル企業には、Stripe のグローバルなシステムを使用して、銀行の 2 段階認証の要求に対応し、顧客がより広範な支払い方法を使用できるようにすることをお勧めします。
Stripe iOS SDK をインストールするクライアント側
まず、Stripe アカウントが必要です。今すぐ登録してください。
Stripe iOS SDK はオープンソースです。詳細なドキュメントが提供されており、iOS 13 以降をサポートするアプリと互換性があります。
注
SDK の最新リリースおよび過去バージョンの詳細については、GitHub の Releases (リリース) ページをご覧ください。リポジトリのリリースをウォッチして、新しいリリースの公開時に通知を受け取ることも可能です。
アプリの起動時に Stripe 公開可能キーを使用して SDK を設定します。これにより、アプリが Stripe API にリクエストを送信できるようになります。
カード詳細を収集するクライアント側
カード番号、有効期限、セキュリティコード、郵便番号を収集する SDK で提供されるドロップイン UI コンポーネントである STPPaymentCardTextField を使用して、クライアント側でカード情報を安全に収集します。
STPPaymentCardTextField は、その時点で検証と形式の設定を行います。
以下のコードを使用して、カードコンポーネントのインスタンスを作成し、支払う ボタンを作成します。
アプリを実行し、チェックアウトページにカードコンポーネントが表示されることを確認します。顧客が 支払う をタップしたら、createPaymentMethod を呼び出してカード詳細を収集し、PaymentMethod を作成します。その PaymentMethod の ID をサーバーに送信します。
支払いの作成サーバー側
サーバー上で、クライアントからリクエストを受信するエンドポイントを設定します。サーバーから Stripe API にアクセスするには、公式ライブラリを使用します。
Stripe は PaymentIntent オブジェクトを使用して、顧客から支払いを回収するお客様の意図を示し、プロセス全体を通して請求の実施と支払い状態の変化を追跡します。
ステップ 2. のリクエストに応答する HTTP エンドポイントを作成します。そのエンドポイントで、顧客にいくら請求するかを決定します。支払いを作成するには、以下のパラメーターで、ステップ 2 からの 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 のグローバル組み込みは、そのような支払いを自動的に拒否せずに処理します。