Coinbase - php curl sendmoney - 签名错误无效

时间:2016-03-11 15:19:20

标签: php curl coinbase-php

我正在尝试使用coinbase api发送并获取资金并在游戏中使用,运行下面的代码来发送资金获得无效的签名错误,不知道我错在哪里。我尝试获取帐户详细信息,工作正常,我可以获取帐户详细信息。

<?php
$API_VERSION = '2016-02-01';
$curl = curl_init();
$timestamp = json_decode(file_get_contents("https://api.coinbase.com/v2/time"), true)["data"]["epoch"];

$req = "/v2/accounts/:account_id/transactions";
$url = "https://api.coinbase.com".$req;
$cle = "xxxxxxx";
$secret = "xxxxxxxx";
$params=['type'=>'send', 'to'=>'xxxxxxxxxx', 'amount'=>0.0001, 'currency'=>'BTC'];

curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $url,
CURLOPT_POST => true,
CURLOPT_USERAGENT, 'local server',
CURLOPT_POSTFIELDS => json_encode($params),
CURLOPT_HTTPHEADER => array(
"CB-VERSION:" . $API_VERSION,
"CB-ACCESS-SIGN:" . hash_hmac('sha256', $timestamp."GET".$req, $secret),
"CB-ACCESS-KEY:" . $cle,
"CB-ACCESS-TIMESTAMP:" . $timestamp,
'Content-Type: application/json'
),
CURLOPT_SSL_VERIFYPEER => false
));

$rep = curl_exec($curl);
curl_close($curl);

print_r($rep);
?>

2 个答案:

答案 0 :(得分:0)

$req网址中,您需要将:account_id替换为3c04e35e-8e5a-5ff1-9155-00675db4ac02等实际帐户ID。

最重要的是,由于这是一个帖子请求,OAuth签名需要在签名中包含有效负载(POST数据)。

hash_hmac('sha256', $timestamp."POST".$req.json_encode($params), $secret),

答案 1 :(得分:0)

当我遇到此错误时,它最终成为帐户ID,这对于您的每个货币帐户都不同。花了太多时间试图弄清楚我的签名有什么问题......不管怎样,我确实尝试过,因为GET为我工作,但其他所有请求类型都以无效的签名错误结束。