purpose: "portal" を指定すると、自社サイトでサインイン済みの顧客をメール認証なしでストアのカスタマーポータルに入れることもできます。これは API Key 専用のエンドポイントです。
仕組み
- サーバーが API Key 認証でこのエンドポイントを呼び出します
- 短命のセッショントークンを受け取ります
- トークンを customer のブラウザに渡します
- Customer はトークン(
Authorization: Bearer <token>)を使用して注文の作成やチェックアウトを行います
カスタマーポータルモード
purpose: "portal" を指定すると、自社サイトでサインイン済みの顧客向けにカスタマーポータルへのリンクを取得できます。呼び出し方は同じで、次のルールが変わります:
顧客をポータルに送るには、
portalUrl に #token=<token> を付け、顧客のブラウザをその URL へ 302 リダイレクトします。SDK のヘルパーはこの URL を組み立てて返します —— サインイン済みの顧客に注文を管理してもらうを参照してください。
ポータルトークンは環境に固定されます。このトークンで Customer Portal API も呼び出す場合は、API Key の環境と一致する X-Environment を送ってください。それ以外の値は 403 Environment mismatch で拒否されます。
purpose を指定しないリクエストの動作は従来とまったく同じです。
リクエストボディ
リクエスト例
成功レスポンス (200)
purpose: "portal" の場合:
レスポンスフィールド
エラー
リトライポリシー:4xx は一切リトライしない — リクエストを修正してから再送信。5xx は指数バックオフでリトライ(5s 開始、最大 3 回)。
知っておくべき 2 つの落とし穴
同じ冪等キーでトークンを発行し続けないでください。 繰り返しの呼び出しで同じX-Idempotency-Key を送ると、プラットフォームの 24 時間キャッシュにヒットして初回のレスポンスが再生され、とうに失効したトークンが返ります。SDK はキーを生成しなくなったため、これはヘッダーを自分で設定した場合(REST を直接呼び出す、または同じ idempotencyKey を 2 回渡す)にのみ起こります。同じ買い手にトークンを繰り返し発行する場合(トークン更新エンドポイント、プラン変更リンク生成など)は、毎回新しいキーを使うか、キーを渡さないでください。
リダイレクト直前に発行してください。 トークンの有効期間は 15 分(スライディング)ですが、checkout / プラン変更セッションはデフォルトで 24 時間です。セッションと同時に発行してキューやメールに置いたトークンは、買い手がクリックする頃には失効しています。プラン変更リンクではトークンを URL fragment に入れます —— 買い手が開くリンクの組み立てを参照してください。