トライアル期間を動的に更新する非公開プレビュー
決済時に加えられた変更に応じてトライアル期間を更新します。
非公開プレビュー版
この機能はプライベートプレビュー版です。動的なトライアル更新の利用をリクエストします。
サブスクリプションの Checkout セッションのトライアル期間を動的に更新する方法をご紹介します。
ユースケース
- 動的なトライアル管理:プロモーション条件や顧客のアクションに基づいてトライアルを追加または削除します。
- アップセル時のトライアル期間の延長:顧客が上位プランにアップグレードする際に、トライアル期間を延長します(例: 月額の 7 日間を年額では 14 日間に延長)。
SDK を設定するサーバー側
サーバー側
Stripe の公式ライブラリを使用して、アプリケーションから Stripe API にアクセスします。
サーバー SDK の更新サーバー側
サーバー側
このベータ版を使用するには、まず非公開プレビュー版の API バージョンと checkout_
のベータ版ヘッダーを使用するように SDK を更新します。
トライアル期間を動的に更新するサーバー側
サーバー側
サーバー上に新しいエンドポイントを作成して、Checkout セッションでの年額アップセルのトライアル期間を更新します。これは、後のステップでフロントエンドから呼び出します。
セキュリティのヒント
クライアント側のコードは、ユーザーが完全に制御できる環境で実行されます。悪意のあるユーザーは、クライアント側の検証をバイパスしたり、リクエストを傍受して変更したり、サーバーに対してまったく新しいリクエストを作成したりする可能性があります。
エンドポイントを設計する際は、以下を考慮することをお勧めします。
- エンドポイントは過度に汎用的にするのではなく、特定の顧客とのやり取りに対応するように設計します (たとえば、一般的な「更新」アクションではなく、「年額アップグレードのトライアル期間の延長」など)。具体的なエンドポイントは目的がわかりやすく、検証ロジックの記述と維持が簡単になります。
- セッションデータをクライアントからエンドポイントに直接渡さないようにしてください。悪意のあるクライアントがリクエストデータを変更する可能性があり、Checkout セッションの状態を判断するためのソースとしての信頼性が低くなってしまいます。代わりに、セッション ID をサーバーに渡し、それを使用して Stripe の API からデータを安全に取得します。
トライアル期間は、次のいずれかを使用して更新できます。
trial_
:トライアル期間の日数を表す整数、またはトライアルを削除する空の文字列period_ days trial_
:トライアルの終了日を表す Unix タイムスタンプ、またはトライアルを削除するための空の文字列end
次の説明を参考にしてください。
trial_
パラメーターとperiod_ days trial_
パラメーターは相互排他的です。1 回の更新リクエストで指定できるのは、そのうちの 1 つだけです。end - トライアルを削除する場合は、トライアルに設定されたフィールドと同じフィールドを使用します。
trial_
が設定されたトライアルセットは、period_ days trial_
を指定してのみ削除できます。period_ days: "" trial_
が設定されたトライアルセットは、end trial_
を指定してのみ削除できます。end: ""
実装のテスト
実装内容をテストして、トライアル期間の更新が正しく機能していることを確認します。
- 初回トライアル期間を指定してサブスクリプションの Checkout セッションを作成します。
- 作成した UI 要素を操作して、サーバーエンドポイントをトリガーします。
- トライアル期間が Checkout セッションで正しく更新されていることを確認します。
- 決済を完了して、サブスクリプションが正しいトライアル設定で作成されていることを確認します。
注
テストする際は、Stripe のテスト環境を使用して本番サブスクリプションが作成されないようにします。トライアル期間の変更を確認するには、Checkout Session オブジェクトまたは作成されたサブスクリプションを調べます。
一般的なシナリオのテスト
- トライアルの延長:7 日間のトライアルを開始した後、期間を 14 日間に延長し、その変更が UI と セッションオブジェクトに反映されていることを確認します。
- 既存のトライアルの削除:7 日間のトライアルを開始した後、トライアルを削除し、その変更が UI とセッションオブジェクトに反映されていることを確認します。設定されたフィールドと同じフィールドを使用してトライアルを削除します。
- エラー処理:無効なリクエストをテストして、エラー処理が正しく機能することを確認します。