将来の PayPal 支払いを設定する
PayPal 詳細を保存し、後で顧客に請求する方法を紹介します。
将来の PayPal 決済を設定して、サブスクリプション、支払いの遅延、効率的な購入に備えるための顧客の支払い情報を保存します。Stripe を介して PayPal による継続支払いを有効にし、使用する方法をご紹介します。
継続支払いの有効化
Stripe ではほとんどの場合、ユーザーが Stripe ダッシュボードで PayPal 決済を有効化すると、継続支払いが自動的に有効になります。ただし、PayPal のポリシーや地域別の制限により、一部のユーザーは継続支払いを手動で有効にしなければならない場合があります。この例外には、自動有効化が導入される前にアカウントを設定したユーザーも含まれます。継続支払いを手動で有効にするには、以下の手順に従います。
決済手段の設定に移動します。
継続支払いセクションで、PayPal > 有効化をクリックします。
継続支払いを有効にすると、ダッシュボードに保留中と表示されます。アクセスできるようになるまでには通常、最大 5 営業日かかります。
アクセス権を付与すると、PayPal 設定で継続支払いを利用できるようになります。テスト環境では、継続支払いはデフォルトで有効になっています。
Setup Intents を使用して事前に PayPal 支払い方法の詳細を収集し、後から最終的な金額や支払い日を決定します。この機能は、次の場合に使用します。
Customer を作成または取得するサーバー側
以降の支払いに PayPal の支払い方法を再利用するには、Customer に関連付ける必要があります。
お客様のビジネスで顧客がアカウントを作成するときに、Customer オブジェクトを作成します。Customer オブジェクトの ID を、独自の内部的な顧客の表記に関連付けることにより、保存された支払い方法の詳細を後で取得して使用できます。顧客がアカウントを作成していない場合でも、すぐに Customer オブジェクトを作成し、後でこのオブジェクトを顧客のアカウントの内部表記に関連付けることができます。
SetupIntent を作成するサーバー側
SetupIntent (支払い方法設定インテント) は、将来の支払いに備えて顧客の支払い方法を設定するという意図を示し、そのステップを追跡するオブジェクトです。
payment_method_types を paypal
に設定してサーバーで SetupIntent (支払い方法設定インテント) を作成し、顧客の id を指定します。
SetupIntent オブジェクトには、client_secret が含まれています。これは、買い手を PayPal にリダイレクトして同意書の承認を得る際に、クライアント側で Stripe に渡す必要がある一意のキーです。
Stripe に支払いを送信するクライアント側
作成した SetupIntent から client secret を取得し、STPPaymentHandler confirmSetupIntent を呼び出します。これにより WebView が表示され、顧客はそこから PayPal で支払いを完了できます。その後、支払い結果を示す完了ブロックが呼び出されます。
Webhook を監視するサーバー側
顧客が請求契約を正常に承認したことを確認するには、顧客が支払いステータスページに戻るのを期待するのではなく、Webhook などの方法を使用します。利用者が請求契約を正常に承認すると、SetupIntent は setup_intent.succeeded Webhook イベントを送信します。請求契約の承認が正常に行われなかった場合、SetupIntent は setup_intent.setup_failed Webhook イベントを送信し、requires_
ステータスに戻ります。利用者が PayPal アカウントから請求契約を取り消すと、mandate.updated が送信されます。
保存された PayPal 支払い方法でオフセッションの支払いに請求するサーバー側
オフセッションで顧客に請求する準備ができたら、Customer ID と PaymentMethod ID を使用して、PaymentIntent (支払いインテント) を作成します。
請求する paypal
の手段を見つけるには、Customer に関連付けられた PaymentMethod をリスト表示します。
Customer ID と PaymentMethod ID を取得したら、支払いの金額と通貨を使用して PaymentIntent を作成します。その他のいくつかのパラメーターを設定して、オフセッション支払いを行います。
- off_session を
true
に設定して、支払いの実行時に顧客が決済フローに存在しないことを示します。これにより、認証が必要な場合は PaymentIntent からエラーが返されます。 - PaymentIntent の confirm プロパティの値を
true
に設定します。これにより、PaymentIntent が作成されると直ちに確定されます。 - payment_method を PaymentMethod の ID に設定し、customer を Customer の ID に設定します。
ユーザー主導の支払い方法のキャンセルサーバー側
利用者は、PayPal アカウントからサブスクリプション (請求契約) をキャンセルできます。その場合、Stripe は mandate.updated Webhook を送信します。保存された支払い方法を使用する以降の Payment Intents はすべて、有効な同意書を持つ支払い方法に変更されるまで失敗します。サブスクリプションの支払いが失敗すると、ステータスが自動請求設定で設定されたサブスクリプションステータスに変わります。この場合、顧客に失敗を通知して、別の支払い方法で請求する必要があります。