Могу ли я делать переводы между портфелями с API вывода и депозита? [coinbase-api]

Мы не можем использовать следующие API-интерфейсы для переноса между портфелями.

  1. «POST / снятия средств / coinbase-account (url: https://api-public.sandbox.pro.coinbase.com/withdrawals/coinbase-account)
  2. «POST / депозиты / coinbase-account» (url: https://api-public.sandbox.pro.coinbase.com/deposit/coinbase-account)

Сообщение об ошибке выглядит следующим образом: ApiError (status 403 code =): Invalid scope COINBASE args ({'data': '{amount: 0.1, currency: BTC, coinbase_account_id: 4b08d5e5-fe77-4249-b017-301e8890652a}', ' заголовки ': {' Content-type ':' application / json ',' CB-ACCESS-KEY ':' XXXXXXXXXXXX ',' CB-ACCESS-SIGN ':' xxxxxxxxxxxxxxxxxxxxxxxxx, 'CB-ACCESS-TIMESTAMP': '1594280190.878908' , 'CB-ACCESS-PASSPHRASE': 'xxxxxxxxxxx'}, 'timeout': 30.0})

Сообщите нам, предназначены ли эти 2 API для передачи между портфелями или нет. Однако, если с API все в порядке, не могли бы вы продемонстрировать на URL-адресе и запросить полезную нагрузку для следующих двух случаев использования:

  1. Если я хочу выполнить перевод из профиля A в профиль B, используя ключи API A (с доступом к передаче) и A.withdrawals (актив, сумма, coinbase_id = B)
  2. Если я хочу выполнить перенос из профиля B в профиль A, используя ключи API A (с доступом к передаче) и A.deposits (актив, сумма, coinbase_id = B)

В частности, означает ли coinbase_id идентификатор профиля (портфеля) или идентификатор учетной записи (актива)? Как получить этот идентификатор по API?


person Xiangyuan Huang    schedule 27.07.2020    source источник
comment
Это сразу несколько вопросов, некоторые из которых, кажется, действительно связаны с чтением документации по соответствующему API.   -  person Vukasin Toroman    schedule 27.07.2020
comment
похоже, что документация по API не совсем раскрывает, как осуществлять перевод с использованием API вывода и передачи.   -  person Xiangyuan Huang    schedule 28.07.2020


Ответы (2)


Это уже давняя тема, я полагаю, вы уже нашли свой ответ, но если нет, и для тех, кто заинтересован, вы можете использовать _ 1_ способ перевода средств между вашими портфелями Coinbase Pro.

Просто у вас должен быть ключ API, созданный из портфолио с разрешением на передачу.

Пример:

POST /profiles/transfer
{
    "from": "86602c68-306a-4500-ac73-4ce56a91d83c",
    "to": "e87429d3-f0a7-4f28-8dff-8dd93d383de1",
    "currency": "EUR",
    "amount": "100.00"
}
person iTh0m    schedule 10.03.2021
comment
У меня есть ключ API, созданный с разрешением на перевод, но я не могу переводить средства. Что еще мне нужно знать? - person E.Bradford; 13.03.2021

Вы можете получить идентификатор учетной записи, предварительно получив авторизацию Oauth2. Как только это будет получено, вы можете использовать вызов Coinbase API (НЕ PRO) для получения идентификатора учетной записи. Я не буду описывать вызовы Oauth2, поскольку они хорошо документированы. Вызов API с использованием PHP CURL выглядит следующим образом:

//////////////////////
// IMPORTANT, not covered how to obtain this

// Assuming a variable which contains the Oauth2 access code is passed in 
// with a variable name called 

// $oauth_provided_access_token
// IMPORTANT
//////////////////////

// Obtain Timestamp
$API_VERSION = '2021-02-26';
$timestamp = json_decode(file_get_contents("https://api.coinbase.com/v2/time"), true)["data"]["epoch"];

// Define request
$req = "/v2/user";

// Define full URL, why Coinbase cannot parse this and obtain the request is strange
$url = "https://api.coinbase.com" . $req;

// Obtain API key/Secret (Do not put this in your PHP code, obtain it via environment variables
// Note that the key and secret are not required in this instance
// but many Coinbase API calls will need them

//$key    = $_SERVER["HTTP_MY_COINBASE_API_KEY"];
//$secret = $_SERVER["HTTP_MY_COINBASE_API_SECRET"];

// Set up CURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, false );
curl_setopt($ch, CURLOPT_USERAGENT,'CoinbaseAPI');
curl_setopt($ch, CURLOPT_HTTPHEADER 
  , array ( "Authorization: Bearer " . $oauth_provided_access_token
         , "CB-VERSION:" . $API_VERSION
         , "CB-ACCESS-TIMESTAMP:" . $timestamp    
         ) 
  );
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true );

$response = curl_exec($ch); // Actual account info

$info = curl_getinfo($ch); // Get more debugging info

curl_close($ch);

$response_object=json_decode($response);

echo $response_object->{"data")->{"id"}; // User Account ID
person E.Bradford    schedule 12.03.2021