Интеграция API DaData.ru Город по IP-адресу
Сервис DaData.ru (https://dadata.ru) предоставляет API поиска.
Полная документация - API Город по IP-адресу - https://dadata.ru/api/detect_address_by_ip/.
Определяет город по IP-адресу в России.
Поддерживает как IPv4, так и IPv6 адреса.
Возвращает детальную информацию о городе, в том числе почтовый индекс.
Недостатки: работает только по адресам РФ.
Регистрация DaData.ru.
Нужно зарегистрироваться и подтвердить почту.
Регистрация - https://dadata.ru/suggestions/usage/address/#registration_popup
Подтвердить адрес электронной почты.
API начнет работать после подтверждения.
После регистрации в личном кабинете https://dadata.ru/profile/#info
Станут доступны API-ключ и Секретный ключ для стандартизации
Подписка.
Тариф «Бесплатный», действует бессрочно.
Возможности - Бесплатно до 10 тысяч запросов в день.
API запрос.
Формат запроса.
- URL - https://suggestions.dadata.ru/suggestions/api/4_1/rs/iplocate/address.
- Метод – GET.
- Формат ответа – json.
- Кодировка - UTF-8.
- Заголовок запроса - Content-Type – application/json.
- Заголовок запроса - Accept – application/json.
- Заголовок запроса - Authorization - Token 1d01d91d91d91d91d9f1d91d9_____ - API-ключ из личного кабинета.
Заданный IP передается как параметр в URL.
Пример запроса: https://suggestions.dadata.ru/suggestions/api/4_1/rs/iplocate/address?ip=178.219.186.12.
В ответе на запрос приходит объект с массивом данных location.
Пример ответа (с сокращениями)
{
"location": {
"value": "г Москва",
"unrestricted_value": "101000, г Москва",
"data": {
"postal_code": "101000",
"country": "Россия",
"country_iso_code": "RU",
"federal_district": "Центральный",
…
"history_values": null,
"unparsed_parts": null,
"source": null,
"qc": null
}
}
}
Если город не удалось определить, ответ будет таким:
{ "location": null }
В процедуре парсинга выводиться следующие поля Город, Регион, Округ, Страна (iso код), Координаты.
В ответе сервиса – по одному адресу – более 70 полей, можно получить максимально подробную информацию по каждому адресу, включая значения всех классификаторов.
CREATE PROCEDURE [dbo].[api_daData_IPLocation_request]
@parameters ExtendedDictionaryParameter READONLY, -- входящие параметры для внутренней обработки (используйте Key, Value2)
@username nvarchar(32) -- текущий пользователь.
AS
BEGIN
DECLARE @IPStr nvarchar(max)
-- получение значений полей формы из @parameters
SELECT @IPStr = ISNULL( Value2 , '' ) FROM @parameters WHERE [Key] = 'IPStr'
IF LEN( ISNULL( @IPStr , '' ) ) = 0
SET @IPStr = N'178.219.186.12'
DECLARE @apiUrl1 nvarchar(max) = '' -- Финальная строка для отправки -- ФАКТИЧЕСКИ ЭТО Url
DECLARE @jsonRequest1 nvarchar(max) = '' -- текст json-объекта
-- IP передается как параметр в Url
SET @apiUrl1 = 'https://suggestions.dadata.ru/suggestions/api/4_1/rs/iplocate/address?ip='+ISNULL( @IPStr, '' )
-------------------------------------------------------------------------------------------
-- ОТЛАДКА
insert into as_trace ( header, text, username, code , created ) values( 'apiUrl1' , @apiUrl1 , @username, 'api_daData_IPLocation_request' , GETDATE() )
-------------------------------------------------------------------------------------------
-- SELECT 1 Msg, Result, Url (адрес, куда будет идти запрос)
select '' Msg, 1 Result
, @apiUrl1 Url
, 'application/json' ContentType -- явное указание для HEADER
-- SELECT 2 PARAMETERS - параметры, которые будут передаваться во внешний источник
select 'Authorization' name
, 'Token 1d9d193ed73ec33________' value
, 'header' [type] -- form (в форме передается), header (в http headers), get запросы передавайте прямо в URL
END
CREATE PROCEDURE [dbo].[api_daData_IPLocation_response]
@response nvarchar(max),
@parameters ExtendedDictionaryParameter READONLY, -- входящие параметры для внутренней обработки (используйте Key, Value2 - те же что и на request)
@username nvarchar(32)
AS
BEGIN
-- ОТЛАДКА
insert into as_trace ( header, text, username, code , created ) values( 'LEN @response ', LEN ( @response ) , @username, 'api_daData_IPLocation_response' , GETDATE() )
insert into as_trace ( header, text, username, code , created ) values( '@response - 1 , 1024 ', SUBSTRING ( @response , 1 , 1024 ) , @username, 'api_daData_IPLocation_response' , GETDATE() )
DECLARE @json1 NVARCHAR(MAX) = N''
SET @json1 = @response
-- Для проверки правильности JSON формата существует функция ISJSON, которая возвращает 1, если это JSON, 0 — если нет и NULL, если был передан NULL
DECLARE @presentJSON bit = 0
SELECT @presentJSON = ISNULL( ISJSON( @json1 ) , 0 )
IF @presentJSON <> 1
BEGIN
-- SELECT 'Ошибка! Строка @response не является JSON!' Msg, 0 Result, @response Response
SELECT 'Ошибка!' AS Msg, 0 Result, 'Ошибка! Строка @response не является JSON!' AS Response
RETURN
END
IF LEN( ISNULL( @response , '' ) ) =0
BEGIN
SELECT 'Ошибка!' AS Msg, 0 Result, 'Ошибка! Получена срока @response нулевой длины!' AS Response
RETURN
END
DECLARE @commonResult NVARCHAR(MAX) = N''
SET @commonResult = (SELECT JSON_QUERY(@json1, '$.location') ) -- строка массива location
IF LEN( ISNULL( @commonResult , '' ) ) =0
BEGIN
SELECT 'Ошибка!' AS Msg, 0 Result, 'Ошибка! Город не удалось определить!' AS Response
RETURN
END
-- Город Москва -- Регион Москва -- Округ Центральный федеральный округ -- Страна /RU
DECLARE @value_Address NVARCHAR(MAX) = N'' -- Адрес одной строкой
DECLARE @postal_code NVARCHAR(MAX) = N'' -- Индекс
DECLARE @country NVARCHAR(MAX) = N'' -- Страна -- "country": "Россия"
DECLARE @country_iso_code NVARCHAR(MAX)= N'' -- Страна RU
DECLARE @city NVARCHAR(MAX) = N'' -- Город Москва
DECLARE @region NVARCHAR(MAX) = N'' -- Регион Москва
DECLARE @district NVARCHAR(MAX) = N'' -- Округ Центральный федеральный округ "Центральный"
DECLARE @lat NVARCHAR(MAX) = N'' -- data_geo_lat
DECLARE @lon NVARCHAR(MAX) = N'' -- data_geo_lon
SELECT @value_Address = ISNULL( Query.value_Address ,'' )
, @postal_code = ISNULL( Query.data_postal_code ,'' )
, @country = ISNULL( Query.data_country ,'' )
, @country_iso_code = ISNULL( Query.data_country_iso_code,'' )
, @city = ISNULL( Query.data_city ,'' )
, @region = ISNULL( Query.data_region_with_type ,'' )
, @district = ISNULL( Query.data_federal_district ,'' )
, @lat = ISNULL( Query.data_geo_lat ,'' )
, @lon = ISNULL( Query.data_geo_lon ,'' )
FROM OPENJSON(@json1, N'$.location') -- Зашли в массив , далее в WITH считаем , что адреса уже внутри массива
WITH (
value_Address VARCHAR(200) N'$.value' -- Адрес одной строкой (как показывается в списке подсказок)
, data_postal_code VARCHAR(200) N'$.data.postal_code' -- Индекс
, data_country VARCHAR(200) N'$.data.country' -- "country": "Россия"
, data_country_iso_code VARCHAR(200) N'$.data.country_iso_code' -- "country_iso_code": "RU",
, data_city VARCHAR(200) N'$.data.city'
, data_region_with_type VARCHAR(200) N'$.data.region_with_type' -- "region_with_type": "Москва",
, data_federal_district VARCHAR(200) N'$.data.federal_district' -- "federal_district": "Центральный",
, data_geo_lat VARCHAR(200) N'$.data.geo_lat'
, data_geo_lon VARCHAR(200) N'$.data.geo_lon'
) AS Query
-- Город Москва -- Регион Москва -- Округ Центральный федеральный округ -- Страна /RU
-- SELECT 1
select 'Ok' Msg
, 1 Result
-- , @response Response -- ТАК при вызов из формы вернет оригинальный @response !!!
, 'Город: ' +IIF ( @city = '' , '' , @city )
+'; Регион: '+IIF ( @region = '' , '' , @region )
+'; Округ: ' +IIF ( @district = '', '' , @district )
+'; Страна: '+IIF ( @country = '' , '' , @country ) + '-' +IIF ( @country_iso_code = '' , '' ,@country_iso_code )
+'; Координаты : '+IIF ( @lat = '' , '' ,@lat ) + ' ' +IIF ( @lon = '' , '' ,@lon ) + '.'
AS Response
-- SELECT 2 Внешние действия
END
Google поиск по нашей документации
- Руководства
- Основа Falcon Space
- Основные компоненты
- Возможности
- Коммуникация с пользователем
- Дизайн, стилизация, юзабилити
- Лендинги
- Универсальный API
- Примеры интеграций Прием платежей через Яндекс.Кассу Онлайн-платежи. Интеграция с Робокассой (платежный шлюз) Zapier интеграция на платформе Falcon Space Интеграция коллтрекинга МАНГО ОФИС (режим Площадка) Интеграция API DaData.ru подсказки по адресам Интеграция API Курсы валют Центрального Банка РФ в веб-платформе Falcon Space Интеграция API Почта РФ Интеграция API Служба доставки СДЭК (CDEK) Интеграция API Служба доставки Деловые линии Интеграция импорт и парсинг файла CSV Интеграция API IpGeoBase Город по IP-адресу Интеграция API DaData.ru Город по IP-адресу Как вычислить расстояние между 2 точками с координатами через Google Maps Сканирование штрихкодов и QR кодов через камеру и с картинок Получение данных контрагента по ИНН Прием платежей на сайте через CloudPayments Как сделать интеграцию с Мой Склад Внедрение подсказок dadata на сайт Вывод точек на карте Яндекс. Интеграция с Яндекс Карты Интеграция с телефонией Zadarma.com Получение данных о контрагенте - интеграция с сервисом ЗаЧестныйБизнес Интеграция с AMO CRM Как импортировать данные в базу CRM из Google Контакты Вход/регистрация через ВКонтакте(vk.com) Интеграция CRM с онлайн чатом на сайте (Replain) Как связать yandex metrika clientID с пользователем на сайте и посмотреть полный путь его по сайту? Телеграм. Работа с файлами Как сделать обработку входящей почты (создание клиента в CRM из Email) Интеграция сайта с ChatGPT (openAI) Интеграция с Яндекс Метрика Интернет-эквайринг Тинькоф Банк Интеграция с платежным шлюзом LifePay Как сделать вебхук для передачи данных с Тильды на Falcon Space Пополнение средств через Yookassa (Юкасса) Тинькофф Банк - уведомление в учетную систему по операциям с расчетным счетом Интеграция с Ютуб. Получение роликов канала Интеграция с Ozon, Wildberries - извлечение статистики
- Каталоги
- Навигация
- Документы
- Дополнительные компоненты
- Продвижение, SEO
- Системные моменты
- Системное администрирование
- HOWTO
- Таблицы
- Формы
- Загрузка файлов, картинок
- Работа с SQL
- HOWTO JS
- HOWTO Верстка
- Решение проблем
Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта