Checkout セッションは、顧客の購入意向の詳細を表します。顧客がサブスクリプションを開始する場合は、Checkout セッションを作成します。顧客が Checkout セッションにリダイレクトされると、、顧客が購入を完了できる支払いフォームが Stripe に表示されます。顧客が購入を完了すると、サイトにリダイレクトされます。
任意の Stripe クライアントをインストールします。
Stripe CLI をインストールします (オプション)。CLI には Webhook のテストが用意されていて、これを実行することで商品および価格を作成できます。
brew install stripe/stripe-cli/stripe
stripe login
その他のインストールオプションについては、Stripe CLI を使ってみるをご覧ください。
ダッシュボードまたは Stripe CLI で商品とその価格を作成します。
この例では、「基本」と「プレミアム」という 2 つのサービスレベルオプションがある固定価格のサービスを使用しています。サービスレベルオプションごとに、1 つの商品と 1 つの継続価格を作成する必要があります (初期費用のような 1 回限りの支払いを追加する場合は、1 回限りの価格で 3 つ目の商品を作成します。わかりやすくするために、この例には 1 回限りの支払いを含めていません)。
この例では、各商品が 1 カ月間隔で請求されます。基本商品の価格は 5 EUR で、プレミアム商品の価格は 15 EUR です。
商品を追加ページに移動し、2 つの商品を作成します。商品ごとに 1 つの価格を追加し、それぞれに毎月の継続請求期間を設定します。
価格を作成したら、価格 ID を記録しておき、他のステップで使用できるようにします。価格 ID は、price_G0FvDp6vZvdwRZ
のように表示されます。
準備が完了したら、ページ右上の本番環境にコピーボタンを使用して、サンドボックスから本番環境に商品を複製します。
他の料金体系モデルについては、Billing の例をご覧ください。
サーバー側のエンドポイントを呼び出して Checkout セッションを作成する購入ボタンをウェブサイトに追加します。
<html>
<head>
<title>Checkout</title>
</head>
<body>
<form action="/create-checkout-session" method="POST">
<button type="submit">Checkout</button>
</form>
</body>
</html>
既存の Price の ID を使用して Checkout セッションを作成します。モードが subscription
に設定されており、1 つ以上の継続価格を渡すことを確認してください。継続価格に加えて、1 回限りの価格を追加できます。Checkout セッションを作成したら、レスポンスで返された URL に顧客をリダイレクトします。
顧客が支払いを正常に完了すると、success_url
(支払いが成功したことを顧客に通知するウェブページ) にリダイレクトされます。上記の例のように、success_url
に {CHECKOUT_SESSION_ID}
テンプレート変数を含めることで、成功ページでセッション ID が使用できるようになります。
顧客が支払いを完了せずに Checkout セッションでお客様のロゴをクリックすると、Checkout は、cancel_url
に顧客を誘導して、ウェブサイトにリダイレクトします。これは通常、顧客が Checkout にリダイレクトされる前に表示していたウェブサイトのページです。
デフォルトでは、Checkout セッションは作成後 24 時間で期限が切れます。
ダッシュボードで、顧客が使用できる支払い方法を有効にします。Checkout は、複数の支払い方法に対応しています。
注意
次に挙げる理由により、支払い開始の検出時には、success_url
へのリダイレクトのみに依存しないでください。
- 悪意を持つユーザが、支払いをせずに
success_url
に直接アクセスし、商品やサービスにアクセスできるようになる可能性があります。 - 顧客が支払いの成功後に
success_url
に到達するとは限りません。リダイレクトが発生する前に、顧客がブラウザタブを閉じることがあります。
顧客は支払いを完了すると、success_url
パラメータで指定された URL にリダイレクトされます。通常、これはお客様の Web サイト上のページであり、支払いが成功したことを顧客に知らせます。
ただし、SEPA Direct Debit は通知遅延型の決済手段であるため、売上はすぐには利用可能になりません。このため、売上が利用可能になるまで注文のフルフィルメントを保留します。支払いが成功すると、基となる PaymentIntent のステータスが processing
から succeeded
に変わります。
次のように、複数の方法で支払いが成功したことを確認できます。
成功した支払いは、ダッシュボードの支払いの一覧に表示されます。支払いをクリックすると、支払いの詳細ページに移動します。Checkout サマリーセクションには、請求先情報と購入された商品のリストが記載されています。これらを使用して、注文を手動でフルフィルメントすることができます。
注
Stripe は顧客が支払いに成功するたびにお客様にメール通知を送信し、今後受領する支払いの最新情報を把握できるようサポートします。ダッシュボードを使用してメール通知を設定します。
組み込みのテストには、以下の IBAN を使用できます。各 IBAN に対応する支払い方法の詳細が収集されますが、支払い時にはそれぞれ異なる動作を示します。
IBAN をテストする
アカウント番号 | 説明 |
---|
IE29AIBK93115212345678 | PaymentIntent のステータスは、processing から succeeded に変化します。 |
IE24AIBK93115212345671 | The PaymentIntent status transitions from processing to succeeded after at least three minutes. |
IE02AIBK93115212345679 | PaymentIntent のステータスは、processing から requires_payment_method に変化します。 |
IE94AIBK93115212345672 | The PaymentIntent status transitions from processing to requires_payment_method after at least three minutes. |
IE51AIBK93115212345670 | PaymentIntent のステータスは、processing から succeeded に変化しますが、不審請求の申請が即座に作成されます。 |
IE10AIBK93115200343434 | 支払金額がアカウントの週次支払い金額の上限を超えるため、支払いは charge_exceeds_source_limit エラーコードで失敗します。 |
IE69AIBK93115200121212 | 支払い金額がアカウントの取引金額の上限を超えているため、支払いは charge_exceeds_weekly_limit エラーコードで失敗します。 |
IE10AIBK93115202222227 | 支払いは insufficient_funds エラーコードで失敗します。 |
subscription
モードには継続支払いの料金を渡すだけでなく、1 回限りの料金も追加できます。これらは、サブスクリプションによって作成される初回の請求書にのみ記載されます。これは、サブスクリプションに付随する設定手数料やその他の 1 回限りの手数料の追加に便利です。既存の商品に 1 回限りの料金を追加することも、商品を新しい料金で新規作成することもできます。
curl https://api.stripe.com/v1/checkout/sessions \
-u sk_test_BQokikJOvBiI2HlWgH4olfQ2
: \
-d "payment_method_types[]"="sepa_debit" \
-d "line_items[0][price]"="{{RECURRING_PRICE_ID}}" \
-d "line_items[0][quantity]"=1 \
-d "line_items[1][price]"="{{ONE_TIME_PRICE_ID}}" \
-d "line_items[1][quantity]"=1 \
-d "mode"="subscription" \
-d "success_url"="https://example.com/success?session_id={CHECKOUT_SESSION_ID}" \
-d "cancel_url"="https://example.com/cancel"
Checkout セッション作成時は、既存の価格 ID を渡すだけではなく、新しい価格を作成することもできます。まず、Product (商品) を定義します。次に、商品 ID を使用して Checkout セッションを作成します。必ず、unit_amount
、currency
、および recurring
の詳細とともに price_data を渡してください。
curl https://api.stripe.com/v1/checkout/sessions \
-u sk_test_BQokikJOvBiI2HlWgH4olfQ2
: \
-d "payment_method_types[]"=sepa_debit \
-d line_items[0][price_data][unit_amount]=5000 \
-d line_items[0][price_data][currency]=eur \
-d line_items[0][price_data][product]= \
-d line_items[0][price_data][recurring][interval]=month \
-d line_items[0][quantity]=1 \
-d mode=subscription \
-d success_url="https://example.com/success?session_id={CHECKOUT_SESSION_ID}" \
-d cancel_url="https://example.com/cancel"
また、商品もインラインで作成する必要がある場合は、product_data を使用して作成できます。
curl https://api.stripe.com/v1/checkout/sessions \
-u sk_test_BQokikJOvBiI2HlWgH4olfQ2
: \
-d "payment_method_types[]"=sepa_debit \
-d "line_items[][price_data][currency]"=eur \
-d "line_items[][price_data][product_data][name]"=T-shirt \
-d "line_items[][price_data][unit_amount]"=2000 \
-d "line_items[][quantity]"=1 \
-d "mode"="subscription" \
-d success_url="https://example.com/success?session_id={CHECKOUT_SESSION_ID}" \
-d cancel_url="https://example.com/cancel"
オプション既存の顧客
顧客を表す Customer オブジェクトを以前に作成している場合、Checkout セッションを作成する際に customer 引数を使用してその顧客 ID を渡します。こうすることで、そのセッション中に作成されたすべてのオブジェクトが正しい Customer オブジェクトに関連付けられます。
顧客 ID を渡すと、Stripe は Customer オブジェクトに保管されたメールアドレスを使用して、Checkout ページのメールフィールドに事前入力します。顧客が Checkout ページでメールアドレスを変更すると、支払いの成功後に Customer オブジェクトの該当項目が更新されます。
curl https://api.stripe.com/v1/checkout/sessions \
-u sk_test_BQokikJOvBiI2HlWgH4olfQ2
: \
-d "customer"=
-d "payment_method_types[]"="sepa_debit" \
-d "line_items[][price]"= \
-d "line_items[][quantity]"=1 \
-d "mode"="subscription" \
-d "success_url"="https://example.com/success" \
-d "cancel_url"="https://example.com/cancel"
すでに顧客のメールを収集していて、それを Checkout セッションで事前に入力するには、Checkout セッションの作成時に customer_email を渡します。
curl https://api.stripe.com/v1/checkout/sessions \
-u sk_test_BQokikJOvBiI2HlWgH4olfQ2
: \
-d customer_email="customer@example.com" \
-d "payment_method_types[]"=sepa_debit \
-d "line_items[][price]"= \
-d "line_items[][quantity]"=1 \
-d mode=subscription \
-d success_url="https://example.com/success" \
-d cancel_url="https://example.com/cancel"
オプショントライアルの処理
Checkout セッションで trial_end または trial_period_days を使用して、トライアル期間の日数を指定できます。この例では、trial_period_days
を使用して 30 日間のトライアルを含むサブスクリプションの Checkout セッションを作成します。
Checkout では、トライアルを含むサブスクリプションに対して以下の情報が自動的に表示されます。
- トライアル期間
- トライアル期限満了後の支払いの頻度と金額
法令遵守要件についての詳細は、Billing またはサポートのガイドを参照してください。法令遵守要件
Checkout セッションで税率 (消費税、VAT、GST、その他) を指定し、サブスクリプションに税金を適用できます。
- 顧客が決済フロープロセスを開始する前に、顧客に請求する正確な税率を把握している場合は、固定税率を使用します (イギリスの顧客にのみ販売し、常に 20% の VAT を課税する場合など)。
- Prices API では、請求する税率を決定する前に顧客の詳細情報 (請求先住所、配送先住所など) が必要な場合に、動的税率を使用できます。動的税率では、地域ごとに異なる複数の税率 (イギリスの顧客には 20% の VAT、アメリカ・カリフォルニア州の顧客には 7.25% の売上税など) を作成でき、Stripe は顧客の居住地を、これらの税率のいずれかとマッチングします。
Stripe のデータエクスポート機能を使用して、送金に必要となる定期的な申告書に入力することができます。詳細については、納税申告および送金を参照してください。
Checkout セッションでは、discounts (割引) を設定することで、サブスクリプションにクーポンを適用できます。このクーポンは、顧客の他のクーポンよりも優先されます。既存の顧客でサブスクリプションを作成している場合、その顧客に関連付けられたクーポンがサブスクリプションのインボイスに適用されます。
curl https://api.stripe.com/v1/checkout/sessions \
-u sk_test_BQokikJOvBiI2HlWgH4olfQ2
: \
-d "payment_method_types[]"=sepa_debit \
-d "line_items[][price]"= \
-d "line_items[][quantity]"=1 \
-d "discounts[][coupon]"="{{COUPON_ID}}" \
-d "mode"="subscription" \
-d success_url="https://example.com/success" \
-d cancel_url="https://example.com/cancel"
また、ユーザーが引き換え可能なプロモーションコードは、Checkout セッションで allow_promotion_codes パラメーターを使用して有効にできます。Checkout セッションで allow_promotion_codes
が有効になっている場合、Checkout には顧客が利用するためのプロモーションコードの入力欄が表示されます。クーポンおよびプロモーションコードは、顧客が Checkout で引き換えられるようにダッシュボードまたは API で作成します。
curl https://api.stripe.com/v1/checkout/sessions \
-u sk_test_BQokikJOvBiI2HlWgH4olfQ2
: \
-d "payment_method_types[]"="sepa_debit" \
-d "line_items[0][price_data][unit_amount]"=2000 \
-d "line_items[0][price_data][currency]"="eur" \
-d "line_items[0][price_data][product]=" \
-d "line_items[0][price_data][recurring][interval]=month" \
-d "line_items[0][quantity]"=1 \
-d "allow_promotion_codes"="true" \
-d "mode"="subscription" \
-d "success_url"="https://example.com/success" \
-d "cancel_url"="https://example.com/cancel"
参照情報