Зачастую, при создании интернет - ресурсов для предоставления товаров и услуг, разработчики сталкиваются с такой задачей как верификация адресов пользователей при заполнении контактной формы. Данная задача сводится к проверке достоверности введенного адреса, определению геокоординат и автозаполнению недостающих строк адреса. На сегодняшний день в Мире существуют различные сервисы для верификации адресов. В данной статье мы рассмотрим один из них – SmartyStreets – сервис для работы с адресами внутри США и с международными адресами.
Интеграция сервиса SmartyStreets
SmartyStreets – это международный сервис по верификации адресов, который предоставляет следующие возможности:
- Валидация адреса, введенного пользователем (проверка на достоверность и полноту адреса);
- Определение геокоординат (широты и долготы);
- Поиск и определение адреса из произвольного текста;
- Автозаполнение полей во время введения адреса.
На сегодняшний день SmartyStreets является одним из лидирующих решений для верификации адресов. Очевидные преимущества использования SmartyStreets для бизнеса - увеличение скорости доставки, снижение временных затрат на уточнение данных, уменьшение количества возвратов, повышение качества обслуживания клиентов. В отличие от конкурентов, SmartyStreets может верифицировать практически любой международный адрес (база адресов более 240 стран), работает быстрее - способен обрабатывать до 1000 адресов в секунду и обеспечивает надежную бесперебойную работу сервиса.
Валидация и корректировка адреса в США
В качестве наглядного примера рассмотрим процесс интеграции сервиса SmartyStreets с платформой для поддержки функции валидации и корректировки введенного пользователем адреса в США.
- Регистрируемся на сайте smartystreets.com
- Получаем 2 поля для работы с сервисом: authId и authToken
- Создаем http запрос к сервису:
String requestUrl = “https://api.smartystreets.com/street-address ?street=3785+South+Las+Vegs+Av &city=Los+Vegas &state=NV &auth-id=<AUTH_ID> &auth-token=<AUTH_TOKEN>” try { HttpGet httpGet = new HttpGet( requestUrl ); // Create a custom response handler ResponseHandler< String > responseHandler = new ResponseHandler< String >() { @Override public String handleResponse( final HttpResponse response ) throws ClientProtocolException, IOException { int status = response.getStatusLine().getStatusCode(); if( status >= 200 && status < 300 ) { HttpEntity entity = response.getEntity(); return entity != null ? EntityUtils.toString( entity ) : null; } else { throw new ClientProtocolException( "Unexpected response status: " + status + "(" + response.getStatusLine().getReasonPhrase() + ")" ); } } }; String responseBody = httpClient.execute( httpGet, responseHandler ); // oбработка результата } finally { httpClient.close(); }
- Получаем (в качестве примера) следующий результат:
{ "input_index": 0, "candidate_index": 0, "delivery_line_1": "3785 Las Vegas Blvd S", "last_line": "Las Vegas NV 89109-4333", "delivery_point_barcode": "891094333992", "components": { "primary_number": "3785", "street_name": "Las Vegas", "street_postdirection": "S", "street_suffix": "Blvd", "city_name": "Las Vegas", "state_abbreviation": "NV", "zipcode": "89109", "plus4_code": "4333", "delivery_point": "99", "delivery_point_check_digit": "2" }, "metadata": { "record_type": "H", "zip_type": "Standard", "county_fips": "32003", "county_name": "Clark", "carrier_route": "C024", "congressional_district": "01", "building_default_indicator": "Y", "rdi": "Commercial", "elot_sequence": "0119", "elot_sort": "A", "latitude": 36.10363, "longitude": -115.17237, "precision": "Zip9", "time_zone": "Pacific", "utc_offset": -8, "dst": true }, "analysis": { "dpv_match_code": "D", "dpv_footnotes": "AAN1", "dpv_cmra": "N", "dpv_vacant": "N", "active": "Y", "footnotes": "A#B#H#L#M#" }
Мы видим, что полученный результат состоит из следующих пунктов:
- компоненты адреса;
- metadata, включающая latitude longitude;
- результаты обработки запроса: насколько точно удалось найти адрес, какие компоненты были скорректированы.
Полученные данные можно сохранить в базе данных и использовать для дальнейшей работы с сервисом.
Заключение
Как мы видим из данного примера, SmartyStreets предоставляет удобный API для поиска и валидации адресов как внутри США, так и во всем мире. Кроме того, сервис предлагает воспользоваться пакетом бесплатных операций в течение месяца, чтобы убедиться в его эффективности.
Официальный сайт SmartyStreets: https://smartystreets.com
Если в текущем проекте перед Вами стоит задача по внедрению сервиса или технологии по валидации и корректировке адреса пользователя, напишите нам на hello@wave-access.com