В этой статье мы разберем, как с помощью AJAX-запроса отправить запрос к API Dadata для получения информации, к примеру, о банке по его БИК (Банковский идентификационный код). Мы используем технологии JavaScript, jQuery, PHP и подключаемся к внешнему сервису для получения данных.

Важность использования API Dadata
Dadata — это сервис, который предоставляет быстрый и удобный способ работы с различными данными, такими как адреса, компании, банки и другие. В частности, его API позволяет получить подробную информацию о банке, используя его БИК. Это может быть полезно для создания банковских сервисов, финансовых приложений и любых других решений, где требуется знание точных реквизитов банков.
Подготовка к созданию запроса
Прежде чем создавать запрос к API Dadata, необходимо выполнить следующие шаги:
- Установите библиотеку dadata-php с GitHub. Это позволит вам легко интегрировать API Dadata в ваш PHP-проект.
- При вызове API укажите следующие заголовки:
Content-Type: application/json
— указывает, что данные отправляются в формате JSON.Accept: application/json
— указывает, что вы ожидаете получить ответ в формате JSON.Authorization: Token ваш_API_ключ
— заменитеваш_API_ключ
на ваш реальный API-ключ, который можно получить при регистрации на сайте Dadata.
Код HTML и PHP
Приведенный ниже код позволяет пользователю ввести БИК банка, отправить запрос на сервер с помощью AJAX и получить информацию о банке, которая будет отображена в таблице на веб-странице.
Код HTML и JavaScript (AJAX-запрос)
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>AJAX запрос</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<form id="bankForm">
<label for="bankId">Введите БИК:</label>
<input type="text" id="bankId" name="bankId" required>
<button type="submit">Отправить</button>
</form>
<table id="resultTable" border="1">
<thead>
<tr>
<th>Название</th>
<th>Описание</th>
</tr>
</thead>
<tbody>
<!-- Результаты будут добавлены сюда -->
</tbody>
</table>
<script>
$(document).ready(function() {
$('#bankForm').on('submit', function(event) {
event.preventDefault(); // предотвращаем стандартное поведение формы
const bankId = $('#bankId').val(); // получаем значение из формы
$.ajax({
url: 'ajax/dada.php', // URL вашего сервера
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({ query: bankId }),
success: function(data) {
// Очищаем таблицу перед добавлением новых данных
$('#resultTable tbody').empty();
if (data.suggestions && data.suggestions.length > 0) {
const suggestion = data.suggestions[0].data; // Берем первое предложение
// Добавляем данные в таблицу в структурированном виде
$('#resultTable tbody').append(`
<tr><td>Наименование</td><td>${suggestion.name.payment || 'Не указано'}</td></tr>
<tr><td>БИК</td><td>${suggestion.bic || 'Не указано'}</td></tr>
<tr><td>SWIFT</td><td>${suggestion.swift || 'Не указано'}</td></tr>
<tr><td>ИНН</td><td>${suggestion.inn || 'Не указано'}</td></tr>
<tr><td>КПП</td><td>${suggestion.kpp || 'Не указано'}</td></tr>
<tr><td>Регистрационный номер</td><td>${suggestion.registration_number || 'Не указано'}</td></tr>
<tr><td>Корреспондентский счет</td><td>${suggestion.correspondent_account || 'Не указано'}</td></tr>
<tr><td>Город для платежа</td><td>${suggestion.payment_city || 'Не указано'}</td></tr>
<tr><td>Тип организации</td><td>${suggestion.opf.type || 'Не указано'}</td></tr>
<tr><td>Адрес</td><td>${suggestion.address.value || 'Не указано'}</td></tr>
<tr><td>Состояние</td><td>${suggestion.state.status || 'Не указано'}</td></tr>
`);
// Добавляем дополнительные данные о ЦБ
if (suggestion.cbr) {
$('#resultTable tbody').append(`
<tr><td>ЦБ Наименование</td><td>${suggestion.cbr.name.payment || 'Не указано'}</td></tr>
<tr><td>ЦБ БИК</td><td>${suggestion.cbr.bic || 'Не указано'}</td></tr>
<tr><td>ЦБ Адрес</td><td>${suggestion.cbr.address.value || 'Не указано'}</td></tr>
`);
}
} else {
$('#resultTable tbody').append('<tr><td colspan="2">Нет данных</td></tr>');
}
},
error: function(xhr, status, error) {
console.error('Ошибка AJAX:', status, error);
$('#resultTable tbody').append('<tr><td colspan="2">Ошибка запроса</td></tr>');
}
});
});
});
</script>
</body>
</html>
Код PHP (ajax/dada.php)
<?php
header('Content-Type: application/json');
$data = json_decode(file_get_contents('php://input'), true); // Получаем JSON из POST-запроса
if (isset($data['query'])) {
$query = $data['query'];
$options = [
'http' => [
'method' => 'POST',
'header' => [
'Content-Type: application/json',
'Accept: application/json',
'Authorization: Token ваш_API_ключ'
],
'content' => json_encode(['query' => $query])
]
];
$builder = stream_context_create($options);
$document = file_get_contents('http://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/bank', false, $builder);
if ($document === FALSE) {
echo json_encode(['error' => 'Ошибка запроса к Dadata']);
} else {
echo $document; // Возвращаем ответ от Dadata
}
} else {
echo json_encode(['error' => 'Не указан БИК.']);
}
?>
Разбор кода
HTML-разметка
- В начале создаем форму с полем ввода для БИК банка и кнопкой для отправки формы.
- Далее создаем таблицу, в которой будут отображаться результаты — наименование, БИК, SWIFT, ИНН, КПП, и другие поля, полученные от Dadata.
JavaScript (AJAX запрос)
- При отправке формы (`$('#bankForm').on('submit', function(event) {...}`) происходит отмена стандартного поведения формы с помощью `event.preventDefault()`, чтобы не перезагружать страницу.
- После этого, мы берем значение БИК из поля ввода и отправляем его на сервер с помощью AJAX-запроса.
- В запросе используются следующие параметры:
url
: путь к PHP-скрипту на сервере, который будет обрабатывать запрос.type
: метод запроса — в данном случаеPOST
.contentType
: тип содержимого, указываем какapplication/json
.data
: данные, которые отправляются на сервер в формате JSON.
- Когда данные получены, мы проверяем, если в ответе есть предложения (
data.suggestions
), и если они есть, добавляем их в таблицу. - Если данных нет, показываем сообщение "Нет данных".
PHP-скрипт (ajax/dada.php)
- PHP-скрипт принимает JSON-запрос с БИК.
- Делаем запрос к API Dadata с использованием PHP функции
file_get_contents()
и передаем данные о БИК в формате JSON. - Если запрос выполнен успешно, возвращаем ответ от Dadata. Если возникла ошибка, выводим соответствующее сообщение.
Пример вывода полученных данных после запроса
Название | Описание |
---|---|
Наименование | ПАО Сбербанк |
БИК | 044525225 |
SWIFT | SABRRUMM012 |
ИНН | 7707083893 |
КПП | 773601001 |
Регистрационный номер | 1481 |
Корреспондентский счет | 30101810400000000225 |
Город для платежа | г Москва |
Тип организации | BANK |
Адрес | г Москва, ул Вавилова, д 19 |
Состояние | ACTIVE |
ЦБ Наименование | ГУ БАНКА РОССИИ ПО ЦФО |
ЦБ БИК | 044525000 |
ЦБ Адрес | 115035, г Москва 35, ул Балчуг, 2 |
Заключение
Данный пример демонстрирует, как интегрировать внешний API с помощью AJAX-запросов. Это решение позволяет динамически получать и отображать информацию о банках, что полезно для финансовых и банковских приложений.