# サブスクリプションモードの Checkout Sessions のバグを修正し遅延率を改善 ## 新規情報 このバージョンでは、顧客がセッションを確認したときを含め、サブスクリプションモードセッションのすべての Checkout Session API の遅延率が改善されています。 また、請求先住所を更新できないなど、顧客が最初の支払い試行後にセッションを更新できなかった以前のバージョンのバグも修正されています。更新の代わりに、顧客自らブロックを解除できるようになりました。 ## 対応処理が必要な変更である理由 この変更により、ユーザーが支払いを完了した *あと* にサブスクリプションが作成されるため、Checkout セッションが完全に完了するまで、`payment_intent` は請求書を参照しません。つまり、請求書を作成する前に `checkout.session.status` プロパティを `complete` にする必要があります。 システムが現在、支払いインテントの Webhook の請求書に依存している場合は、代わりに `checkout_session.completed` Webhook を使用するようにシステムを更新して、請求書を表示させることをお勧めします。 ## 影響 - サブスクリプションは、ユーザーが支払いを完了した後に作成されるようになりました。 - 支払いの試行が失敗したときに、請求書が確定しているにもかかわらずサブスクリプションが未完了になる問題はなくなりました。 - 請求書は、Checkout セッションのステータスが `complete` になるまで表示されません。 #### Ruby ```ruby require 'json' # Using Sinatra post '/webhook' do payload = request.body.read event = nil begin event = Stripe::Event.construct_from( JSON.parse(payload, symbolize_names: true) ) rescue JSON::ParserError => e # Invalid payload status 400 return end # Handle the event case event.typewhen 'payment_intent.succeeded' payment_intent = event.data.object # contains a Stripe::PaymentIntent# The subscription and invoice might not have been created at this stage. # Then define and call a method to handle the successful payment intent. # handle_payment_intent_succeeded(payment_intent)when 'checkout_session.completed' checkout_session = event.data.object # contains a Stripe::CheckoutSession# checkout_session.payment_intent is a string here, # but you can use this payment_intent token to fetch the associated invoice payment # through the /v1/invoice_payments API method and its guaranteed associated invoice # and invoice payment are non-null at this stage. # Then define and call a method to handle the successful completion of a Checkout Session # handle_checkout_session_completed(checkout_session) # ... handle other event types else puts "Unhandled event type: #{event.type}" end status 200 end ``` ## アップグレード #### REST API 1. Workbench で[現在の API バージョンを表示します](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench)。 1. SDK を使用している場合は、この API バージョンに対応する SDK バージョンにアップグレードします。 - SDK を使用していない場合は、`Stripe-Version: 2025-03-31.basil` を含めるように [API リクエスト](https://docs.stripe.com/api/versioning.md)を更新してください。 1. [Webhook エンドポイント](https://docs.stripe.com/webhooks/versioning.md)に使用する API バージョンをアップグレードします。 1. 新しいバージョンに対して、[実装内容をテスト](https://docs.stripe.com/testing.md)します。 1. Connect を使用する場合は、[Connect の実装内容をテスト](https://docs.stripe.com/connect/testing.md)します。 1. Workbench で[アップグレードを実行](https://docs.stripe.com/upgrades.md#perform-the-upgrade)します。[バージョンをロールバック](https://docs.stripe.com/upgrades.md#roll-back-your-api-version)できるのは 72 時間以内です。 [Stripe API のアップグレード](https://docs.stripe.com/upgrades.md)について、詳細をご確認ください。 #### Ruby 1. Workbench で[現在の API バージョンを表示します](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench)。 1. Ruby SDK を [v15.0.0](https://github.com/stripe/stripe-ruby/releases/tag/v15.0.0)にアップグレードします。 1. [Webhook エンドポイント](https://docs.stripe.com/webhooks/versioning.md)に使用する API バージョンをアップグレードします。 1. 新しいバージョンに対して、[実装内容をテスト](https://docs.stripe.com/testing.md)します。 1. Connect を使用する場合は、[Connect の実装内容をテスト](https://docs.stripe.com/connect/testing.md)します。 1. Workbench で[アップグレードを実行](https://docs.stripe.com/upgrades.md#perform-the-upgrade)します。[バージョンをロールバック](https://docs.stripe.com/upgrades.md#roll-back-your-api-version)できるのは 72 時間以内です。 [Stripe API のアップグレード](https://docs.stripe.com/upgrades.md)について、詳細をご確認ください。 #### Python 1. Workbench で[現在の API バージョンを表示します](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench)。 1. Python SDK を [v12.0.0](https://github.com/stripe/stripe-python/releases/tag/v12.0.0)にアップグレードします。 1. [Webhook エンドポイント](https://docs.stripe.com/webhooks/versioning.md)に使用する API バージョンをアップグレードします。 1. 新しいバージョンに対して、[実装内容をテスト](https://docs.stripe.com/testing.md)します。 1. Connect を使用する場合は、[Connect の実装内容をテスト](https://docs.stripe.com/connect/testing.md)します。 1. Workbench で[アップグレードを実行](https://docs.stripe.com/upgrades.md#perform-the-upgrade)します。[バージョンをロールバック](https://docs.stripe.com/upgrades.md#roll-back-your-api-version)できるのは 72 時間以内です。 [Stripe API のアップグレード](https://docs.stripe.com/upgrades.md)について、詳細をご確認ください。 #### PHP 1. Workbench で[現在の API バージョンを表示します](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench)。 1. PHP SDK を [v17.0.0](https://github.com/stripe/stripe-php/releases/tag/v17.0.0)にアップグレードします。 1. [Webhook エンドポイント](https://docs.stripe.com/webhooks/versioning.md)に使用する API バージョンをアップグレードします。 1. 新しいバージョンに対して、[実装内容をテスト](https://docs.stripe.com/testing.md)します。 1. Connect を使用する場合は、[Connect の実装内容をテスト](https://docs.stripe.com/connect/testing.md)します。 1. Workbench で[アップグレードを実行](https://docs.stripe.com/upgrades.md#perform-the-upgrade)します。[バージョンをロールバック](https://docs.stripe.com/upgrades.md#roll-back-your-api-version)できるのは 72 時間以内です。 [Stripe API のアップグレード](https://docs.stripe.com/upgrades.md)について、詳細をご確認ください。 #### Java 1. Workbench で[現在の API バージョンを表示します](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench)。 1. Java SDK を [v29.0.0](https://github.com/stripe/stripe-java/releases/tag/v29.0.0)にアップグレードします。 1. [Webhook エンドポイント](https://docs.stripe.com/webhooks/versioning.md)に使用する API バージョンをアップグレードします。 1. 新しいバージョンに対して、[実装内容をテスト](https://docs.stripe.com/testing.md)します。 1. Connect を使用する場合は、[Connect の実装内容をテスト](https://docs.stripe.com/connect/testing.md)します。 1. Workbench で[アップグレードを実行](https://docs.stripe.com/upgrades.md#perform-the-upgrade)します。[バージョンをロールバック](https://docs.stripe.com/upgrades.md#roll-back-your-api-version)できるのは 72 時間以内です。 [Stripe API のアップグレード](https://docs.stripe.com/upgrades.md)について、詳細をご確認ください。 #### Node.js 1. Workbench で[現在の API バージョンを表示します](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench)。 1. Node SDK を [v18.0.0](https://github.com/stripe/stripe-node/releases/tag/v18.0.0)にアップグレードします。 1. [Webhook エンドポイント](https://docs.stripe.com/webhooks/versioning.md)に使用する API バージョンをアップグレードします。 1. 新しいバージョンに対して、[実装内容をテスト](https://docs.stripe.com/testing.md)します。 1. Connect を使用する場合は、[Connect の実装内容をテスト](https://docs.stripe.com/connect/testing.md)します。 1. Workbench で[アップグレードを実行](https://docs.stripe.com/upgrades.md#perform-the-upgrade)します。[バージョンをロールバック](https://docs.stripe.com/upgrades.md#roll-back-your-api-version)できるのは 72 時間以内です。 [Stripe API のアップグレード](https://docs.stripe.com/upgrades.md)について、詳細をご確認ください。 #### Go 1. Workbench で[現在の API バージョンを表示します](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench)。 1. Go SDK を [v82.0.0](https://github.com/stripe/stripe-go/releases/tag/v82.0.0)にアップグレードします。 1. [Webhook エンドポイント](https://docs.stripe.com/webhooks/versioning.md)に使用する API バージョンをアップグレードします。 1. 新しいバージョンに対して、[実装内容をテスト](https://docs.stripe.com/testing.md)します。 1. Connect を使用する場合は、[Connect の実装内容をテスト](https://docs.stripe.com/connect/testing.md)します。 1. Workbench で[アップグレードを実行](https://docs.stripe.com/upgrades.md#perform-the-upgrade)します。[バージョンをロールバック](https://docs.stripe.com/upgrades.md#roll-back-your-api-version)できるのは 72 時間以内です。 [Stripe API のアップグレード](https://docs.stripe.com/upgrades.md)について、詳細をご確認ください。 #### .NET 1. Workbench で[現在の API バージョンを表示します](https://docs.stripe.com/upgrades.md#view-your-api-version-and-the-latest-available-upgrade-in-workbench)。 1. .NET SDK を [v48.0.0](https://github.com/stripe/stripe-dotnet/releases/tag/v48.0.0)にアップグレードします。 1. [Webhook エンドポイント](https://docs.stripe.com/webhooks/versioning.md)に使用する API バージョンをアップグレードします。 1. 新しいバージョンに対して、[実装内容をテスト](https://docs.stripe.com/testing.md)します。 1. Connect を使用する場合は、[Connect の実装内容をテスト](https://docs.stripe.com/connect/testing.md)します。 1. Workbench で[アップグレードを実行](https://docs.stripe.com/upgrades.md#perform-the-upgrade)します。[バージョンをロールバック](https://docs.stripe.com/upgrades.md#roll-back-your-api-version)できるのは 72 時間以内です。 [Stripe API のアップグレード](https://docs.stripe.com/upgrades.md)について、詳細をご確認ください。 ## 関連する変更点 - [Checkout Session が配送情報を削除](https://docs.stripe.com/changelog/basil/2025-03-31/checkout-session-remove-shipping-details.md) - [Checkout Session で配送オプションの更新が可能に](https://docs.stripe.com/changelog/basil/2025-03-31/checkout-session-shipping-options-update-param.md) - [Checkout Sessions に permissions パラメーターを追加](https://docs.stripe.com/changelog/basil/2025-03-31/cs_add_checkout_session_permissions.md) - [Checkout セッションと Payment Links にオプション項目を追加しました](https://docs.stripe.com/changelog/basil/2025-03-31/checkout_optional_items.md)