@doorway-team
Казань

Почему JSON не посылается в API через POST запрос?

Пытаюсь передать данные в виде JSON POST-запросом в API сервиса RetailCRM. Однако, почему-то взаимодействия не происходит.

Имеется код:
<?php
$url = 'https://domain.retailcrm.ru/api/v5/orders/create?apiKey=t2SlFkY8o7tLpsGpbzeluCHd5TbFkxfD';
$json = '
	{
		"site":"ID",
		"order":{
			"firstName":"Тест 001",
			"phone":"00000000000",
			"email":"address@yandex.ru",
			"delivery":{
				"address":"Тестовый адрес..."
			},
			"customerComment":"Комментарий клиента...",
			"number":"Номер_Заказа",
			"items":[
				{
					"offer":{
						"externalId":"6005"
					},
					"quantity":"1"
				},
				{
					"offer":{
						"externalId":"6017"
					},
					"quantity":"5"
				}
			]
		}
	}
';
$data = array(
    'site' => 'ID',
    'order' => array(
        'firstName' => 'Тест 001',
        'phone' => '00000000000',
        'email' => 'address@yandex.ru',
        'delivery' => array(
            'address' => 'Тестовый адрес...'
        ),
        'customerComment' => 'Комментарий клиента...',
        'number' => 'Номер_Заказа',
        'items' => [
        	array(
            	'offer' => array(
            		'externalId' => '6005'
        		),
        		'quantity' => '1'
        	),
        	array(
            	'offer' => array(
            		'externalId' => '6017'
        		),
        		'quantity' => '5'
        	)
        ]
    )
);
$postdata = http_build_query(json_encode($data));
$opts = array('http' =>
	array(
		'method'  => 'POST',
		'header'  => 'Content-type: application/json; charset=UTF-8',
		'content' => $postdata
	)
);
$context = stream_context_create($opts);
return file_get_contents($url, false, $context);
?>

Передаю в запрос как и сам $json (json в чистом виде), так и $data через json_encode (массив в json форматирую)
В чем может быть проблема? Может кто и за $ может помочь?
  • Вопрос задан
  • 675 просмотров
Пригласить эксперта
Ответы на вопрос 1
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
$postdata = http_build_query(json_encode($data));
Строчка как то бредово выглядит.
Вы либо трусы наденьте, либо крестик снимите. Скорее всего ваш вариант:
$postdata = json_encode($data);
хотя возможен и
$postdata = http_build_query($data);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы