コンテンツにスキップ
アカウントを作成
または
サインイン
Stripe ドキュメントのロゴ
/
AI に質問する
アカウントを作成
サインイン
始める
支払い
売上
プラットフォームおよびマーケットプレイス
資金管理
開発者向けリソース
概要
Stripe Payments について
構築済みのシステムをアップグレード
支払いの分析
オンライン決済
概要ユースケースを見つけるManaged Payments を使用する
Payment Links を使用する
事前構築済みの決済ページを使用する
Elements を使用したカスタム統合の構築
アプリ内実装を構築
決済手段
決済手段を追加
決済手段を管理
Link による購入の迅速化
支払いインターフェイス
Payment Links
Checkout
Web Elements
    概要
    Payment Element
      Payment Element のベストプラクティス
      カード Element の比較
      Payment Intents を使用して Payment Element に移行
      Checkout セッションを使用して Payment Element に移行
      Confirmation Tokens に移行
    Express Checkout Element
    Address Element
    Currency Selector Element
    Link Authentication Element
    Payment Method Messaging Element
    納税者番号 Element
アプリ内決済
決済シナリオ
複数の通貨を扱う
カスタムの決済フロー
柔軟なアクワイアリング
オーケストレーション
店頭支払い
端末
決済にとどまらない機能
会社を設立する
仮想通貨
エージェント型ワークフロー
Financial Connections
Climate
不正利用について
Radar の不正防止
不審請求の申請の管理
本人確認
ホーム支払いWeb ElementsPayment Element

注

このページはまだ日本語ではご利用いただけません。より多くの言語で文書が閲覧できるように現在取り組んでいます。準備が整い次第、翻訳版を提供いたしますので、もう少しお待ちください。

Checkout Sessions API を使用した Payment Element へ移行する

1 つの Element で多くの決済手段を受け付けながら、税金、配送料、割引、通貨換算なども管理できます。

以前は、各決済手段 (カード、iDEAL など) に個別の Element が必要でした。Payment Element に移行すると、1 つの Element で多くの決済方法を受け付けられます。Payment Intents から Checkout Sessions に移行することで、追加機能を使用できます。これにより、実装でサブスクリプション、割引、配送、通貨換算を管理できるようになります。

Card Element を PaymentIntents または SetupIntents と併用していて、Payment Element への移行のみを行う場合は、Payment Element に移行するをご覧ください。ユースケースに合わない場合は、他の決済実装を比較することもできます。

PaymentIntents と SetupIntents には、それぞれ独自の移行ガイドラインがあります。サンプルコードを含む、実装パスの適切なガイドを参照してください。

既存の実装で今後の決済に Payment Intents API を使用している場合は、1 回限りの決済を作成・追跡するか、決済中にカードの詳細を保存します。以下の手順に従って、Payment Element と Checkout Sessions 使用します。

支払い方法を有効にする

注意

この導入パスは、Automated Clearing Settlement System (ACSS) を使用する BLIK またはプレオーソリデビットに対応していません。

決済手段の設定を表示して、対応する予定の決済手段を有効にします。Checkout セッションを作成するには、決済手段を 1 つ以上有効にする必要があります。

多くの顧客から決済を受け付けられるよう、Stripe では、カードやその他一般的な決済手段がデフォルトで有効になっていますが、ビジネスや顧客に適した追加の決済手段を有効にすることをお勧めします。プロダクトと決済手段のサポートについては決済手段のサポートを、手数料については料金体系ページをご覧ください。

PaymentIntent 作成コールを移行する
サーバー側

2025-03-31.basil API バージョン以降を使用するよう SDK を設定します。

TypeScript
Node.js
Ruby
PHP
Python
Go
.NET
Java
No results
// Set your secret key. Remember to switch to your live secret key in production. // See your keys here: https://dashboard.stripe.com/apikeys import Stripe from 'stripe'; const stripe = new Stripe(
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
, { apiVersion: '2025-03-31.basil;' as any, });

Payment Element では複数の決済手段を受け付けられるため、Checkout Session に payment_method_types を渡さないと自動的に有効になる dynamic payment メソッドを使用することをお勧めします。これを有効にすると、Stripe は通貨、決済手段の制限、その他のパラメーターを評価して、顧客が利用できる決済手段のリストを決定します。購入完了率が高く、顧客の通貨と場所に最も関連性の高い決済手段を優先します。

代わりに、PaymentIntent 作成コールを更新して Checkout Session を作成します。Checkout Sessions インスタンスでは、以下を渡します。

  • line_items:注文の内容を表します
  • ui_mode: custom: 埋め込みコンポーネントを使用していることを示します
  • mode: payment:Checkout Session の 1 回限りの支払いを受け付けることを示します
  • return_url顧客が決済手段のアプリまたはサイトで決済を認証またはキャンセルした後にリダイレクトされる URL を表します。

