Author

Topic: Вопрос по API Yobit (Read 2054 times)

sr. member
Activity: 1932
Merit: 349
May 18, 2020, 04:45:06 PM
#13
Ну не буду же я всем свои ключи раздавать, у меня они прописаны

Может кто-нить даст рабочий пример getInfo на питоне?


может...
но я могу дать только за сто тысчь пятсот рублей  Cool
можно даже кодом yobit
jr. member
Activity: 134
Merit: 1
May 18, 2020, 02:48:12 PM
#12
Ну не буду же я всем свои ключи раздавать, у меня они прописаны

Может кто-нить даст рабочий пример getInfo на питоне?
sr. member
Activity: 1932
Merit: 349
March 24, 2020, 06:43:05 AM
#11
Может кто подсказать по решению на powershell?
Сервер всегда выдает нижеуказанную ошибку. Не пойму в чем проблема в вычислении HMACSHA512 или в запросе

{"success":0,"error":"invalid key, sign, method or nonce"}


Code:
$local:Key = ''
$local:Secret = ''
$local:Nonce = [int](New-TimeSpan -Start ([DateTime]"01/01/2020 00:00") -End (Get-Date)).TotalSeconds

$local:Message = "method=getinfo&nonce=$Nonce"

$local:HMACSHA = New-Object System.Security.Cryptography.HMACSHA512
$HMACSHA.key = [Text.Encoding]::UTF8.GetBytes($Secret)
$local:Signature = $HMACSHA.ComputeHash([Text.Encoding]::UTF8.GetBytes($Message))
$Signature = [Convert]::ToBase64String($Signature)

$local:Result = Invoke-WebRequest -URI 'https://yobit.net/tapi/' -Method 'POST' -ContentType 'application/x-www-form-urlencoded' -Headers @{Sign = $Signature; Key = $Key} -TimeoutSec 20

Write-Host $Result

не заданы ключи $local:Key = ''
$local:Secret = ''
jr. member
Activity: 134
Merit: 1
March 15, 2020, 10:21:49 AM
#10
Может кто подсказать по решению на powershell?
Сервер всегда выдает нижеуказанную ошибку. Не пойму в чем проблема в вычислении HMACSHA512 или в запросе

{"success":0,"error":"invalid key, sign, method or nonce"}


Code:
$local:Key = ''
$local:Secret = ''
$local:Nonce = [int](New-TimeSpan -Start ([DateTime]"01/01/2020 00:00") -End (Get-Date)).TotalSeconds

$local:Message = "method=getinfo&nonce=$Nonce"

$local:HMACSHA = New-Object System.Security.Cryptography.HMACSHA512
$HMACSHA.key = [Text.Encoding]::UTF8.GetBytes($Secret)
$local:Signature = $HMACSHA.ComputeHash([Text.Encoding]::UTF8.GetBytes($Message))
$Signature = [Convert]::ToBase64String($Signature)

$local:Result = Invoke-WebRequest -URI 'https://yobit.net/tapi/' -Method 'POST' -ContentType 'application/x-www-form-urlencoded' -Headers @{Sign = $Signature; Key = $Key} -TimeoutSec 20

Write-Host $Result
newbie
Activity: 18
Merit: 0
January 20, 2018, 10:49:38 AM
#9
На РНР нагуглилось два решения, разной степени готовности:

- https://github.com/pepijnolivier/laravel-yobit

- https://www.snip2code.com/Snippet/861483/Yobit-API-in-PHP


А сайт подключить к API Yobit, чтобы при пополнении баланс на сайте средства зачислялись на Yobit.
full member
Activity: 138
Merit: 101
September 17, 2017, 06:29:15 AM
#8
На РНР нагуглилось два решения, разной степени готовности:

- https://github.com/pepijnolivier/laravel-yobit

