Задать вопрос
@AlexSn2020

Как сформировать запрос на создание Exmo кода?

Здравствуйте! Облазил всю сеть, не нашёл подсказки. Я пытаюсь переделать торгового бота, чтобы он отрезал exmo код. Чуть изменил программу, но никак не могу сформировать правильный request.
Подскажите, что мне переделать?
import urllib, http.client
import time
import json
# эти модули нужны для генерации подписи API
import hmac, hashlib
from exmo_key import *

# ключи API, которые предоставила exmo
API_KEY = a
# обратите внимание, что добавлена 'b' перед строкой
API_SECRET = b

CURRENCY='RUB'

# базовые настройки
API_URL = 'api.exmo.com'
API_VERSION = 'v1'

# Свой класс исключений
class ScriptError(Exception):
    pass
class ScriptQuitCondition(Exception):
    pass

# все обращения к API проходят через эту функцию
def call_api(api_method, http_method="POST", **kwargs):
    # Составляем словарь {ключ:значение} для отправки на биржу
    # пока что в нём {'nonce':123172368123}
    payload = {'nonce': int(round(time.time()*1000))}

    # Если в ф-цию переданы параметры в формате ключ:значение
    if kwargs:
        # добавляем каждый параметр в словарь payload
        # Получится {'nonce':123172368123, 'param1':'val1', 'param2':'val2'}
        payload.update(kwargs)

    # Переводим словарь payload в строку, в формат для отправки через GET/POST и т.п.
    payload =  urllib.parse.urlencode(payload)

    # Из строки payload получаем "подпись", хешируем с помощью секретного ключа API
    # sing - получаемый ключ, который будет отправлен на биржу для проверки
    H = hmac.new(key=API_SECRET, digestmod=hashlib.sha512)
    H.update(payload.encode('utf-8'))
    sign = H.hexdigest()

    # Формируем заголовки request для отправки запроса на биржу. 
    # Передается публичный ключ API и подпись, полученная с помощью hmac
    headers = {"Content-type": "application/x-www-form-urlencoded",
           "Key":API_KEY,
           "Sign":sign,
            "currency":CURRENCY,
            "amount":10
        }

    # Создаем подключение к бирже, если в течении 60 сек не удалось подключиться, обрыв соединения
    conn = http.client.HTTPSConnection(API_URL, timeout=60)
    # После установления связи, запрашиваем переданный адрес
    # В заголовке запроса уходят headers, в теле - payload
    conn.request(http_method,"/"+API_VERSION + "/" + api_method, payload, headers)
    # Получаем ответ с биржи и читаем его в переменную response
    response = conn.getresponse().read()
    # Закрываем подключение
    conn.close()
    return response

ex_code=call_api('excode_create')
print(ex_code)

Вот данные для POST запроса:
curl --location --request POST 'https://api.exmo.com/v1/excode_create' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Key: ' \
--header 'Sign: ' \
--data-urlencode 'currency=BTC' \
--data-urlencode 'amount=10' \
--data-urlencode 'login=test_user' \
--data-urlencode 'nonce=1592989431'
  • Вопрос задан
  • 221 просмотр
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
@AlexSn2020 Автор вопроса
Никто не ответит?)
Ответ написан
Комментировать
h4r7w3l1
@h4r7w3l1
## Getting Started
Install composer in your project: ```curl -s https://getcomposer.org/installer | php```

Create a composer.json file in your project root: ```{
    "require": {
        "exmo/api": "1.*"
    }
}```

Install via composer:```php composer.phar install```

```php
use Exmo\Api\Request;

require 'vendor/autoload.php';

$request = new Request('your_key', 'your_secret');
$result = $request->query('user_info');
...
```

https://github.com/exmo-dev/exmo_composer.git

create new file ./exmo_composer/exmo_make_gc.php
insert your api keys "K-xxxxxxxxxxxxxxx" + "S-xxxxxxxxxxxxxxxxx"

<?php
use Exmo\Api\Request;
require 'vendor/autoload.php';

$request = new Request('K-00000000000000aaaaaaaaaaaaaaaaaaaaa', 'S-dddddddddddddddddaaaaaaaaaaaaaaassssss');
$result = $request->query('excode_create', Array(   'currency'=>'RUB',    'amount'=>1000,));
var_dump($result);

Request will return code for redeem
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы