PayPal によるサブスクリプションを設定する
PayPal を使用したサブスクリプションの作成と請求の方法をご紹介します。
注意
Stripe で PayPal のサブスクリプションの受け付けを開始するには、ダッシュボードで PayPal 継続支払いを有効にする必要があります。
このガイドを使用して、支払い方法として PayPal を使用するサブスクリプションを設定します。
商品と価格を作成するダッシュボード
Products (商品) は、販売しているアイテムまたはサービスを表します。Prices (価格) は、商品の価格と請求頻度を定義します。これには、商品の価格、受け付ける通貨、および 1 回限りの支払いか継続支払いかが含まれます。商品と価格が数個のみの場合は、ダッシュボードでそれらを作成および管理します。
このガイドでは、例としてストックフォトサービスを使用し、15 EUR の月次サブスクリプションを顧客に請求します。これをモデル化するには、次のようにします。
- 商品を追加ページに移動します。
- 商品の名前を入力します。
- 価格に 15 を入力します。
- 通貨として EUR を選択します。
- 商品を保存をクリックします。
商品と価格を作成したら、価格 ID を記録しておき、後続のステップで使用できるようにします。ID は料金体系ページで price_
のように表示されます。
設定前に 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/v3/"></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. }
支払い方法の所有者のメールアドレス、支払人 ID、請求契約 ID は、payment_method_details プロパティで生成される Mandate (同意書) にあります。また、買い手のメールアドレスと支払人 ID は、PaymentMethod (支払い方法) の paypal プロパティにあります。
フィールド | 値 |
---|---|
verified_ | 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 が送信されます。
サブスクリプションを作成するサーバ側
料金と顧客を指定して、Subscription (サブスクリプション) を作成します。
デフォルトの支払い方法が設定されているため、サブスクリプションを作成すると、自動的に顧客に対して請求が行われます。支払いが完了すると、Stripe ダッシュボード内のステータスが有効に変わります。以前作成した料金によって、以降の請求が決定されます。
サブスクリプションステータスを管理するクライアント側
初回の支払いが完了すると、サブスクリプションの状態は active
になり、それ以上のアクションは不要です。支払いが失敗した場合は、ステータスが自動請求設定で設定されたサブスクリプションステータスに変わります。顧客に失敗を通知し、別の支払い方法で請求する必要があります。
定期支払いを更新サーバ側
サブスクリプションを更新する場合、off_
を指定する必要があります。そうしないと、新しい支払いでは、確定のためにユーザーを PayPal にリダイレクトする必要があります。たとえば、サブスクリプションに含まれるアイテムの数量を変更する場合、以下を使用できます。
組み込みをテストする
テスト API キー を使用して PayPal の実装をテストするには、リダイレクトページを表示します。リダイレクトページで支払いを認証することにより、支払い成功のケースをテストできます。PaymentIntent は requires_
から succeeded
に移行します。
ユーザが認証に失敗するケースをテストするには、テスト API キーを使用してリダイレクトページを表示します。リダイレクトページで テスト支払い失敗 をクリックします。PaymentIntent は、requires_
から requires_
に移行します。