将来の 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 に渡す必要がある一意のキーです。
顧客をリダイレクトするクライアント側
顧客が将来の支払いに備えて PayPal アカウントを設定する際に、Stripe.js を使用して SetupIntent を確定することをお勧めします。Stripe.js は、決済フローを構築するための Stripe の基本的な JavaScript ライブラリです。これを使用することで、以下で説明するリダイレクトなどの複雑な処理を自動化でき、将来、お客様のシステムを他の支払い方法に簡単に拡張できます。
Stripe.js スクリプトを決済ページに含めるには、このスクリプトを HTML ファイルの head に追加します。
<head> <title>Checkout</title> <script src="https://js.stripe.com/basil/stripe.js"></script> </head>
決済ページで以下の JavaScript を使用して、Stripe.js のインスタンスを作成します。
// Set your publishable key. Remember to change this to your live publishable key in production! // See your keys here: https://dashboard.stripe.com/apikeys const stripe = Stripe(
, {} );'pk_test_TYooMQauvdEDq54NiTphI7jx'
クライアント側で設定を確認するには、ステップ 3 で作成した SetupIntent オブジェクトの client secret を渡します。
client secret は、Stripe API リクエストを認証する API キーとは異なります。client secret は支払いを完了できるため、慎重に取り扱う必要があります。ログに記録したり、URL に埋め込んだり、当該の顧客以外に漏洩したりしないでください。
PayPal 設定を確認する
将来の支払いに PayPal アカウントを使用することを許可するため、顧客は PayPal 請求契約ページにリダイレクトされ、そのページで契約を承認してから、お客様のウェブサイトに戻る必要があります。stripe.confirmPayPalSetup を使用して、お客様のページからのリダイレクトを処理して設定を完了します。この機能に return_
を追加し、ユーザーが PayPal のウェブサイトで請求契約を承認した後にリダイレクトされる場所を指定します。
// Redirects away from the client const {error} = await stripe.confirmPayPalSetup( '{{SETUP_INTENT_CLIENT_SECRET}}', { return_url: 'https://example.com/setup/complete', mandate_data: { customer_acceptance: { type: 'online', online: { infer_from_client: true } } }, } ); if (error) { // Inform the customer that there was an error. }
You can find the Payment Method payer ID and Billing Agreement ID on the resulting Mandate under the payment_method_details property. You can also find the buyer’s email and payer ID in the paypal property on the PaymentMethod.
フィールド | 値 |
---|---|
payer_ | PayPal アカウントの支払人のメールアドレス。 |
payer_ | 支払人の PayPal アカウントの一意の ID。 |
billing_ | PayPal 請求契約 ID (BAID)。これは、PayPal によって生成される ID で、ビジネスと顧客の間の同意書に相当します。 |
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 支払い方法でオンセッションの支払いに請求するクライアント側
オンセッションで顧客に請求する準備ができたら、Customer ID と PaymentMethod ID を使用して、PaymentIntent (支払いインテント) を作成します。
請求する paypal
手段を見つけるには、Customer に関連付けられた PaymentMethod を一覧表示します。
Customer ID と PaymentMethod ID を取得したら、支払いの金額と通貨を指定して PaymentIntent を作成します。
Stripe.js SDK を使用し、次のように confirmPayPalPayment 関数を呼び出して、作成した PaymentIntent を実行します。
// Confirms the on-session payment const {error} = await stripe.confirmPayPalPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}', {payment_method: '{{PAYMENT_METHOD_ID}}'} // Note: return_url is not required here because the PayPal payment method was // previously set up using either a SetupIntent or a PaymentIntent with setup_future_usage ); if (error) { // Inform the customer that there was an error. }
注意:
confirmPayPalPayment
には、return_
パラメーターが条件付きで必要です。url
- SetupIntent、または
setup_
を含む PaymentIntent で以前に設定された PayPal の決済手段を使用する場合は、必須ではありません。future_ usage - オンセッションで新しい PayPal の決済手段を作成する場合など、それ以外のケースでは必須です。
ユーザー主導の支払い方法のキャンセルサーバー側
利用者は、PayPal アカウントからサブスクリプション (請求契約) をキャンセルできます。その場合、Stripe は mandate.updated Webhook を送信します。保存された支払い方法を使用する以降の Payment Intents はすべて、有効な同意書を持つ支払い方法に変更されるまで失敗します。サブスクリプションの支払いが失敗すると、ステータスが自動請求設定で設定されたサブスクリプションステータスに変わります。この場合、顧客に失敗を通知して、別の支払い方法で請求する必要があります。