Есть ответы на вопросы сертификации? Хочешь поделиться новостью о своем проекте? Тогда пиши нам!

Хелпер для работы с DaData на PHP CURL

Хелпер для работы с DaData на PHP CURL

Сегодня поговорим о достаточно распространенной задаче: получение адреса, банковских данных и так далее.

Рассмотрим реальную задачу, требования: необходимо получать полную информацию о банке по введенному БИК номеру. Для реализации задачи отлично подойдет сервис DaData. Для реализации вывода подсказок в форме достаточно скопировать код с сайта DaData, поэтому на этом останавливаться не будем, а рассмотрим работу именно на бэкенде.

Для работы с DaData мы будем использовать библиотеку CURL и собственно язык программирования PHP :) Сразу приведем код хэлпера для работы с сервисом:

namespace BXCert\Helpers;

/**
 * Class DaDataHelper
 * @package BXCert\Helpers
 */
class DaDataHelper
{
    /**
     * @param string $sApiKey API Key сервиса DaData.ru
     * @param string $sType Тип запроса address|bank и другие
     * @param array $arFields
     * @return array|mixed
     * @link https://dadata.ru/suggestions/usage/#bank
     */
    public static function dadata($sApiKey, $sType, $arFields)
    {
        $arResult = [];
        if ($oCurl = curl_init("http://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/" . $sType)) {
            curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($oCurl, CURLOPT_HTTPHEADER, [
                'Content-Type: application/json',
                'Accept: application/json',
                'Authorization: Token ' . $sApiKey
            ]);
            curl_setopt($oCurl, CURLOPT_POST, 1);
            curl_setopt($oCurl, CURLOPT_POSTFIELDS, json_encode($arFields));
            $sResult = curl_exec($oCurl);
            $arResult = json_decode($sResult, true);
            curl_close($oCurl);
        }

        return $arResult;
    }
}

Использовать хэлпер предельно просто:

$arBank = \BXCert\Helpers\DaDataHelper::dadata(API_KEY, 'bank', ['query' => '044525322', 'count' => 1]);
echo '
' . print_r($arBank, 1) . '
';

Результатом будет "простыня" массива со всеми полученными данными по банку. Также стоит отметить, что если Вы при регистрации не подтвердили email адрес, то воспользоваться API не получится и скорее всего Вы увидите следующую ошибку: "Feature 'SUGGESTIONS' disabled for token ...". Для исправления Вам необходимо подтвердить электронный адрес (пройти по ссылке из письма) и скорее всего обновить ключи в настройках:

Обновление API ключей сервиса DaData

Чистого кода!

 334 PHP, CURL, Сниппет, Код, DaData.ru, Новичку
28 июня 2017
Команда BXCert

Наша команда разрабатывает портал BXCert, а также занимается разработкой сайтов на CMS 1С-Битрикс. Все участники являются сертифицированными специалистами Bitrix.

Возможно Вам будет интересно

Комментарии

Алексей Алексеев 07 июля 2017 в 13:55 / # / Ответить
Интересно, насколько часто обновляется информация в их справочниках. Или там всегда прям актуальная инфа?
Команда BXCert 07 июля 2017 в 13:58 / # / Ответить
Прикручивали данный сервис на многих сайтах, проблем не было. БИНы банков и информация быстро обновляется, по адресам - трудно сказать.
Алексей Алексеев 07 июля 2017 в 14:01 / # / Ответить
С другой стороны, банки не каждый день и меняют какие-то данные. Поэтому скорее всего с актуальностью проблем нет.
Команда BXCert 07 июля 2017 в 14:04 / # / Ответить
Вполне вероятно отрабатывает обновление по расписанию + с проверкой изменений, например, по хешу файла выгрузки, инфа по банкам тянется вроде с ЦБ РФ. В любом случае сервис годный, проблем с актуальностью данных пока не встречали, ну и бесплатно 10к запросов хватает на небольшой сайт.
Алексей Алексеев 07 июля 2017 в 14:06 / # / Ответить
Спасибо, возьму на заметку. На самом деле даже не слышал раньше об этом сервисе.
Чтобы оставлять комментарии необходимо зарегистрироваться и пройти авторизацию.