Запрос Curl Post Ошибка проверки кода Json

Я получаю следующий вывод JSON, используя curl в PHP

ЗАГЛУШКА:

$request = curl_init("{$config['root']}/api/tickets");
    curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($request, CURLOPT_POST, true);
    curl_setopt($request, CURLOPT_POSTFIELDS, json_encode($body));
    curl_setopt($request, CURLOPT_TIMEOUT, 30);
    add_headers($request);    
    $response = curl_exec($request);

Функция:

function add_headers($request) {
    global $config;
    $headers = array('Content-Type: application/json');
    if (empty($config['accessClient'])) {
        curl_setopt($request, CURLOPT_USERPWD, "{$config['user']}:{$config['password']}");
    } else {
        array_push($headers, "Access-Client-Token: {$config['accessClient']}");
    }
    curl_setopt($request, CURLOPT_HTTPHEADER, $headers);
}

Вывод:

"{"amount":"100","description":"A ticket of 100.","payer":null,"successUrl":"http://localhost/wordpress5/ticket-confirmed.php","successWebhook":"http://localhost/wordpress5/ticket-confirmed-webhook.php","cancelUrl":"http://localhost/wordpress5/shop","orderId":"OID-1","expiresAfter":{"amount":1,"field":"hours"},"customValues":{}}"

и ответ завитка "

"{"Code":"Validation"}"

Консоль разработчика:

Malformed JSON Ouput

Примечание. Значения получены из переменных NetBeans. Когда я проверяю вывод из валидатора Json, он становится недействительным только из-за двойных кавычек в начале и конце вывода, что, я думаю, неплохо в php, когда мы назначаем вывод json в переменную.

Протестируйте Cyclos API здесь. U: демо п: 1234

это третья часть API?

Vel 25.02.2019 15:16

@Vel, да, это циклос

Muhammad Muazzam 25.02.2019 15:17

@Vel, ты можешь мне помочь?

Muhammad Muazzam 26.02.2019 12:49

Привет, у меня нет аккаунта в cyclos. поэтому я не могу проверить

Vel 26.02.2019 13:02

ни ваш curl-код, ни ваша функция add_headers не должны давать НИКАКИХ результатов, так что, очевидно, вы нам что-то не говорите. (например, может быть, у вас есть echo $response; подписка $response = curl_exec($request);, которую вы нам не показываете?)

hanshenrik 02.03.2019 12:33

@hanshenrik Я упомянул ответ "{"Code":"Validation"}"

Muhammad Muazzam 03.03.2019 09:59

Можешь показать, что ты делаешь с $response? Непонятно, от чего берется "{"Code":"Validation"}". Если я скопирую ваш код в свою IDE, ничего не произойдет, кроме того, что вывод curl будет назначен на $response. Но вы не показываете, что вы делаете с $response, что вызывает вашу проблему.

Cave Johnson 03.03.2019 19:31

Кстати, если переменная $responseсам имеет двойные кавычки в начале и в конце, их нужно удалить. Вы можете сделать это с помощью trim($response, '"'). Двойные кавычки (или одинарные кавычки) используются для присвоения строковых литералов переменной. Например, $response = "{'foo':'bar'}". Но после того, как вы это сделаете, содержимое $response станет {'foo':'bar'}. Без кавычек.

Cave Johnson 03.03.2019 19:39

@KodosJohnson Если я помещу этот вывод JSON {"amount":"100","description":"A ticket of 100.","payer":null,"successUrl":"http://localhost/wordpre‌​ss5/ticket-confirme‌​d.php","successWebho‌​ok":"http://localh‌​ost/wordpress5/tic‌​ket-confirmed-webhoo‌​k.php","cancelUrl":"‌​http://localhost/‌​wordpress5/shop","o‌​rderId":"OID-1","exp‌​iresAfter":{"amount"‌​:1,"field":"hours"},‌​"customValues":{}} в demo.cyclos.org/api#!/Tickets/newTicket, появится та же ошибка.

