Я пытаюсь сгенерировать new/receive
пакет BitCoin с Coinkite API
. Проблема в том, что API отклоняет мой вызов с сообщением об ошибке Bad Request
и некоторыми неожиданными аргументами для обязательных аргументов.
$endpoint='/v1/new/receive'; $url='https://api.coinkite.com'.$endpoint; $sign = CKsign($endpoint); $API_KEY = 'KebXXXXXX-XXXXXXXX-XXXXXXXXXXXXXXXX'; $ch = curl_init($url); curl_setopt($ch,CURLOPT_HTTPHEADER,array("X-CK-Key: {$API_KEY}", "X-CK-Sign: {$sign[0]}", "X-CK-Timestamp: {$sign[1]}")); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); $data = array('memo' => 'test pubkey 1', 'account' => '1FXXXXXX-XXXXXX'); //$data = array(array("memo","test pubkey 1"), array("account","1F3A7E22A8-51F278")); $data = json_encode($data); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $result = curl_exec($ch); curl_close($ch); echo $result;
Сообщение об ошибке, которое я получаю:
{ "help_msg": "Unexpected arg(s): {\"memo\":\"test pubkey 1\",\"account\":\"1FXXXXXX-XXXXXX\"}", "message": "Bad Request", "status": 400 }
Прокомментированная строка, фиктивный вектор, дает ту же ошибку, и я не понимаю, почему это происходит, поскольку это обязательные аргументы. Что я здесь делаю неправильно?
Omit "$ data = json_encode ($ data);". Нашел решение в https://github.com/coinkite/coinkite-php/blob/master/lib/CKRequestor.php : «$ args = JSON document или массив аргументов».
1) Первый шаг для таких вопросов – проверить «Отладка в реальном времени». Он показывает все аргументы, большинство заголовков, результатов и сообщений об ошибках для всего, что происходит с ключом API.
Откройте «Инструменты»> «Ключи API» и найдите волшебную палочку:
2) В данном случае здесь нет ничего плохого в «memo» и «account», и они являются действительным аргументом для этой команды. Я думаю, что проблема заключается в кодировании ваших данных. Я думаю, что он отправляет его в виде данных формы? Вместо этого вы должны использовать JSON. Coinkite рекомендует PUT JSON (включая правильную строку заголовка Content-Type: application/json
). Загляните в режим отладки в реальном времени и посмотрите, как сервер видит ваши данные, чтобы проверить, что это проблема.
Надеюсь, это поможет!