API вызовы для автоматизированного обмена

Введение

Для начала работы с CardBtc API необходимо получить API Token. Чтобы получить Ваш API Token - необходимо связаться с одним из наших менеджеров. Это можно сделать через наш телеграм или написав на почту.

К Вашему токену будут привязаны такие параметры:

  • Минимальная и максимальная сумма обмена в установленной валюте
  • Курс валюты обмена (наценка в процентах)
  • Разрешенные направления обмена (Bitcoin, Litecoin, Ethereum, Monero, USDT, Банки, QIWI, SIM, ...)
Все эти параметры будут привязаны к вашей точке обмена (ТО). Вы можете зарегистрировать неограниченное число ТО с различными конфигурациями.

Точка входа в API

Все API запросы должны по адресу API_URL/Метод, где Метод - это указанный метод (функция) типа POST или GET со своим набором параметров. В свою очередь API_URL это адрес домена, который также будет Вам выдан вместе с токеном.

Для авторизации необходимо отправлять заголовок HTTP запроса:
Authorization: Bearer Токен
Где Токен, это Ваш токен, который привязан к вашей точке обмена (ТО). Все POST параметры передаются только JSON ENCODED объектом в виде RAW POST DATA.

Алгоритм работы API

Первым делом необходимо получить информацию о ТО. Отобразить клиенту текущий курс и лимиты по минимальной и максимальной сумме. Далее после того, как клиент укажет сумму, которую он хочет поменять и приемлемый метод обмена, нужно создать заявку на обмен. Далее в цикле получат информацию о заявке пока не изменится ее статус. Если в течении 20 минут реквизиты не будут выданы, то статус заявки автоматически изменится на Отменена. После получения реквизитов необходимо выдать клиенту реквизиты для оплаты. После того как клиент переведет деньги и нажмет кнопку Оплатил, нужно изменить статус заявки на Оплачено и в цикле проверять статус заявки. Она либо изменится на Отменена (если в течении 5 минут система не найдет оплату клиента) или на Ожидание отправки Биткоинов в случае положительного резульата. Также в течении нескольких секунд этот статус изменится на Обмен завершен.

Метод /exchange/info

Получить информацию о настройках вашей точки обмена.

  • Метод: GET
  • Запрос: /exchange/info
  • Параметры: Нет
Пример ответа:
stdClass Object(
    [status] => success
    [message] => Информация о магазине
    [data] => stdClass Object (
        Получить информацию о точке
        обмена.
        [name] => TestExchangePoint
        [min_amount] => 1000
        [max_amount] => 15000
        [fee] => 15
        [qiwi] => 1
        [sim] => 1
        [bank] =>
        [currency] => RUB
        [rate] => 499541.60
    )
)

Метод /exchange/order/create

Создать новую заявку.

  • Метод: POST
  • Запрос: /exchange/order/create
  • Параметры:
    • payment_method - Платежная система. Могут быть: bank, qiwi, sim, yandex
    • btc_wallet - Криптовалютный (Bitcoin, Litecoin, Monero, Ethereum, ...) кошелек, для получения выплаты
    • amount_cur - Если нужно поменять определенное количество фиата в криптовалюту, то укажите здесь точную сумму фиата, которую клиент будет отправлять. Если указан amount_btc - то не указывайте этот параметр, он будет проигнорирован.
    • amount_btc - Если нужно получить точное количество криптовалюты, то укажите в этом параметре это число до 8 знаков после запятой. Невозможно использовать вместе с amount_cur.
    • client_id - Код клиента. Нужен обязательно для идентификации клиентов. Используется для последующего учета и идентификации заказов.
    • ex_order_id - Ваш внутренний код заявки, который Вы можете указать, а можете не указывать. Используется в случае обращения ваших клиентов в нашу техническую поддержку.
    • number - Используется только в случае, если требуется указать реквизиты клиента, с которых он собирается производить оплату. Актуально для QIWI, Yandex.
