銀行の認証なしでカードを保存する
カード詳細を収集し、後で顧客に請求します。
Stripe では、顧客のカード詳細を収集して後で請求できます。一部の地域では、銀行により、2 段階目の認証 (スマートフォンに送信されたコードの入力など) が要求されます。この追加ステップにより、顧客が Web サイトまたはアプリケーションをアクティブに使用していない場合は、購入の認証ができないためにコンバージョン率が低下します。
アメリカとカナダを中心にして事業を運営している場合は、銀行によって認証が要求されないため、より簡単なこの実装を使用できます。この実装は、カードの保存に認証が必要な国では非準拠となるため、この実装を構築すると、他の国に事業を拡大する場合や他の決済手段を追加する場合に、大幅な変更が必要になります。認証が必要なカード情報の保存方法をご確認ください。
法令遵守
お客様は、顧客の支払い情報を保存する際の該当する法律、規制、ネットワークのルールのすべてに準拠する責任を負います。たとえば、顧客がお客様のウェブサイトやアプリを積極的には使用していない時期に顧客に請求するなど、将来の利用に備えて顧客の支払い方法を保存する場合が該当します。支払い方法の保存をどのように計画しているかを示す規約をウェブサイトやアプリに追加し、顧客が許可できるようにします。顧客がオフラインのときに請求する予定である場合は、規約に以下の内容も含める必要があります。
- 指定された取引で顧客の代理として単独の支払いまたは一連の支払いを開始することを許可するという、顧客からお客様への同意。
- 予期される支払い時期と支払い頻度 (たとえば、請求が予定されている分割払いなのか、サブスクリプションの決済なのか、あるいは予定されていないトップアップなのか)。
- 支払い金額の決定方法。
- 支払い方法をサブスクリプションサービスに使用する場合は、キャンセルに関するポリシー。
これらの規約に関する顧客の書面による同意の記録を必ず保管してください。
Stripe をセットアップするサーバー側クライアント側
まず、Stripe アカウントが必要です。今すぐ登録してください。
組み込みを開始する前に、iOS とサーバーの Stripe SDK を設定します。
サーバー側
この組み込みには Stripe API と通信するエンドポイントがサーバー上に必要です。公式ライブラリを使用してください。
クライアント側
Stripe iOS SDK はオープンソースです。詳細なドキュメントが提供されており、iOS 13 以降をサポートするアプリと互換性があります。
注
For details on the latest SDK release and past versions, see the Releases page on GitHub. To receive notifications when a new release is published, watch releases for the repository.
アプリの起動時に Stripe 公開可能キーを使用して SDK を設定します。これにより、アプリが Stripe API にリクエストを送信できるようになります。
カード詳細を収集するクライアント側
まず、顧客に支払いフォームを表示します。カード番号、有効期限、セキュリティコード、郵便番号を収集する SDK が提供するドロップイン UI コンポーネントである STPPaymentCardTextField を使用して、顧客からカード詳細を収集します 。
STPPaymentCardTextField は、その時点で検証と形式の設定を行います。
カード詳細を createPaymentMethod に渡し、PaymentMethod を作成します。
結果として得られた PaymentMethod ID をお客様のサーバーに送信し、残りの手順に従って顧客にカードを保存し、将来そのカードに対して請求します。
カードを保存するサーバー側
PaymentMethod を Customer に関連付けることでカードを保存します。Customer オブジェクトを使用して、顧客に関する他の情報 (配送の詳細、メールアドレスなど) を格納できます。
既存の Customer がある場合は、代わりにそのオブジェクトに PaymentMethod を関連付けることがきます。
この時点で、顧客の内部的な独自の表記がある場合は、この表記に Customer オブジェクトの ID と PaymentMethod の ID を関連付けます。
保存されたカードに請求するサーバー側
顧客に請求する準備ができたら、請求する PaymentMethod ID を検索します。これは、両方の ID をお客様のデータベースに格納するか、顧客 ID を使用して顧客の使用可能なすべての PaymentMethod を検索することで実行できます。
PaymentMethod ID と顧客 ID を使用して新しい PaymentIntent を作成します。error_on_requires_action を true に設定して、2 段階認証など、顧客のアクションを必要とする支払いは拒否します。
支払いが失敗すると、リクエストも 402 HTTP ステータスコードで失敗し、Stripe からエラーが返されます。アプリケーションに戻って支払いを完了するように (アプリ内通知を送信するなどして) 顧客に通知する必要があります。Stripe API ライブラリから発生したエラーのコードを確認するか、PaymentIntent の last_payment_error.decline_code を確認し、カード発行会社が支払いを拒否した理由を調べます。
カードエラーを処理する
支払いが失敗したことを顧客に通知し、ステップ 1 でお客様が作成した決済フォームに顧客を転送します。顧客はそこで新しいカード詳細を入力できます。その新しい PaymentMethod ID をお客様のサーバーに送信して、Customer オブジェクトに関連付けし、再度支払いを行います。
別の方法として、既に作成済みの Customer がある場合は、PaymentIntent の作成とカードの保存を、すべて 1 回の API コールで実行できます。
setup_future_usage を on_
に設定すると、不要な認証をトリガーせずに今後のためにカードを保存することを Stripe に対して示します。
組み込みをテストする
Stripe はテスト環境で使用してさまざまなカードの機能をシミュレーションできるテストカードを提供しています。任意のセキュリティコード、郵便番号、将来の有効期限を指定してこれらのカードを使用します。
番号 | 説明 |
---|---|
成功し、支払いがすぐに処理されます。 | |
常に支払い拒否コード insufficient_ で失敗します。 | |
認証が必要なため、この組み込みでは、authentication_ というコードで拒否されます。 |
カード認証を処理するために組み込みをアップグレードする
この組み込みでは、支払い時に認証を必要とするカードは拒否されます。ダッシュボードに多くの支払いが Failed
としてリストされるようになった場合は、組み込みのアップグレードが必要なタイミングです。Stripe のグローバルな組み込みは、そのような支払いを自動的に拒否するのではなく処理します。