さらに、Checkout Session の client_secret をクライアント側に返して、後で使用するようにします。

各 Checkout Session は、確認時に PaymentIntent を生成します。PaymentIntent の作成時に現在の実装から追加のパラメータを保持する場合は、payment_intent_data で使用可能なオプションを参照してください。

前
後
Ruby
Python
PHP
Node.js
Go
Java
.NET
No results
intent = Stripe::PaymentIntent.create({ amount: 1099, currency: 'usd', payment_method_types: ['card'], })
Ruby
Python
PHP
Node.js
Go
Java
.NET
No results
session = Stripe::Checkout::Session.create({ line_items: [ { price_data: { currency: 'usd', product_data: {name: 'T-shirt'}, unit_amount: 1099, }, quantity: 1, }, ], mode: 'payment', ui_mode: 'custom', return_url: '{{RETURN_URL}}', }) { clientSecret: session.client_secret, }.to_json

オプションCheckout Session の追加オプション
サーバー側

Checkout Sessions は、決済の回収に影響する追加オプションを受け入れます。

プロパティタイプ説明必要
mode
  • payment
  • setup
  • subscription
Payment Element が PaymentIntent、SetupIntent、または Subscription のいずれで使用されるかを示します。あり
line_items
  • array of objects
顧客が購入しているアイテムのリスト。設定可能なパラメーターの詳細をご覧ください。はい payment モードと subscription モードの場合)
automatic_tax
  • {enabled: boolean}
このパラメーターを有効にすると、Checkout は税金の計算に必要な請求先住所情報を収集します。なし
allow_promotion_codes
  • boolean
ユーザーが引き換え可能なプロモーションコードを有効にします。なし
billing_address_collection
  • auto
  • required
Checkout が顧客の請求先住所を収集するかどうかを指定します。既定値は auto です。なし
payment_method_types
  • array of enums
この Checkout Session で受け付けられる決済手段 (カードなど) のタイプのリスト。動的な決済手段を使用している場合、これは必要ありません。なし
phone_number_collection
  • {enabled: boolean}
セッションの電話番号収集設定を制御します。payment モードと subscription モードで設定できます。なし
shipping_address_collection
  • {allowed_countries: array of enums}
設定すると、Checkout が顧客から配送先住所を収集するための設定が提供されます。なし
shipping_options
  • array of objects
このセッションに適用する配送料オプション。最大 5 つ。なし
customer_creation
  • always
  • if_required
セッションにまだ渡されていない Customer が Checkout Session で作成されるかどうかを制御します。このオプションは、payment モードと setup モードで設定できます。なし

Elements インスタンスの移行
クライアント側

Stripe.js スクリプトを決済ページに含めるには、このスクリプトを HTML ファイルの head に追加します。PCI 準拠を維持するために、いつでも js.stripe.com から Stripe.js を直接読み込みます。スクリプトをバンドルに含めたり、コピーを自身でホストすることがないようにしてください。

Ensure you’re on the latest Stripe.js version by including the following script tag <script src=“https://js.stripe.com/clover/stripe.js”></script>. Learn more about Stripe.js versioning and support policy.

checkout.html
<head> <title>Checkout</title> <script src="https://js.stripe.com/clover/stripe.js"></script> </head>

サーバーから返された Client Secret を格納する Promise<string> | string として clientSecret を作成します。

stripe.elements() 呼び出しをstripe.initCheckout で置き換えます。clientSecret を渡します。initCheckout は、Checkout インスタンスに解決するプロミスを返します。

Checkout オブジェクトは決済ページの基盤として機能し、Checkout セッションからのデータと、セッションを更新するメソッドが含まれています。

checkout.session() によって返されるオブジェクトを価格の参照として使用します。セッションから total と lineItems を読み取り、UI に表示することをお勧めします。

これにより、最小限のコード変更で新機能を有効にできます。たとえば、手動通貨価格 を追加しても、合計 を表示する場合、 UI を変更する必要はありません。

前
後
const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
); const elements = stripe.elements();
checkout.js
const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
); const clientSecret = fetch('/create-checkout-session', {method: 'POST'}) .then((response) => response.json()) .then((json) => json.checkoutSessionClientSecret); stripe.initCheckout({clientSecret}) .then((checkout) => { const checkoutContainer = document.getElementById('checkout-container'); checkoutContainer.append(JSON.stringify(checkout.lineItems, null, 2)); checkoutContainer.append(document.createElement('br')); checkoutContainer.append(`Total: ${checkout.session().total.total.amount}`); });
index.html
<div id="checkout-container"></div>

