項目を動的に更新する
決済中に価格設定とカートの内容を変更する方法をご紹介します。
プライベートプレビュー
動的更新はプライベートプレビューです。決済フローの動的更新へのアクセスをリクエストしてください。
Checkout Session (セッション) に含まれる項目を動的に追加、削除、更新する方法をご紹介します。
ご利用事例
このガイドでは、項目を更新してサブスクリプションをアップセルする方法を示しますが、以下を行うこともできます。
- 在庫の確認:在庫チェックを実行し、顧客がアイテムの数量を変更しようとしたときに保留します。
- 新しい商品を追加する:注文合計額が一定の金額を超えている場合に、補完商品を追加します。
- 配送料金を更新する:注文合計額が変更された場合は、このガイドの購入時に配送オプションをカスタマイズするで説明されている方法を組み合わせて、配送料金を更新します。
- 税率を更新する:Stripe Tax を使用していない場合は、入力された配送先住所に基づいて項目の税率を動的に更新できます。
Payment Intents API
Payment Intents API を使用する場合は、項目の更新を手動でトラッキングして決済金額を変更するか、金額を調整した新しい PaymentIntent を作成する必要があります。
SDK を設定するサーバー側
Stripe の公式ライブラリを使用して、アプリケーションから Stripe API にアクセスします。
サーバー SDK を更新するサーバー側
このベータを使用するには、まず SDK を更新して、checkout_ ベータ版ヘッダーを使用します。
Checkout Session の更新権限を設定するサーバー側
Checkout Session を作成する際に、permissions.update_line_items=server_only オプションを渡し、クライアント側の更新を無効にし、サーバーから updateLineItemQuantity などの項目を更新できるようにします。
項目を動的に更新するサーバー側
サーバーでエンドポイントを作成し、Checkout Session の項目を更新します。これは、後のステップでフロントエンドから呼び出します。
セキュリティのヒント
クライアント側のコードは、ユーザーによって制御された環境で実行されます。悪意のあるユーザーは、クライアント側の検証を迂回し、リクエストを傍受して変更したり、サーバーへの新しいリクエストを作成したりすることができます。
エンドポイントを作成する際には、次のことを推奨します。
- 汎用的にするのではなく、特定の顧客とのやり取りのためにエンドポイントを作成します。たとえば、一般的な「更新」アクションの代わりに「クロスセル項目を追加」します。特定のエンドポイントは、検証ロジックの作成と維持に役立ちます。
- クライアントからエンドポイントに セッションデータ を直接渡さないでください。悪意のあるクライアントはリクエストデータを変更し、Checkout Session の状態を判別するための信頼できないソースにする可能性があります。代わりに、セッション ID をサーバーに渡して、それを使用して Stripe API からデータを安全に取得してください。
項目を更新するときは、項目の配列全体を再送信する必要があります。
- 既存の項目を維持するには、その
idを指定します。 - 既存の項目を更新するには、更新するフィールドの新しい値とともにその
idを指定します。 - 新しい項目を追加するには、
idなしでpriceとquantityを指定します。 - 既存の項目を削除するには、再送信された配列から項目の ID を省略します。
- 項目の順序を変更するには、再送信された配列内の目的の位置にその
idを指定します。