上限に達する前にキーの使用状況を監視する
割り当てヘッダーを随時確認しておけば、リクエストが実際に拒否されるよりずっと前に、上限が近づいていることが分かります。
価格を表示する前に、新しい訪問者に長いドロップダウンから国を選ばせるのは余分な手順であり、適切な既定値があればそれを完全になくせます。
訪問者のアドレスで/v1/ipを1回呼び出すと、標準のISO 3166-1 alpha-2形式のcountry_codeフィールドが返されます。これは、ほとんどの税率表や通貨表がすでにキーとして使っている形式です。
GET /v1/ip?ip=198.51.100.7{
"status": "ok",
"ip": "198.51.100.7",
"version": 4,
"found": true,
"country": "Germany",
"country_code": "DE",
"region": "Berlin",
"city": "Berlin",
"postcode": "10115",
"lat": 52.5200,
"lon": 13.4050,
"timezone": "Europe/Berlin",
"asn": 6789,
"org": "Example Telecom"
}顧客が手動で選択した国を対応づけるのと同じように、country_codeを自社の税率表と通貨表に対応づけます。IPから割り出した国は最終的な答えではなく既定値として扱い、訪問者が変更できるようにしてください。旅行中の顧客やVPNを使っている顧客は、実際に必要な請求先の国と必ずしも一致しないからです。
位置データが登録されていないアドレスに対するリクエストは、エラーではなくfoundがfalseに設定された結果を返します。これは明示的に想定しておく価値があります。その場合は、フィールドを空欄のままにしたり、空のcountry_codeが気づかれないまま税金の計算に渡ったりしないよう、適切な既定の国と通貨を1つ決めてそれにフォールバックしてください。
My Geocode自体の料金は、顧客がどこから請求を受けるかにかかわらず、世界中でEURのみです。これは、自社の訪問者に何を表示するかとは別の問題です。当社と同じように自社のバックエンドですべてを1つの通貨で決済していても、検出した国に応じて表示通貨をローカライズするのはまったく妥当なことです。
検出した国に訪問者を固定して変更できないようにすることは、ときどき既定値を誤ることよりも大きな問題です。海外のホテルから買い物をする顧客や、実際にいる国とは別の国に出口がある企業のVPNを使っている顧客は、遅かれ早かれ誤った既定値に遭遇します。検出した国は、注文に組み込まれた固定の値ではなく、必ず編集可能なフィールドとして表示してください。
新しい訪問者のセッションごとに1回検索し、そのセッションの間キャッシュするのが適切なパターンです。これならページビューごとではなくセッションごとに1日の割り当てから1リクエストを使うだけなので、アクセスの多いサイトでも、すべてのキーに含まれる、あるいはキーなしでも1つのアドレスから利用できる1日あたり2,500回の無料リクエストに十分収まります。
同じレスポンスにはtimezoneフィールドも含まれているため、通貨の既定値と、注文確認での適切な現地時刻の表示の両方を必要とするチェックアウトフローでは、2回の別々の検索ではなく1回の呼び出しで両方を取得できます。
最初のページビューで通貨の既定値を正しく設定しておけば、チェックアウトの途中で価格が急に切り替わる不快な体験を避けられます。IPv4検索のドキュメントには、エンドポイントが返すすべてのフィールドが記載されています。