Пример ответа:
stdClass Object(
    [status] => success
    [message] => Ваш запрос успешно создан
    [data] => stdClass Object (
        [date] => 2018-10-10 21:16:37
        [request_id] => 4
        [amount_btc] => 0.00200111
        [amount_cur] => 1000
        [payment_method] => qiwi
        [number] => +79586736229
        [rate] => 499722.15
        [fee] => 15
        [currency] => RUB
        [status] => 1
    )
)

Метод /exchange/order/status

Получить текущее состояние заявки по ее номеру.

  • Метод: GET
  • Запрос: /exchange/order/status/код где код - это номер заявки, выданный функцией /exchange/order/create
  • Параметры: нет
Пример ответа:
stdClass Object(
    [status] => success
    [message] => Заявка найдена
    [data] => stdClass Object(
        [date] => 2018-10-10 21:16:37
        [request_id] => 4
        [amount_btc] => 0.00200111
        [amount_cur] => 1000
        [payment_method] => qiwi
        [fee] => 15
        [currency] => RUB
        [status] => 1
        [error] =>
        [number] => +79586736111
    )
)

Метод /exchange/order/statuses

Получить текущее состояние нескольких заявок по их номерам.

  • Метод: POST
  • Запрос: /exchange/order/statuses
  • Параметры:
    • ids - Массив номеров заявок. Максимальное число номеров которое можно передать 100шт.
Пример ответа:
stdClass Object(
    [status] => success
    [message] => Заявка найдена
    [data] => stdClass Array([
        [0] => stdClass Object(
            [date] => 2018-10-10 21:16:37
            [request_id] => 4
            [amount_btc] => 0.00200111
            [amount_cur] => 1000
            [payment_method] => qiwi
            [fee] => 15
            [currency] => RUB
            [status] => 1
            [error] =>
            [number] => +79586736111
        ),
        ...
        [99] => stdClass Object(
            [date] => 2018-10-10 21:16:37
            [request_id] => 4
            [amount_btc] => 0.00200111
            [amount_cur] => 1000
            [payment_method] => qiwi
            [fee] => 15
            [currency] => RUB
            [status] => 1
            [error] =>
            [number] => +79586736111
        )
    ])
)

Метод /exchange/order/status

Изменить состояние заявки на новый статус. Например сменить статус заявки на поиск платежа, если клиент произвел оплату.

  • Метод: POST
  • Запрос: /exchange/order/status/код где код - это номер заявки, выданный функцией /exchange/order/create
  • Параметры:
    • status - Может быть только значением 4. Менять статус можно только если текущее состояние 2.
Пример ответа:
stdClass Object(
    [status] => success
    [message] => Состояние заявки успешно изменено Установка статуса «Оплатил» клиентом.
    [data] => stdClass Object(
        [date] => 2018-10-10 21:16:37
        [request_id] => 4
        [amount_btc] => 0.00200111
        [amount_cur] => 1000
        [payment_method] => qiwi
        [fee] => 15
        [currency] => RUB
        [status] => 4
        [error] =>
        [number] => +79776736169
        [details] => stdClass Object (
            [pay_info] => +79586736229
        )
    )
)

Метод /exchange/order/amount

Изменить сумму заявки указав желаемую сумму в криптовалюте или фиате.

  • Метод: POST
  • Запрос: /exchange/order/amount/код где код - это номер заявки, выданный функцией /exchange/order/create
  • Параметры:
    • amount_cur - Новая сумма в фиате. Нельзя использовать вместе с amount_btc
    • amount_btc - Новая сумма в криптовалюте. Нельзя использовать вместе с amount_cur
Пример ответа:
stdClass Object(
    [status] => success
    [message] => Сумма заявки успешно изменена
    [data] => stdClass Object(
        [date] => 2018-10-10 21:16:37
        [request_id] => 4
        [amount_btc] => 0.00200111
        [amount_cur] => 1000
        [payment_method] => qiwi
        [fee] => 15
        [currency] => RUB
        [status] => 4
        [error] =>
        [number] => +79776736169
        [details] => stdClass Object (
            [pay_info] => +79586736229
        )
    )
)