将来の Cash App Pay による支払いを設定する
Cash App Pay の詳細を保存し、後で顧客に請求する方法をご紹介します。
Setup Intents API を使用して事前に決済手段の詳細を収集し、後から最終的な金額や支払い日を決定できます。次の場合に使用します。
- 支払い方法をウォレットに保存して、以降の購入を効率化する
- サービスの提供後に追加料金を回収する
- サブスクリプションの無料トライアルを開始する
このガイドでは、最初に Setup Intents API を使用して支払い方法の詳細を保存し、Payment Intents API を使用して保存した支払い方法に後で請求する方法を説明します。
Stripe を設定するサーバ側クライアント側
まず、Stripe アカウントが必要です。今すぐ登録してください。
サーバ側
この組み込みには、サーバ上に Stripe API と通信するエンドポイントが必要です。サーバから Stripe API にアクセスするには、Stripe の公式ライブラリを使用します。
クライアント側
Stripe iOS SDK はオープンソースです。詳細なドキュメントが提供されており、iOS 13 以降をサポートするアプリと互換性があります。
注
SDK の最新リリースおよび過去バージョンの詳細については、GitHub の Releases (リリース) ページをご覧ください。リポジトリのリリースをウォッチして、新しいリリースの公開時に通知を受け取ることも可能です。
アプリの起動時に Stripe 公開可能キーを使用して SDK を設定します。これにより、アプリが Stripe API にリクエストを送信できるようになります。
Customer を作成または取得するサーバー側
今後の支払いに備えて Cash App Pay の支払い方法を保存するには、これを Customer に関連付ける必要があります。
お客様のビジネスで顧客がアカウントを作成するときに、Customer オブジェクトを作成します。この Customer オブジェクトの ID を、顧客を表す独自の内部表記と関連付けてください。あるいは、Customer オブジェクトを作成してから、今後の支払いのために支払い方法を保存することもできます。
新しい Customer を作成するには、サーバー側で以下のコードを含めます。
SetupIntent を作成するサーバー側
SetupIntent は、将来の支払いに備えて顧客の決済手段を設定する意図を示すオブジェクトです。SetupIntent は、この設定プロセスの手順を追跡します。payment_method_types を cashapp
に設定してサーバーで SetupIntent を作成し、Customer の ID と usage=off_session または usage=on_
を指定します。
決済フォームに承認に関する条件を提示するクライアント側
将来のオフセッションの支払いに備え、顧客の Cash App Pay の認証情報 ($Cashtag) を保存してアカウントに請求できるようにします。PaymentIntent や SetupIntent を確定する前に、カスタムの決済フォームに書面による承認の通知を表示する必要があります。
承認に関する条件は、顧客の $Cashtag を初めて保存するときにのみ表示する必要があります。
カスタムの決済フォームでは以下のテキストを使用することをお勧めします。
続行すると、Rocket Rides の利用規約に従って、この許可が取り消されない限り、お客様は今回の支払いおよび今後の支払いを、Cash App のアカウントから引き落とすことを Rocket Rides に許可したものとみなされます。これは、Cash App の設定でいつでも変更できます。
Stripe に支払いを送信するクライアント側
作成した SetupIntent から client secret を取得し、STPPaymentHandler confirmSetupIntent を呼び出します。これにより WebView が表示され、顧客はそこから Cash App で支払いを完了できます。その後、支払い結果とともに、完了ブロックが呼び出されます。
保存された支払い方法を使用して PaymentIntent を作成するサーバー側
PaymentMethod を作成した後、PaymentIntent を作成して確定すると、それ以降 Cash App Pay による決済を受け付けられるようになります。PaymentIntent を確定する際は、以前の SetupIntent オブジェクトまたは PaymentIntent オブジェクトと同じ決済手段 ID を使用します。顧客がこの PaymentIntent の決済フロー内にいない場合は、off_
値も true に設定する必要があります。
再利用可能な決済手段の取り消しを処理する
再使用可能な決済手段を取り消すには、以下の 2 つの方法があります。
- 顧客は、Cash App モバイルアプリで再利用可能な決済手段を無効にすることができます。この場合、Stripe は mandate.updated イベントを送信します。Webhook イベントに登録し、detach PaymentMethod を呼び出して無効化します。
- 顧客は、再利用可能な決済手段に対応している場合、UI で無効にすることもできます。この場合、サーバーは detach PaymentMethod を呼び出して無効化することができます。
いずれのケースでも、detach PaymentMethod を呼び出した後、payment_method.detached イベントが送信されます。