在达到限制之前监控密钥用量
随时关注配额响应头,就能在请求真正被拒绝之前,提前知道何时即将达到限制。
在向新访客展示价格之前,要求他们从一长串下拉列表中选择国家,这是一个多余的步骤,而一个合适的默认值可以把它完全去掉。
用访客的地址对 /v1/ip 进行一次调用,即可返回标准 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 在无人察觉的情况下进入您的税费计算。
My Geocode 自身的定价在全球范围内只使用 EUR,无论客户从哪里付款。这与您向自己的访客展示什么是两回事:根据识别出的国家本地化显示货币是完全合理的,即使您自己的后端像我们一样用一种货币结算所有款项。
把访客锁定在识别出的国家、不给修改的余地,比偶尔把默认值弄错是更大的问题。在国外酒店购物的客户,或者使用出口位于与其实际所在地不同国家的公司 VPN 的客户,迟早会遇到错误的默认值。请始终把识别出的国家显示为可编辑的字段,而不是固定写入订单的值。
每个新访客会话查询一次,并在该会话期间缓存结果,是合理的模式。这样计入每日额度的是每个会话一个请求,而不是每次页面浏览一个请求,即使是繁忙的网站也能轻松保持在每个密钥附带的每天 2,500 次免费请求之内,或者在完全不使用密钥的情况下,保持在单个地址可用的免费请求之内。
同一个响应还包含 timezone 字段,因此既需要货币默认值、又需要在订单确认中合理显示当地时间的结账流程,可以通过一次调用同时获得两者,而无需两次单独查询。
在第一次页面浏览时就设置正确的货币默认值,可以避免在结账后期出现突兀的价格切换。IPv4 查询文档列出了该端点返回的每个字段。