トライアル期間を動的に更新する
決済中にサブスクリプションのトライアル期間を変更する方法をご紹介します。
プライベートプレビュー
動的トライアル更新はプライベートプレビューです。動的トライアル更新へのアクセスをリクエストする
サブスクリプションの Checkout セッションのトライアル期間を動的に更新する方法をご紹介します。
ユースケース
- 動的なトライアル管理:プロモーション条件や顧客のアクションに基づいてトライアルを追加または削除します。
- アップセル時のトライアル期間の延長:顧客が上位プランにアップグレードする際に、トライアル期間を延長します(例: 月額の 7 日間を年額では 14 日間に延長)。
Payment Intents API
Payment Intents API を使用している場合は、Subscriptions API を使用してトライアル設定を調整できます。
SDK を設定するサーバー側
サーバー側
Stripe の公式ライブラリを使用して、アプリケーションから Stripe API にアクセスします。
サーバー SDK を更新するサーバー側
サーバー側
このベータ機能を使用するには、まず SDK を更新してプライベートプレビュー API バージョンと checkout_ ベータ版ヘッダーを使用してください。
トライアル期間を動的に更新するサーバー側
サーバー側
サーバーでエンドポイントを作成し、Checkout Session で年次アップセルのトライアル期間を更新します。これは、後のステップでフロントエンドから呼び出します。
セキュリティのヒント
クライアント側のコードは、ユーザーによって制御された環境で実行されます。悪意のあるユーザーは、クライアント側の検証を迂回し、リクエストを傍受して変更したり、サーバーへの新しいリクエストを作成したりすることができます。
エンドポイントを作成する際には、次のことを推奨します。
- 汎用的にするのではなく、特定の顧客とのやり取りのためにエンドポイントを作成してください。たとえば、一般的な「更新」アクションの代わりに「年次アップグレードのトライアルを延長する」などです。特定のエンドポイントは、検証ロジックの作成と維持に役立ちます。
- クライアントからエンドポイントに セッションデータ を直接渡さないでください。悪意のあるクライアントはリクエストデータを変更し、Checkout Session の状態を判別するための信頼できないソースにする可能性があります。代わりに、セッション 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 とセッションオブジェクトに反映されていることを確認します。設定されたフィールドと同じフィールドを使用してトライアルを削除します。
- エラー処理:無効なリクエストをテストして、エラー処理が正しく機能することを確認します。