Ответ от API яндекса доставки все время - No delivery options for interval

Тема в разделе "Общие вопросы", создана пользователем smagluk, 17 янв 2026.

  1. smagluk

    smagluk Пользователь

    Сообщения:
    40
    Симпатии:
    5
    Добрый день.
    Учусь по немного ,как говорится на кошках. Пытаюсь создать обращение к Яндексу доставки через его API. У них на сайте указано 1.01. Предварительная оценка стоимости доставки как создавать запрос, но я получаю все время - нет доставки. Где у меня загвоздка?
    /**
    * Основной метод для выполнения API запросов с Bearer-токеном
    */
    private function makeApiRequest(string $endpoint, array $data): array {
    $api_host = rtrim($this->config->get('shipping_yandexdelivery_host'), '/');
    $api_key = $this->config->get('shipping_yandexdelivery_api_key'); // Bearer токен

    // Формируем полный URL
    $api_url = $api_host . $endpoint;

    $this->logError('Полный адрес к кому обращаемся: ' .$api_url);

    // Логируем запрос
    $log_data = $data;
    // $log_data['_url'] = $api_url;
    $log_data['_headers'] = [
    'Authorization:' => 'Bearer ' .$api_key,
    'Content-Type:' => 'application/json'
    ];
    $this->logError('API запрос по адресу: ' .$api_url, $log_data);

    $ch = curl_init($api_url);

    // Определяем тестовое окружение для SSL
    $is_test_environment = strpos($api_host, 'tst.yandex.net') !== false;

    $this->logError('Среда отладки API', [
    'api_url' => $api_url,
    'is_test_env' => $is_test_environment,
    'host' => $api_host
    ]);
    $this->logError('Сейчас вызов Curl');


    // Базовые настройки CURL с Bearer-токеном
    $curl_options = [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => json_encode($data, JSON_UNESCAPED_UNICODE),
    CURLOPT_HTTPHEADER => [
    'Authorization: Bearer ' . $api_key, // Bearer-токен
    'Content-Type: application/json',
    'Accept: application/json'
    // 'User-Agent: OpenCart-YandexDelivery/1.0'
    ],

    CURLOPT_TIMEOUT => 30,
    CURLOPT_CONNECTTIMEOUT => 10,
    CURLOPT_FAILONERROR => false,
    CURLOPT_HEADER => false,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_MAXREDIRS => 5
    ];

    // SSL настройки
    if ($is_test_environment) {
    $curl_options[CURLOPT_SSL_VERIFYPEER] = false;
    $curl_options[CURLOPT_SSL_VERIFYHOST] = 0;
    } else {
    $curl_options[CURLOPT_SSL_VERIFYPEER] = true;
    $curl_options[CURLOPT_SSL_VERIFYHOST] = 2;
    }

    curl_setopt_array($ch, $curl_options);

    $response = curl_exec($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $error = curl_error($ch);
    $error_no = curl_errno($ch);

    // curl_close($ch);

    // Логируем ответ
    $log_response = [
    'http_code' => $http_code,
    'curl_error' => $error,
    'curl_errno' => $error_no,
    'response_length' => strlen($response),
    'response_preview' => substr($response, 0, 500)
    ];

    $this->logError('Ответ пришедший от API Яндекса: ' . $endpoint, $log_response);

    2026-01-17 14:16:58 - Проверяем настройки Yandex.Delivery {"Bearer token":"y2_AgAAAAD04omrAAAPeAAAAAACRpC94Qk6Z5rUTgOcTgYFECJllXYKFx8","sender_id_set":"176","warehouse_id":"fbed3aa1-2cc6-4370-ab4d-59c5cc9bb924","host":"https:\/\/b2b.taxi.tst.yandex.net"}
    2026-01-17 14:16:58 - API то,что мы сформировали перед отправкой запроса в Яндекс [{"source":{"platform_station_id":"fbed3aa1-2cc6-4370-ab4d-59c5cc9bb924"},"destination":{"platform_station_id":null,"address":"Санкт-Петербург, Большая Монетная улица, 1к1А"},"tariff":"time_interval","total_weight":1000,"total_assessed_price":10000,"client_price":10000,"payment_method":"already_paid","places":[{"physical_dims":{"weight_gross":1000,"dx":10,"dy":10,"dz":10,"predefined_volume":1000}}]}]
    2026-01-17 14:16:58 - Полный адрес к кому обращаемся: https://b2b.taxi.tst.yandex.net/api/b2b/platform/pricing-calculator
    2026-01-17 14:16:58 - API запрос по адресу: https://b2b.taxi.tst.yandex.net/api/b2b/platform/pricing-calculator {"source":{"platform_station_id":"fbed3aa1-2cc6-4370-ab4d-59c5cc9bb924"},"destination":{"platform_station_id":null,"address":"Санкт-Петербург, Большая Монетная улица, 1к1А"},"tariff":"time_interval","total_weight":1000,"total_assessed_price":10000,"client_price":10000,"payment_method":"already_paid","places":[{"physical_dims":{"weight_gross":1000,"dx":10,"dy":10,"dz":10,"predefined_volume":1000}}],"_headers":{"Authorization:":"Bearer y2_AgAAAAD04omrAAAPeAAAAAACRpC94Qk6Z5rUTgOcTgYFECJllXYKFx8","Content-Type:":"application\/json"}}
    2026-01-17 14:16:58 - Среда отладки API {"api_url":"https:\/\/b2b.taxi.tst.yandex.net\/api\/b2b\/platform\/pricing-calculator","is_test_env":true,"host":"https:\/\/b2b.taxi.tst.yandex.net"}
    2026-01-17 14:16:58 - Сейчас вызов Curl
    2026-01-17 14:16:59 - Ответ пришедший от API Яндекса: /api/b2b/platform/pricing-calculator {"http_code":400,"curl_error":"","curl_errno":0,"response_length":75,"response_preview":"{\"code\":\"no_delivery_options\",\"message\":\"No delivery options for interval\"}"}
    2026-01-17 14:16:59 -
    2026-01-17 14:16:59 - Tariff time_interval failed {"error":"API error (400): No delivery options for interval","tariff":"time_interval","places_sample":{"physical_dims":{"weight_gross":1000,"dx":10,"dy":10,"dz":10,"predefined_volume":1000}}}
    2026-01-17 14:16:59 - API то,что мы сформировали перед отправкой запроса в Яндекс [{"source":{"platform_station_id":"fbed3aa1-2cc6-4370-ab4d-59c5cc9bb924"},"destination":{"platform_station_id":null,"address":"Санкт-Петербург, Большая Монетная улица, 1к1А"},"tariff":"self_pickup","total_weight":1000,"total_assessed_price":10000,"client_price":10000,"payment_method":"already_paid","places":[{"physical_dims":{"weight_gross":1000,"dx":10,"dy":10,"dz":10,"predefined_volume":1000}}]}]
    2026-01-17 14:16:59 - Полный адрес к кому обращаемся: https://b2b.taxi.tst.yandex.net/api/b2b/platform/pricing-calculator
    2026-01-17 14:16:59 - API запрос по адресу: https://b2b.taxi.tst.yandex.net/api/b2b/platform/pricing-calculator {"source":{"platform_station_id":"fbed3aa1-2cc6-4370-ab4d-59c5cc9bb924"},"destination":{"platform_station_id":null,"address":"Санкт-Петербург, Большая Монетная улица, 1к1А"},"tariff":"self_pickup","total_weight":1000,"total_assessed_price":10000,"client_price":10000,"payment_method":"already_paid","places":[{"physical_dims":{"weight_gross":1000,"dx":10,"dy":10,"dz":10,"predefined_volume":1000}}],"_headers":{"Authorization:":"Bearer y2_AgAAAAD04omrAAAPeAAAAAACRpC94Qk6Z5rUTgOcTgYFECJllXYKFx8","Content-Type:":"application\/json"}}
    2026-01-17 14:16:59 - Среда отладки API {"api_url":"https:\/\/b2b.taxi.tst.yandex.net\/api\/b2b\/platform\/pricing-calculator","is_test_env":true,"host":"https:\/\/b2b.taxi.tst.yandex.net"}
    2026-01-17 14:16:59 - Сейчас вызов Curl
    2026-01-17 14:16:59 - Ответ пришедший от API Яндекса: /api/b2b/platform/pricing-calculator {"http_code":400,"curl_error":"","curl_errno":0,"response_length":75,"response_preview":"{\"code\":\"no_delivery_options\",\"message\":\"No delivery options for interval\"}"}
    2026-01-17 14:16:59 -
    2026-01-17 14:16:59 - Tariff self_pickup failed {"error":"API error (400): No delivery options for interval","tariff":"self_pickup","places_sample":{"physical_dims":{"weight_gross":1000,"dx":10,"dy":10,"dz":10,"predefined_volume":1000}}}
     
    Последнее редактирование: 17 янв 2026
  2. smagluk

    smagluk Пользователь

    Сообщения:
    40
    Симпатии:
    5
    Проблема решена. Яндекс в своей инструкции писал лажу. После обращения исправил. Теперь для теста отправки работает только по москве.