Я получаю следующий вывод 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
@Vel, да, это циклос
@Vel, ты можешь мне помочь?
Привет, у меня нет аккаунта в cyclos. поэтому я не могу проверить
ни ваш curl-код, ни ваша функция add_headers не должны давать НИКАКИХ результатов, так что, очевидно, вы нам что-то не говорите. (например, может быть, у вас есть echo $response; подписка $response = curl_exec($request);, которую вы нам не показываете?)
@hanshenrik Я упомянул ответ "{"Code":"Validation"}"
Можешь показать, что ты делаешь с $response? Непонятно, от чего берется "{"Code":"Validation"}". Если я скопирую ваш код в свою IDE, ничего не произойдет, кроме того, что вывод curl будет назначен на $response. Но вы не показываете, что вы делаете с $response, что вызывает вашу проблему.
Кстати, если переменная $responseсам имеет двойные кавычки в начале и в конце, их нужно удалить. Вы можете сделать это с помощью trim($response, '"'). Двойные кавычки (или одинарные кавычки) используются для присвоения строковых литералов переменной. Например, $response = "{'foo':'bar'}". Но после того, как вы это сделаете, содержимое $response станет {'foo':'bar'}. Без кавычек.
@KodosJohnson Если я помещу этот вывод JSON {"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":{}} в demo.cyclos.org/api#!/Tickets/newTicket, появится та же ошибка.
Похоже, вам нужно установить действительного плательщика ("payer":"valid value"), несмотря на то, что документ говорит, что это необязательно, а должен оставить пустым. Возможно, вам стоит обратиться в службу поддержки Cyclos?
@Sally CJ, когда я удаляю его, ошибки все еще сохраняются. Поддержка недоступна, опубликовано на forum.cyclos.org
На самом деле я имел в виду связаться с ними напрямую по электронной почте или через контактную форму.. если это возможно? Во-вторых, я говорил, попробуйте использовать допустимое значение payer — непустое имя пользователя или идентификатор.
@SallyCJ Я пытаюсь использовать payer=demo2, но выдает ту же ошибку: "{"code":"validation"}"
Я подозревал, что это проблема пользователя (авторизации), но в любом случае я рад, что проблема решена.






Так что это оказалось проблемой с демо-счетом, который они предоставляют. Проверка ошибки имеет это описание на их сайте документации: Ошибка ввода. Либо ошибка проверки, либо превышено максимально допустимое количество элементов. Я создал новую учетную запись, и она работает нормально, ниже приведен код, который я использую:
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
Я протестировал приведенный выше код и возвращает длинный объект JSON. Вы можете просто скопировать и вставить приведенный выше код в пустой файл PHP и запустить его, чтобы увидеть результаты.
это работает, можете ли вы сказать мне, что требуется конфигурация пользователя или какая проблема с учетными записями пользователей, поскольку я должен сделать это с моим собственным сервером cyclos
пользователь по умолчанию demo, которого они предоставляют, имеет ограничения, поэтому пользователь не может создавать много запросов на создание. Вот почему вы видели ошибку. Если у вас есть выборочная установка, то это не будет проблемой. если вы хотите использовать их демонстрационный сайт, зарегистрируйте нового пользователя, и у вас все равно не возникнет никаких проблем.
@SaqibAmin, +1, еще раз.. Извините, мой телефон вчера вел себя странно. В любом случае, хорошо знать реальную проблему проблемы. Ваше здоровье!
это третья часть API?