将来の 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 を発行します。保存された支払い方法を使用する以降のすべての PaymentIntent は、有効な同意書を持つ支払い方法に変更するまで失敗します。サブスクリプションの支払いが失敗すると、ステータスは自動回収設定 で設定したサブスクリプションのステータスに変更されます。顧客に失敗を通知し、別の支払い方法で支払う。
オプションPayPal 支払いを事前設定し、支払いをキャプチャするサーバー側
PaymentIntent (支払い方法設定インテント) を作成する際は、将来の使用に備えて PayPal 支払い方法をセットアップすることも、請求を同時に行うこともできます。
setup_future_usage を off_
に設定し、将来使用するための支払い方法を事前設定する意思を示します。
オプションオンセッションの支払いに対するリスクライブラリの実装を手動で処理するサーバー側
保存された PayPal 支払い方法でオンセッションの支払いを処理するには、Stripe.js を使用することをお勧めします。構築済みの Fraudnet 実装が付属しているためです。ただし、次の手順に従って、お客様のサーバーで PayPal の PaymentIntent を手動で確定することもできます。
PayPal のリスクライブラリ (ウェブ用は Fraudnet、モバイル用は Magnes) を実装して、買い手が支払いセッションを実施しているときに PayPal がリスクデータを収集できるようにします。これにより、不正が減少し、オンセッションの支払いのコンバージョン率が向上します。Stripe に対する API コールを実行するときは、ライブラリの初期化に使用するクライアントメタデータ ID (リスク相関 ID とも呼ばれます) が必要です。
ライブラリが読み込まれたら、次のように支払いのクライアントメタデータ ID、金額、通貨を指定して PaymentIntent を作成できます。
オンセッションの支払いの確定時に risk_correlation_id パラメーターを渡さないと、paypal_
メッセージコードが返されます。