Дорогие партнеры, для вашего удобства мы разработали и запустили третью версию API v3.
Описания системы уже доступны на нашем сайте https://b2b-dynatone.ru/api
Если у вас будут какие-либо вопросы, пожелания или замечания по работе новой версии API, пожалуйста, обращайтесь к своему менеджеру.
Также мы запустили дополнительный сервер для первичных запросов, чтобы можно было стабильно получать данные из разных регионов мира. В примерах мы используем хост в дата-центре на территории РФ https://ru1.apidnt.ru/v3/, но также можно использовать хост в ДЦ Хельсинки https://fn1.apidnt.ru/v3/
Главное отличие v3 – в использовании CDN для передачи данных. B связи с периодическими сложностями доступа к API Dynatone из различных регионов и в связи с перегруженностью, мы развернули передачу данных через Anycast CDN (content delivery network). Сеть состоит из 45 серверов на территории РФ и развернута на базе одного из крупнейших Российских провайдеров, что исключает блокировки и задержки (как это часто бывает с зарубежными операторами). CDN кроме серверов в РФ включает и сервера в других странах, что облегчит доступ к API Dynatone нашим партнерам за пределами РФ.
При программном получении данных важно иметь ввиду, что при запросе происходит редирект на нужный сервер сети. Для этого функция чтения файлов у вас должна поддерживать редирект. При программном обращении к API он вернет 302 ответ и адрес, на который надо перейти. Поэтому при программных запросах должен обрабатываться редирект. Если у вас возникнут сложности с обработкой редиректа, можно по-прежнему использовать API v2, для этого в URL надо поменять v3 на v2.
Вот как может выглядеть запрос на PHP
function get_file_curl($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // ВАЖНО: следовать редиректам
curl_setopt($ch, CURLOPT_MAXREDIRS, 5); // Безопасный лимит
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_TIMEOUT, 5); // Если нет ответа 5 сек, то и не будет ждать, может временная ошибка в сети
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$data = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpCode !== 200 || $data === false) {
throw new Exception("Failed to get file (HTTP $httpCode): $url");
}
curl_close($ch);
return $data;
}