отправить btc api coinbase?

Я пытаюсь отправлять сатоши на электронную почту через php с помощью coinbase api, но у меня это не работает. Я видел этот код в сети. Я получаю такую ​​ошибку:

{"errors": [{"id": "authentication_error", "message": "invalid signature"}]}

Я прикрепил php-код, который у меня есть на моем сайте

<?php
$timestamp = time();
$method = 'POST';
$request_path = '/v2/accounts/34en86m3-b0qa-5022-a45c-b110z38631k6/transactions';
$body = 'type=send&[email protected]&amount=0.00002504&currency=BTC';

$account_id = '34en86m3-b0qa-5022-a45c-b110z38631k6';
$hash_input = $timestamp.''.$method.''.$request_path.''.$body;
$apiSecret = 'VmQruPgmAYsW6Pq1vsC5bnzObd5LpTIn';
$signature = hash_hmac('sha256', $hash_input, $apiSecret, true); 

$accesskey = '1XJZLVA1F4zjQ9cO';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.coinbase.com/v2/accounts/'.$account_id.'/transactions');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');


$headers = array();
$headers[] = 'Cb-Access-Key: '.$accesskey;
$headers[] = 'Cb-Access-Sign: '.$signature;
$headers[] = 'Cb-Access-Timestamp: '.$timestamp;
$headers[] = 'Cb-version: 2017-08-07';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
else
{
echo $result;
}
curl_close ($ch);

?>  

Примечание: ключевые и секретные коды, размещенные в коде, придуманы, но на моем сайте у меня есть оригиналы.


person juansanchez1993    schedule 18.05.2018    source источник
comment
invalid signature Похоже, ошибка подсказала вам, что здесь не так. Вам нужно будет связаться со службой поддержки API, чтобы узнать, почему ваши учетные данные не работают.   -  person Machavity♦    schedule 18.05.2018
comment
Я связался с ними, и они не дают мне решения ... он говорит мне, что в коде может быть какая-то ошибка, но они не говорят мне, что это такое. Он сказал мне именно это: This is likely to be the result of your time being for the generation of your timestamp. Keep in mind the time must be within 30 seconds of the API service time. In my experience, that is often caused by invalid API keys. Но я не очень хорошо понимаю, что вы имеете в виду ...   -  person juansanchez1993    schedule 18.05.2018
comment
Я мог решить это, тема решена.   -  person juansanchez1993    schedule 25.05.2018
comment
Как вы это решили?   -  person Webmaster G    schedule 14.02.2019
comment
Я только что отправил ответ   -  person juansanchez1993    schedule 15.02.2019


Ответы (1)


Я решил это так.

          $secret = "fffffffff"; //you number secret
          $timestamp = time();
          $method = "POST";
          $request_path = "/v2/accounts/fffff-fffff-ffff-ffff-ffff/transactions"; //you account id

               $data = array (
               'type' => 'send',
               'to' => '[email protected]',  //put email
               'amount' => '0.0000012'), //put ammount
               'currency' => 'BTC',  //put crypto
               'description' => 'put you description', //put description
                );
               $body = json_encode($data);
               $prehash = $timestamp.$method.$request_path.$body;
               $sign = hash_hmac("sha256", $prehash, $secret);
               $ch = curl_init();
               $headers = array(
               'CB-ACCESS-KEY: fffffffffff', //You Key
               'CB-ACCESS-SIGN: '.$sign,
               'CB-ACCESS-TIMESTAMP: '.$timestamp,
               'CB-ACCESS-VERSION: 2018-05-20',
               'Content-Type: appliaction/json'
               );
               curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
               curl_setopt($ch, CURLOPT_USERAGENT, $SERVER['HTTP_USER_AGENT']);
               curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
               curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
               curl_setopt($ch, CURLOPT_URL, 'https://api.coinbase.com'.$request_path);
               $res = curl_exec($ch);
person juansanchez1993    schedule 14.02.2019