- https://www.snip2code.com/Snippet/861483/Yobit-API-in-PHP
newbie
Activity: 18
Merit: 0
September 16, 2017, 04:54:30 PM
#7
А есть у кого готовое решение для PHP?
Скиньте плиз скрипт.
newbie
Activity: 8
Merit: 1
August 07, 2017, 05:03:54 PM
#6
ligor, огромное спасибо! Smiley
full member
Activity: 1246
Merit: 138
Hodl DeepOnion
August 07, 2017, 03:38:31 PM
#5
Да уж, очень подробная у них документация   Angry.   Вот правильный вариант
Code:
        public void GetInfo()
        {

            string parameters = $"method=getInfo&nonce=" + (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;

            string address = $"{tapi}/";

            var keyByte = Encoding.UTF8.GetBytes(secret);

            string sign1 = string.Empty;
            byte[] inputBytes = Encoding.UTF8.GetBytes(parameters);
            using (var hmac = new HMACSHA512(keyByte))
            {
                byte[] hashValue = hmac.ComputeHash(inputBytes);

                StringBuilder hex1 = new StringBuilder(hashValue.Length * 2);
                foreach (byte b in hashValue)
                {
                    hex1.AppendFormat("{0:x2}", b);
                }
                sign1 = hex1.ToString();
            }

            WebRequest webRequest = (HttpWebRequest)System.Net.WebRequest.Create(address);
            if (webRequest != null)
            {
                webRequest.Method = "POST";
                webRequest.Timeout = 20000;
                webRequest.ContentType = "application/x-www-form-urlencoded";
                webRequest.Headers.Add("Key", key);
                webRequest.Headers.Add("Sign", sign1);

                webRequest.ContentLength = parameters.Length;
                using (var dataStream = webRequest.GetRequestStream())
                {
                    dataStream.Write(inputBytes, 0, parameters.Length);
                }

                using (System.IO.Stream s = webRequest.GetResponse().GetResponseStream())
                {
                    using (System.IO.StreamReader sr = new System.IO.StreamReader(s))
                    {
                        var jsonResponse = sr.ReadToEnd();
                        Console.WriteLine(String.Format("Response: {0}", jsonResponse));
                    }
                }
            }

        }
sr. member
Activity: 244
Merit: 250
August 07, 2017, 01:09:49 PM
#4
Quote
нужно тогда его где то сохранять либо другой вариант брать unix time, но тогда запросы можно будет делать не чаще раза в секунду

Можно записывать значение в файл, а при запуске программа должна считывать из файла последнее значение nonce.

Quote
пры поппытке вызвать метод getInfo всегда получаю ошибку

Смотрите какой код ответа возвращает вам биржа, ну смотрите таблицу расшифровки кодов ошибок.
full member
Activity: 256
Merit: 102
August 07, 2017, 10:58:35 AM
#3
Поддерживаю с BrXeon, нужно тогда его где то сохранять либо другой вариант брать unix time, но тогда запросы можно будет делать не чаще раза в секунду
newbie
Activity: 2
Merit: 0
August 07, 2017, 05:17:20 AM
#2
Добрый день,
Из описания API:
Параметр nonce (минимум 1, максимум 2147483646) при каждом новом запросе должен быть больше значения из предыдущего запроса.
Для обнуления nonce необходимо создать новый ключ.

Т.е. при каждом обращении к Trade API nonce нужно увеличивать, использованный nonce будет выдавать ошибку.
newbie
Activity: 8
Merit: 1
August 06, 2017, 06:28:24 AM
#1
Добрый день. Подскажите, пожалуйста, возможно кто-то встречался с такой проблемой. Пытаюсь для себя написать на C# простое приложение и пры поппытке вызвать метод getInfo всегда получаю ошибку. Пишет, что ключ, подпись, метод или nonce неверный. Нашел несколько примеров, проверил все, что мог. Ошибки не вижу. Может кто-нибудь знает в чем тут может быть дело? Вот код:

        const string key = "072BCC223A1ADBE86854A4B4A9468EAB";
        const string secret = "4c962093fb943d418afb8fae14841c6b";
        const string tapi = "https://yobit.net/tapi";

        public void GetInfo() {
            int nonce = 1;

            string parameters = $"method=getInfo&nonce=1";

            string address = $"{tapi}?{parameters}";

            var keyByte = Encoding.UTF8.GetBytes(secret);

            string sign1 = string.Empty;
            byte[] inputBytes = Encoding.UTF8.GetBytes(parameters);
            using (var hmac = new HMACSHA512(keyByte))
            {
                byte[] hashValue = hmac.ComputeHash(inputBytes);

                StringBuilder hex1 = new StringBuilder(hashValue.Length * 2);
                foreach (byte b in hashValue)
                {
                    hex1.AppendFormat("{0:x2}", b);
                }
                sign1 =  hex1.ToString();
            }

            WebRequest webRequest = (HttpWebRequest)System.Net.WebRequest.Create(address);
            if (webRequest != null)
            {
                webRequest.Method = "POST";
                webRequest.Timeout = 20000;
                webRequest.ContentType = "application/x-www-form-urlencoded";
                webRequest.Headers.Add("Key", key);
                webRequest.Headers.Add("Sign", sign1);

                using (System.IO.Stream s = webRequest.GetResponse().GetResponseStream())
                {
                    using (System.IO.StreamReader sr = new System.IO.StreamReader(s))
                    {
                        var jsonResponse = sr.ReadToEnd();
                        Console.WriteLine(String.Format("Response: {0}", jsonResponse));
                    }
                }
            }


            Log(nonce.ToString());
        }


Ключ - InfoOnly, nonce специально захардкодил на 1 для простоты. Буду очень признателен за любую помощь
Jump to: