CoinKite new / receive - 传递正确的参数

时间:2016-03-07 12:03:39

标签: php api

我正在尝试使用new/receive生成Coinkite API BitCoin pubkey。问题是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 } 

被注释的行,虚拟向量,给出了相同的错误,我不明白为什么会发生这种情况,因为这些是强制性的参数。我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

Omit" $ data = json_encode($ data);"。在https://github.com/coinkite/coinkite-php/blob/master/lib/CKRequestor.php:" $ args = JSON文档或参数数组"中找到了解决方案。

答案 1 :(得分:0)

1)这样的问题的第一步是检查“调试实时流”。它显示了API密钥发生的所有参数,大多数标题,结果和错误消息。

转到工具> API键并寻找魔杖:

enter image description here

2)特别是在你的情况下,“memo”和“account”没有任何问题,它们是这个命令的有效参数。我认为问题在于数据的编码。我认为它将其作为表单数据发送?您应该使用JSON代替。 Coinkite推荐使用JUT的PUT(包括正确的Content-Type标题行:application/json)。看一下调试实时流,看看服务器如何看待你的数据,以检查这是不是问题。

希望有所帮助!