[Shippo] Address Validation API は Invalid な Zip Code を渡しても Valid な Zip Code が取得できる

Shippo の Address Validation API は Invalid な Zip Code を渡しても Valid な Zip Code が取得できるようでした。

Shippo

背景 Zip Code を検証したい

Zip Code の validation をしたくて Shippo の Address Validation API を利用して、検証できないか確認したのが本記事の内容です。

Zip Code は適当でも VALID が返ってくる

以下、サンプルコードです。

Request

US では存在しない zip=a という値で validate の API Request を送ってみました。

curl https://api.goshippo.com/addresses/ \
    -H "Authorization: ShippoToken " \
    -d name="Shawn Ippotle" \
    -d company="Shippo" \
    -d street1="215 Clayton St." \
    -d city="San Francisco" \
    -d state="CA" \
    -d zip=a \
    -d country="US" \
    -d email="[email protected]"\
    -d validate=true

Response

API Response は “object_state”: “VALID”, “zip”: “94117-1913” という正しい値が返ってくることを確認しました。

{
  "object_state":"VALID",
  "object_purpose":"QUOTE",
  "object_source":"VALIDATOR",
  "object_created":"2019-09-10T12:50:31.681Z",
  "object_updated":"2019-09-10T12:50:31.689Z",
  "object_id":"5cee8f0855514008a9688f9199df6fa6",
  "object_owner":"[email protected]",
  "name":"Shawn Ippotle",
  "company":"Shippo",
  "street_no":"",
  "street1":"215 Clayton St",
  "street2":"",
  "street3":"",
  "city":"San Francisco",
  "state":"CA",
  "zip":"94117-1913",
  "country":"US",
  "longitude":-122.44938,
  "latitude":37.77335,
  "phone":"",
  "email":"[email protected]",
  "is_residential":true,
  "ip":"",
  "messages":[

  ],
  "metadata":"",
  "test":true
}

Address Validation API では、入力値の zip を validate することはできないようでした。しかし、country, state, city, street1 などを元に、正しい zip が取得できるので、API Response の zip を利用する実装にしておけば困らないのかなと思いました。

以上、Shippo の Address Validation API で Zip Code も検証したい、現場からお送りしました。