顧客のメールアドレスを収集する
クライアント側

埋め込みコンポーネントに移行するには、顧客のメールを収集する追加の手順が必要です。

Checkout セッションの作成時に既存の customer_email や、有効なメールアドレスを設定した Customer (顧客) をすでに渡している場合は、このステップを省略できます。

自社のメールアドレス検証を実装している場合は、checkout.confirm で検証済みのメールアドレスを渡して、このステップを省略できます。

顧客のメールアドレスを収集するためのメールアドレス入力を作成します。顧客が入力を完了してメールアドレスを検証し、保存したら、updateEmail を呼び出します。

決済フォームのデザインに応じて、次の方法で updateEmail を呼び出すことができます。

  • 支払いの送信の直前。また、updateEmail を呼び出して、早い段階 (ぼかしの入力時など) で検証することもできます。
  • 次のステップに進む前 (フォームが複数のステップからなる場合の保存ボタンのクリック時など)。
index.html
<input type="text" id="email" /> <div id="email-errors"></div>
checkout.js
const checkout = stripe.initCheckout({clientSecret}); const loadActionsResult = await checkout.loadActions(); if (loadActionsResult.type === 'success') { const {actions} = loadActionsResult; const emailInput = document.getElementById('email'); const emailErrors = document.getElementById('email-errors'); emailInput.addEventListener('input', () => { // Clear any validation errors emailErrors.textContent = ''; }); emailInput.addEventListener('blur', () => { const newEmail = emailInput.value; actions.updateEmail(newEmail).then((result) => { if (result.error) { emailErrors.textContent = result.error.message; } }); }); }

Payment Element を追加する
クライアント側

Card Element と個々の payment メソッドの Element を Payment Element に置き換えることができるようになりました。Payment Element は、決済手段と国に基づいて入力フィールドを収集するように自動的に調整されるため (たとえば、SEPA ダイレクトデビットの全請求先住所の収集)、カスタマイズされた入力フィールドを維持する必要がなくなります。

次の例では、CardElement を PaymentElement に置き換えます。

checkout.html
<form id="payment-form"> <div id="card-element"> </div> <div id="payment-element"> <!-- Mount the Payment Element here --> </div> <button id="submit">Submit</button> </form>
checkout.js
const cardElement = elements.create("card"); cardElement.mount("#card-element"); const paymentElement = checkout.createPaymentElement(); paymentElement.mount("#payment-element");

送信ハンドラを更新する
クライアント側

stripe.confirmCardPayment や stripe.confirmP24Payment などの個別の確認方法を使用する代わりに、checkout.confirm を使用して決済情報を収集し、Stripeに送信します。

Checkout Session を確定するには、個々の confirm メソッドの代わりに checkout.confirm を使用するように送信ハンドラを更新します。

呼び出されると、checkout.confirm は、3DS ダイアログを表示したり、銀行のオーソリページにリダイレクトしたりするなど、必要なアクションの完了を試みます。確認が完了すると、顧客は設定したreturn_url にリダイレクトされます。これは通常、決済のステータスを提供するウェブサイトのページに対応します。

カード決済で同じ決済フローを維持し、リダイレクトベースの決済手段でのみリダイレクトする場合は、redirect を if_required に設定できます。

次のコード例では、stripe.confirmCardPayment を checkout.confirm に置き換えています。

前
後
// Create the PaymentIntent and obtain clientSecret const res = await fetch("/create-intent", { method: "POST", headers: {"Content-Type": "application/json"}, }); const {client_secret: clientSecret} = await res.json(); const handleSubmit = async (event) => { event.preventDefault(); if (!stripe) { // Stripe.js hasn't yet loaded. // Make sure to disable form submission until Stripe.js has loaded. return; } setLoading(true); const {error} = await stripe.confirmCardPayment(clientSecret, { payment_method: { card: elements.getElement(CardElement) } }); if (error) { handleError(error); } };
const handleSubmit = async (event) => { event.preventDefault(); if (!stripe) { // Stripe.js hasn't yet loaded. // Make sure to disable form submission until Stripe.js has loaded. return; } setLoading(true); const {error} = await checkout.confirm(); if (error) { handleError(error); } };

オプション決済フロー中に支払い情報を保存する

既存の実装で決済中に決済の詳細も保存される場合は、Checkout Session の作成時に stripe.confirmCardPayment を使用して決済の確認ステージで setup_future_usage を渡す代わりに、saved_payment_method_options.payment_method_save パラメーターを使用します。

決済手段を保存するには、Customer が必要です。既存の Customer を渡すか、または新しい Customer を作成するために Checkout Session の customer_creation を always に設定します。

Ruby
Python
PHP
Node.js
Go
Java
.NET
No results
session = Stripe::Checkout::Session.create({ line_items: [ { price_data: { currency: 'usd', product_data: {name: 'T-shirt'}, unit_amount: 1099, }, quantity: 1, }, ], mode: 'payment', ui_mode: 'custom', return_url: '{{RETURN_URL}}', customer_creation: 'always', saved_payment_method_options: {payment_method_save: 'enabled'}, })

また、Checkout Session を確定する際に savePaymentMethod の値を渡して、決済手段が保存されているかどうかを確認する必要があります。

const {errors} = await checkout.confirm( {savePaymentMethod: true} )

支払い後のイベントを処理する
サーバー側

支払いが完了すると、Stripe は checkout.session.completed イベントを送信します。ダッシュボード Webhook ツールを使用して、または Webhook ガイドに従って、これらのイベントを受信し、顧客への注文確認メールの送信、データベースへの販売の記録、配送ワークフローの開始などのアクションを実行します。

クライアントからのコールバックを待たずにこれらのイベントをリッスンします。クライアント側では、コールバックが実行される前に顧客がブラウザーのウィンドウを閉じたり、アプリを終了したりする可能性があるだけでなく、不正なクライアントによってレスポンスが操作される可能性もあります。非同期型のイベントをリッスンするよう実装を設定すると、単一の実装で異なるタイプの支払い方法を受け付けできるようになります。

Payment Element を使用して支払いを収集する場合は、checkout.session.completed イベントの他にこれらのイベントを処理することをお勧めします。

イベント説明アクション
checkout.session.completed顧客が正常に決済を完了したときに送信されます。顧客に注文の確定を送信し、顧客の注文のフルフィルメントを実行します。
checkout_session.async_payment_succeeded遅延した決済手段を使用した顧客による決済が最終的に成功したときに送信されます。顧客に注文の確定を送信し、顧客の注文のフルフィルメントを実行します。
checkout.session.async_payment_failed顧客が支払いを試みたが、支払いに失敗した場合に送信されます。決済は async_payment_failed から変わり、もう一度決済を試す機会が顧客に提供されます。
checkout.session.expired顧客の決済セッションの有効期限が切れたとき (24 時間後) に送信されます。決済は expired から payment_failed に変わり、決済ページの再読み込みを試し新しい決済セッションを作成する機会が顧客に提供されます。

組み込みをテストする

  1. 決済ページに移動します。
  2. 次の表の決済手段を使用して、支払いの詳細を入力します。カード支払いの場合:
    • カードの有効期限として任意の将来の日付を入力します。
    • 任意の 3 桁のセキュリティコードを入力します。
    • 請求先の任意の郵便番号を入力します。
  3. Stripe に決済を送信します。
  4. ダッシュボードに移動し、取引ページで決済を探します。決済が成功していると、そのリストに表示されます。
  5. 決済をクリックすると、請求先情報や購入したアイテムのリストなどの詳細が表示されます。この情報を使用して注文のフルフィルメントを実行できます。
カード番号シナリオテスト方法
カード支払いは成功し、認証は必要とされません。クレジットカード番号と、任意の有効期限、セキュリティコード、郵便番号を使用してクレジットカードフォームに入力します。
カード支払いには認証が必要です。クレジットカード番号と、任意の有効期限、セキュリティコード、郵便番号を使用してクレジットカードフォームに入力します。
カードは、insufficient_funds などの拒否コードで拒否されます。クレジットカード番号と、任意の有効期限、セキュリティコード、郵便番号を使用してクレジットカードフォームに入力します。
UnionPay カードは、13 ~ 19 桁の可変長です。クレジットカード番号と、任意の有効期限、セキュリティコード、郵便番号を使用してクレジットカードフォームに入力します。

実装内容をテストするためのその他の情報については、テストをご覧ください。

参照情報

  • 請求先住所と配送先住所を収集する
  • 1 回限りの決済にプロモーションコードを使用する
  • 税金を自動徴収する
  • 項目の数を調整可能にする
  • 自動通貨換算
このページはお役に立ちましたか。
はいいいえ
  • お困りのことがございましたら 、サポートにお問い合わせください。
  • 早期アクセスプログラムにご参加ください。
  • 変更ログをご覧ください。
  • ご不明な点がございましたら、お問い合わせください。
  • LLM ですか?llms.txt を読んでください。
  • Powered by Markdoc