PayPal によるサブスクリプションを設定する
PayPal を使用したサブスクリプションの作成と請求の方法をご紹介します。
注意
Stripe で PayPal のサブスクリプションの受け付けを開始するには、ダッシュボードで PayPal 継続支払いを有効にする必要があります。
Use this guide to set up a subscription using PayPal as a payment method.
商品と価格を作成するダッシュボード![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
Products (商品) は、販売しているアイテムまたはサービスを表します。Prices (価格) は、商品の価格と請求頻度を定義します。これには、商品の価格、受け付ける通貨、および 1 回限りの支払いか継続支払いかが含まれます。商品と価格が数個のみの場合は、ダッシュボードでそれらを作成および管理します。
このガイドでは、例としてストックフォトサービスを使用し、15 EUR の月次サブスクリプションを顧客に請求します。これをモデル化するには、次のようにします。
- 商品を追加ページに移動します。
- 商品の名前を入力します。
- 価格に 15 を入力します。
- 通貨として EUR を選択します。
- 商品を保存をクリックします。
商品と価格を作成したら、価格 ID を記録しておき、後続のステップで使用できるようにします。ID は料金体系ページで price_
のように表示されます。
設定前に Customer を作成または取得するサーバ側![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
To reuse a PayPal payment method for future payments, attach it to a Customer.
Create a Customer object when a customer creates an account on your business. Associating the ID of the Customer object with your own internal representation of a customer lets you retrieve and use the stored payment method details later. If the customer hasn’t created an account, you can still create a Customer object now and associate it with your internal representation of the customer’s account later.
SetupIntent を作成するサーバ側![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
SetupIntent (支払い方法設定インテント) は、将来の支払いに備えて顧客の支払い方法を設定するという意図を示し、そのステップを追跡するオブジェクトです。
payment_method_types を paypal
に設定してサーバーで SetupIntent (支払い方法設定インテント) を作成し、顧客の id を指定します。
SetupIntent オブジェクトには、client_secret が含まれています。これは、買い手を PayPal にリダイレクトして同意書の承認を得る際に、クライアント側で Stripe に渡す必要がある一意のキーです。
顧客をリダイレクトするクライアント側![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
顧客が将来の支払いに備えて 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 設定を確認する![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
将来の支払いに 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 を監視するサーバ側![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
顧客が請求契約を正常に承認したことを確認するには、顧客が支払いステータスページに戻るのを期待するのではなく、Webhook などの方法を使用します。利用者が請求契約を正常に承認すると、SetupIntent は setup_intent.succeeded Webhook イベントを送信します。請求契約の承認が正常に行われなかった場合、SetupIntent は setup_intent.setup_failed Webhook イベントを送信し、requires_
ステータスに戻ります。利用者が PayPal アカウントから請求契約を取り消すと、mandate.updated が送信されます。
サブスクリプションを作成するサーバ側![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
料金と顧客を指定して、Subscription (サブスクリプション) を作成します。
Creating subscriptions automatically charges customers because the default payment method is set. After a successful payment, the status in the Stripe Dashboard changes to Active. The price you created earlier determines subsequent billings.
サブスクリプションステータスを管理するクライアント側![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
If the initial payment succeeds, the state of the subscription is active
and no further action is needed. When payments fail, the status is changed to the Subscription status configured in your automatic collection settings. Notify the customer on failure and charge them with a different payment method.
定期支払いを更新サーバ側![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
When you update a subscription, you need to specify off_
. Otherwise, any new payment requires a user redirection to PayPal for confirmation. For example, if you want to change the quantity of an item included in the subscription you can use:
組み込みをテストする![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
テスト API キー を使用して PayPal の実装をテストするには、リダイレクトページを表示します。リダイレクトページで支払いを認証することにより、支払い成功のケースをテストできます。PaymentIntent は requires_
から succeeded
に移行します。
ユーザが認証に失敗するケースをテストするには、テスト API キーを使用してリダイレクトページを表示します。リダイレクトページで テスト支払い失敗 をクリックします。PaymentIntent は、requires_
から requires_
に移行します。