配送オプションを動的にカスタマイズ
顧客向けにさまざまな配送料金を作成する方法をご紹介します。
決済の埋め込みバージョンを使用する際に顧客が入力した住所に基づいて、配送オプションを動的に更新する方法をご紹介します。Stripe がオンラインで提供する決済バージョンでは、動的な更新は使用できません。
ご利用事例
- 住所を検証する: 貴社に合わせたカスタム検証ルールを使用して、顧客の住所に商品を配送できるかどうかを確認します。また、顧客が希望する住所を確認するためのカスタム UI を作成することもできます。
- 関連する配送オプションを表示する: 顧客の住所に基づいて、利用可能な配送方法のみを表示します。たとえば、お住まいの国での配送の場合にのみ翌日配送を表示するなどです。
- 配送料を動的に計算する: 顧客の配送先住所に基づいて配送料を計算して表示します。
- 注文合計額に基づいて配送料を更新する: 配送先住所または注文合計額に基づいて配送料を提示します (100 USD を超える注文の場合は送料無料など)。数量変更やクロスセルが可能な決済フローについては、項目を動的に更新するをご覧ください。
制限事項
- payment mode (支払いモード) でのみサポートされます。shipping rates (配送料金) はサブスクリプションモードではご利用いただけません。
Payment Intents API
Payment Intents API を使用する場合は、選択した配送オプションに基づいて手動で配送オプションを更新し、決済金額を変更するか、金額を調整した新しい PaymentIntent を作成する必要があります。
Checkout Session の更新権限を設定するサーバー側
shipping_address_collection.allowed_countries を配送先の国のリストに設定します。
Checkout Session を作成するときに、permissions.update_shipping_details=server_only オプションを渡して、クライアント側の updateShippingAddress メソッドを無効にし、サーバーから配送先住所と配送オプションを更新できるようにします。
配送オプションをカスタマイズサーバー側
サーバーでエンドポイントを作成し、顧客の配送先住所に基づいて配送オプションを計算します。
- リクエスト本文から取得した
checkoutSessionIdを使用して、Checkout Session を 取得 します。 - リクエスト本文にある顧客の配送先情報を検証します。
- 顧客の配送先住所と Checkout Session の項目に基づいて、配送オプションを計算します。
- 顧客の shipping_details と shipping_options で Checkout Session を 更新 します。
導入をテストする
実装内容をテストして、カスタムの配送オプションが正しく機能することを確認するには、以下のステップに従います。
本番環境を反映したサンドボックス環境を設定します。この環境では、Stripe サンドボックスの API キーを使用してください。
さまざまな配送先住所をシミュレーションして、
calculateShippingOptions関数がシナリオを正しく処理していることを確認します。ログツールやデバッグツールを使用してサーバーが以下を行っていることを確認し、サーバー側のロジックを検証します。
- Checkout Session (セッション) を取得します。
- 配送の詳細を検証します。
- 配送オプションを計算します。
- 新しい配送の詳細とオプションで Checkout Session (セッション) を更新します。更新のレスポンスに新しい配送の詳細とオプションが含まれていることを確認します。
ブラウザーで決済プロセスを複数回実行することで、クライアント側のロジックを検証します。配送の詳細の入力後に UI がどのように更新されるかに注意してください。次のことを確認してください。
runServerUpdate関数が指定したとおりに呼び出されている。- 配送オプションが指定された住所に基づいて正しく更新される。
- 配送先が利用できない場合にエラーメッセージが適切に表示される。
無効な配送先住所を入力するか、サーバーエラーをシミュレーションして、サーバー側とクライアント側の両方のエラー処理をテストします。