Muhammad Muazzam 04.03.2019 09:49

Похоже, вам нужно установить действительного плательщика ("payer":"valid value"), несмотря на то, что документ говорит, что это необязательно, а должен оставить пустым. Возможно, вам стоит обратиться в службу поддержки Cyclos?

Sally CJ 06.03.2019 03:37

@Sally CJ, когда я удаляю его, ошибки все еще сохраняются. Поддержка недоступна, опубликовано на forum.cyclos.org

Muhammad Muazzam 06.03.2019 07:04

На самом деле я имел в виду связаться с ними напрямую по электронной почте или через контактную форму.. если это возможно? Во-вторых, я говорил, попробуйте использовать допустимое значение payer — непустое имя пользователя или идентификатор.

Sally CJ 06.03.2019 10:12

@SallyCJ Я пытаюсь использовать payer=demo2, но выдает ту же ошибку: "{"code":"validation"}"

Muhammad Muazzam 06.03.2019 12:00

Я подозревал, что это проблема пользователя (авторизации), но в любом случае я рад, что проблема решена.

Sally CJ 08.03.2019 20:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
14
1 008
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Так что это оказалось проблемой с демо-счетом, который они предоставляют. Проверка ошибки имеет это описание на их сайте документации: Ошибка ввода. Либо ошибка проверки, либо превышено максимально допустимое количество элементов. Я создал новую учетную запись, и она работает нормально, ниже приведен код, который я использую:

function add_headers($request) {
    global $config;
    $headers = array('Content-Type: application/json');
    if (true || empty($config['accessClient'])) {
        curl_setopt($request, CURLOPT_USERPWD, "geeky:1234");
    } else {
        array_push($headers, "Access-Client-Token: {$config['accessClient']}");
    }
    curl_setopt($request, CURLOPT_HTTPHEADER, $headers);
}

$body = '{"amount":"100","description":"A ticket of 100.","payer":null,"successUrl":"http://localhost/wordpress5/ticket-confirmed.php","successWebhook":"http://localhost/wordpress5/ticket-confirmed-webhook.php","cancelUrl":"http://localhost/wordpress5/shop","orderId":"OID-1","expiresAfter":{"amount":1,"field":"hours"},"customValues":{}}';

$request = curl_init("https://demo.cyclos.org/api/tickets");
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_POST, true);
curl_setopt($request, CURLOPT_POSTFIELDS, $body);
curl_setopt($request, CURLOPT_TIMEOUT, 30);
add_headers($request);    
$response = curl_exec($request);
$response = json_decode($response);
var_dump($response);

Я жестко закодировал URL-адрес, а также изменил имя пользователя на свое демонстрационное. Спасибо.

Вы проверили это по ссылке выше Api

Muhammad Muazzam 07.03.2019 14:00

Я протестировал приведенный выше код и возвращает длинный объект JSON. Вы можете просто скопировать и вставить приведенный выше код в пустой файл PHP и запустить его, чтобы увидеть результаты.

Saqib Amin 07.03.2019 14:02

это работает, можете ли вы сказать мне, что требуется конфигурация пользователя или какая проблема с учетными записями пользователей, поскольку я должен сделать это с моим собственным сервером cyclos

Muhammad Muazzam 07.03.2019 16:34

пользователь по умолчанию demo, которого они предоставляют, имеет ограничения, поэтому пользователь не может создавать много запросов на создание. Вот почему вы видели ошибку. Если у вас есть выборочная установка, то это не будет проблемой. если вы хотите использовать их демонстрационный сайт, зарегистрируйте нового пользователя, и у вас все равно не возникнет никаких проблем.

Saqib Amin 07.03.2019 16:37

@SaqibAmin, +1, еще раз.. Извините, мой телефон вчера вел себя странно. В любом случае, хорошо знать реальную проблему проблемы. Ваше здоровье!

Sally CJ 08.03.2019 20:49

Другие вопросы по теме