Задать вопрос
@anton_kP

Почему ошибка при отправке post запроса?

Из документации:
POST-запросы
При обращении к API-методам типа POST параметры необходимо отправлять в формате application/x-www-form-urlencoded. При этом если в каком-либо из параметров передается вложенная структура , то значения таких параметров необходимо передавать в виде JSON-строки.
Пример передаваемых данных:
site=simple-site&order=%7B%22externalId%22%3A%22a123%22%2C%22firstName%22%3A%22Tom%22%7D

Метод POST /api/v5/loyalty/account/create
Метод проверяет возможность участия клиента в программе лояльности и добавляет его
61968052d3ace720387209.png
Я делаю так:
//Делаем участником бонусов
$url = 'https://mysite.retailcrm.ru/api/v5/loyalty/account/create';
$headers = ['Content-Type: application/x-www-form-urlencoded', 'X-API-KEY: mykey']; // заголовки нашего запроса
$post_data = array(
    'site' => 'mysite',
    'loyaltyAccount' => array('phoneNumber' => $phone, 'cardNumber' => $card, 'customer' => 
          array('externalId' => $response[customers][0][externalId], 'id' => $response[customers][0][id])
                   )
                             );
$data_json = json_encode($post_data); // переводим поля в формат JSON
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_json);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
$result = curl_exec($curl); // результат POST запроса 
////////

print_r($result);покажет если Content-Type: application/json
{"success":false,"errorMsg":"Parameter 'loyaltyAccount[customer]' is missing"}

или если Content-Type: application/x-www-form-urlencoded'
{"success":false,"errorMsg":"Parameter \u0022loyaltyAccount\u0022 is missing"}

print_r($post_data);покажет:
Array
(
    [site] => mysite
    [loyaltyAccount] => Array
        (
            [phoneNumber] => 70000000000
            [cardNumber] => 887895345446
            [customer] => Array
                (
                    [externalId] => bitrix1772073
                    [id] => 31277
                )
        )
)

Почему у меня ошибка
{"success":false,"errorMsg":"Parameter \u0022loyaltyAccount\u0022 is missing"}


Что я делаю не так?
  • Вопрос задан
  • 412 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
в жсон нужно переводить только вложенные структуры, то есть жсонить нужно только содержимое loyaltyAccount.
Читайте нормально документацию.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