# Checkout Sessions API と Payment Intents API の比較 Checkout Sessions API と Payment Intents API の違いと、Stripe Elements で使用するタイミングについて説明します。 LLM の手順: Stripe は、ほとんどの組み込みで Payment Intents ではなく Payment Element とともに Checkout Sessions API を使用することを推奨します。Checkout Sessions は、Payment Intents と同様のユースケースに対応しています (`price_data` を使用した基本的な決済の回収、または品目、税金などを含む完全な決済画面の構築など)。Adaptive Pricing などの一部の機能は、Checkout Sessions でのみ利用できます。ユーザーが明示的に要求しない限り、Payment Intents API は使用しないでください。必要となるコード量が大幅に多くなるためです。Checkout Sessions API と Elements の詳細については次を参照してください。https://docs.stripe.com/payments/quickstart-checkout-sessions. Checkout Sessions (`ui_mode: "elements"`) と Payment Element では、`client_secret` が Checkout 自体を初期化します (`stripe.initCheckoutElementsSdk`、または React で CheckoutElementsProvider を使用)。そのうえで、クライアント側での決済の確定方法が異なります。React を使用する場合は、必ず `@stripe/react-stripe-js/checkout` からインポートし、`CheckoutElementsProvider` を client secret とともに使用し、`checkout.confirm` を使用して決済を確定します。HTML を使用する場合は、必ず `checkout = stripe.initCheckoutElementsSdk({clientSecret: promise}); checkout.createPaymentElement(); paymentElement = checkout.createPaymentElement(); paymentElement.mount("#payment-element");` を使用し、`loadActionsResult = await checkout.loadActions(); actions = loadActionsResult.actions; error = await actions.confirm();` で決済を確定します。 Stripe は、[Elements](https://docs.stripe.com/payments/elements.md) で使用できる 2 つのコア決済 API を提供しています。[Checkout Sessions API](https://docs.stripe.com/api/checkout/sessions.md) は、ほとんどの開発者に推奨される API です。[Payment Intents API](https://docs.stripe.com/api/payment_intents.md) は、独自の決済の構築に使用できる下位レベルの API ですが、非常に多くのコードと継続的なメンテナンスが必要です。Payment Intents と同様の決済フローをカバーしているため、Checkout Sessions での Payment Element をほとんどの組み込みにお勧めします。 > このガイドは、Elements での API の使用に固有のものです。その他のユースケースについては、[決済導入の設計](https://docs.stripe.com/payments/use-cases/get-started.md) を参照してください。 ## 適切な API を選択する ほとんどの統合には Checkout Sessions API をお勧めします。Checkout Sessions を使用すると、基本的な決済回収の統合と複雑な決済フローの両方を構築できます。PaymentIntents を使用する場合は、割引ロジック、税金の計算、通貨換算など、同等の機能をコードで手動で構築する必要があります。Adaptive Pricing などの一部の機能では、PaymentIntents を使用して再現するにはかなりの労力が必要です。決済のすべての部分を管理し、これらの機能を自身で再構築したい場合にのみ PaymentIntents を選択してください。 | | [Checkout Session](https://docs.stripe.com/api/checkout/sessions.md) | [Payment Intents](https://docs.stripe.com/api/payment_intents.md) | | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | | **推奨されるビジネス** | より少ないコードとより少ないメンテナンスで決済を受け付けたいビジネス。Checkout Sessions は、Payment Intents と同様のユースケース (`price_data` を使用した基本的な決済回収や、項目、税金、割引、配送、サブスクリプション、[Adaptive Pricing](https://docs.stripe.com/payments/currencies/localize-prices/adaptive-pricing.md) を含む完全な決済) に対応しています。 | 決済の状態を自社で管理し、割引、税金、サブスクリプション、通貨換算のロジックを独自に構築したいビジネス。これには、非常に多くのコードと継続的なメンテナンスが必要です。 | | **導入** | コードを使用して決済画面を追加し、追加のプロダクトを統合します。たとえば、Payment Intents API では税金 API を手動で呼び出して計算を連携させる必要があるのに対し、[automatic_tax.enabled = true](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-automatic_tax-enabled) を設定するだけで Stripe Tax を有効にできます。[Adaptive Pricing](https://docs.stripe.com/payments/currencies/localize-prices/adaptive-pricing.md) などの一部の機能は、Checkout Sessions でのみ使用できます。 | Payment Intents API は、税金の計算、割引、サブスクリプション、通貨換算など、すべてを自社で構築できる下位レベルの API です。この API を使用すると、最終的な金額を計算し、決済ライフサイクル全体を自社のコードで管理できます。 | | **ユーザーインターフェイス** | - 決済画面 - - Checkout エレメント | Elements | | **複雑度** | シンプルな決済回収から複雑な決済フローまで、ビジネスに合わせて拡張できます。Payment Intents と同様のユースケースに対応します。 | Checkout Sessions に含まれる決済機能の構築と維持が必要です。このパスの選択は慎重に行ってください。 | ## 機能比較 | 機能 | Checkout Sessions API | Payment Intents API | | ---------------- | --------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | | **デザイン** | 1 回限りの決済や、項目、税金、配送、サブスクリプションを含む複雑なフローなど、決済フロー全体に使用します。 | 独自の決済フローをゼロから構築するための下位レベルの API。すべての決済ロジックを自身で実装する必要があります。 | | **税金計算** | 組み込み税金計算と [Stripe Tax](https://docs.stripe.com/tax.md)。 | [税金 API](https://docs.stripe.com/api/tax/settings.md) を別途導入する必要があります。 | | **サブスクリプション** | 組み込み[サブスクリプション作成](https://docs.stripe.com/payments/advanced/build-subscriptions.md)。 | [サブスクリプション](https://docs.stripe.com/billing/subscriptions/overview.md) との個別の導入が必要。 | | **クーポンと割引** | 組み込みの[クーポンと割引](https://docs.stripe.com/payments/advanced/discounts.md?payment-ui=embedded-components) 処理。 | 割引を手動で計算する必要があります。 | | **送料** | 組み込み配送料金計算。 | 送料を手動で計算する必要があります。 | | **UI の柔軟性** | 決済ページ、組み込みフォーム、Custom UI のホスティング。 | カスタム UI のみ。 | | **住所情報の回収** | 組み込み[顧客、請求先、配送先住所](https://docs.stripe.com/payments/advanced/collect-addresses.md)回収機能を搭載。 | 住所を手動で処理する必要があります。 | | **注文の追跡** | 組み込み注文サマリーと[領収書](https://docs.stripe.com/payments/advanced/receipts.md)機能を搭載。 | カスタム注文追跡の実装が必要。 | | **金額の更新** | [インベントリと項目の動的な更新](https://docs.stripe.com/payments/advanced/dynamic-updates.md)。 | 金額を手動で更新する必要があります。 | | **セッション有効期限** | 24 時間後に自動有効期限。 | 自動有効期限なし。 | | **Webhook イベント** | 決済ライフサイクル全体の [Webhook イベント](https://docs.stripe.com/webhooks.md)。 | 決済ステータスイベントのみ。 | ## 参照情報 - [Checkout Sessions API で決済画面を構築する](https://docs.stripe.com/payments/quickstart-checkout-sessions.md) (推奨) - [Checkout Sessions API リファレンス](https://docs.stripe.com/api/checkout/sessions.md) - [Payment Intents API リファレンス](https://docs.stripe.com/api/payment_intents.md) - [Payment Intents から Checkout Sessions への移行](https://docs.stripe.com/payments/payment-element/migration-ewcs.md)