Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: API
Войти
Регистрация
Восстановить пароль
 
kak-to-tak
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 27
1

API Яндекс.Доставки

24.09.2018, 20:01. Просмотров 117. Ответов 4

Добрый день.

Пытаюсь создать черновик заказа так как указано в документации

https://tech.yandex.ru/delivery/doc/dg/reference/create-order-docpage/

Все ок, т.к. для создания черновика требуется мало необязательных данных.
В личном кабинете черновик создается.

Если я начинаю указывать необязательные данные, то тоже все ок, но за исключением тех данных, которые передаются в виде массива, например, в массиве recipient передаются данные о получателе.

Отправка данных осуществляется CURL

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function get_info_method_delivery ($method, $param)
{
$href = 'https://delivery.yandex.ru/api/last/'.$method;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $href);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/x-www-form-urlencoded',
) );
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($param)); ############ 1 ВАРИАНТ
$out = curl_exec($curl);
$er = curl_error($curl);
curl_close($curl);
$response = json_decode($out, true);
return $response;
}
также пробовал и так:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function get_info_method_delivery ($method, $param)
{
$href = 'https://delivery.yandex.ru/api/last/'.$method;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $href);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/x-www-form-urlencoded',
) );
curl_setopt($curl, CURLOPT_POSTFIELDS, urldecode(http_build_query($param)));  ############ 2 ВАРИАНТ, с urldecode
$out = curl_exec($curl);
$er = curl_error($curl);
curl_close($curl);
$response = json_decode($out, true);
return $response;
}
PHP
1
$response = get_info_method_delivery ($method, $param);
Может кто подскажет, как отправить массив так, чтобы они (данные в массиве) были приняты сервером?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2018, 20:01
Ответы с готовыми решениями:

Погода API Яндекс
Всем привет. Хочу вывести погоду при помощи API Яндекса на свой сайт, нашел в интернете простой...

API Яндекс.Расписание
Здравствуйте. Можете мне коротко объяснить (можно пример кода) как пользоваться. Там есть...

Яндекс карты API
Прошу прощения, если пишу не в ту тему Подскажите, пожалуйста, кто пользуется. Есть ли в API...

разжуйте по яндекс деньгами API
нужно реализовать уведомление о переводе ЯДов юзеру на самописном сайте. POST-параметры указаны...

API яндекс директ: Миграция приложения v4 на v5
Доброго времени суток. Имеется скрипт, который работает с рекламными компаниями в яндекс директ....

4
Para bellum
Эксперт PHP
4106 / 3053 / 986
Регистрация: 06.01.2011
Сообщений: 8,933
25.09.2018, 17:04 2
А так не пробовали?
PHP
1
curl_setopt($curl, CURLOPT_POSTFIELDS, $param);
И заголовок Content-Type уберите.

Добавлено через 1 минуту
И замените
PHP
1
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
на
PHP
1
curl_setopt($curl, CURLOPT_POST, true);
0
kak-to-tak
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 27
25.09.2018, 20:48  [ТС] 3
Цитата Сообщение от Para bellum Посмотреть сообщение
А так не пробовали?
попробовал:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function get_info_method_delivery ($method, $param)
{
$href = 'https://delivery.yandex.ru/api/last/'.$method;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $href);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $param); 
$out = curl_exec($curl);
$er = curl_error($curl);
curl_close($curl);
$response = json_decode($out, true);
return $response;
}
 
$method = "createOrder";
 
$response = get_info_method_delivery ($method, $param);
Возвращается ответ:

HTML5
1
2
3
4
Array
(
    [status] => ok
)
но информацию содержащуюся в массиве все равно не принимает
0
kak-to-tak
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 27
09.10.2018, 02:02  [ТС] 4
Друзья, ну что ж такое, никак не могу осилить создание черновика.

С меня 1000 тому, кто поможет.
0
kak-to-tak
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 27
11.10.2018, 19:41  [ТС] 5
Вопрос решен.

Нужно передавать значения, не так:

recipient[middle_name]=<отчество получателя>

а в массиве:

recipient => array (
'middle_name' => <отчество получателя>
)
0
11.10.2018, 19:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2018, 19:41

Яндекс Погода API без картинок
Приветсвтую форумчане! Подскажите ход действия , чтобы убарть картинки из &quot;Яндекс Погода API&quot; и...

Примеры использования api яндекс переводчик
Пожалуйста дайте пример как использовать API яндекс переводчика. Дело в том, что в сети полно инфы...

Интеграция API Яндекс.Расписания на сайт Wordpress
Нужно встроить расписания на сайт Wordpress. На данный момент - расписания вылетов из аэропортов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru