AlfaBit Kassa
  • Начало работы
    • Добавление сайтов
    • Настройка API ключей
    • Настройка callback URL
    • Настройка белого списка IP
    • Регистрация аккаунта
  • Общая информация
    • API Авторизация
    • API Определения
    • HTTP статус коды ошибок
    • Доступные методы транзакций
  • API документация
    • Счета и балансы
      • Получить список счетов
      • Получить конкретный счет
      • Получить список доступных методов
      • Суммарный баланс
    • Транзакции
      • Прием средств
        • Создание заявки на ввод
        • Отметить ввод оплаченным
      • Выплата средств
        • Создание заявки на вывод
      • Просмотр списка транзакций
      • Просмотр транзакции
      • Отмена транзакции
    • Вебхуки
      • Формат вебхука
      • Подпись вебхука
      • Айпи адреса
      • Повторные уведомления
    • Enum определения
Powered by GitBook
On this page
  1. Общая информация

API Авторизация

Передача токена в заголовке Authorization это отраслевой стандарт безопасности для авторизации, однако часть клиентов захотела еще большей безопасности, потому была добавлена подпись запросов.

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

Предположим вы вычислили подпись для вашего запроса и речь идет про 1234567890, в этом случае ваш запрос должен будет выглядеть следующим образом:

curl --request POST \
 --url https://admin.vanilapay.com/api/v2/deposit \
 --header 'Authorization: Bearer ****' \
 --header 'Signature: 1234567890' \
 --header 'Content-Type: application/json' \
 --data '{
 "order_id": "test1",
 "method": "wallet",
 "amount": "100.00"
}

Пример формирования подписи на Python:


    @staticmethod
    def __get_msg_from_params(params: dict) -> bytes:
        msg = (
            None if not params else
            urllib.parse.urlencode(params)
        )
        return msg

    @staticmethod
    def __get_msg_from_body(self, body: dict) -> bytes:
        msg = (
            None if not body else
            json.dumps(body)
        )
        return msg

    @staticmethod
    def __get_msg_for_signature(method: str, body: dict, params: dict) -> bytes:
        if method == "post":
            msg = self.__get_msg_from_body(body=body)
        else:
            msg = self.__get_msg_from_params(params=params)
        return msg.encode("utf-8")

    def __sign(self, method: str, resource: str, params: dict = None, body: dict = None):
        base_message = f"/api/v2/{resource}".encode(encode_type)
        msg_form_request_data = self.__get_msg_for_signature(method=method, body=body, params=params)
        message = base_message if not msg else base_message + msg_form_request_data
        signature = hmac.new(
            key=self.secret.encode(encode_type),
            msg=message,
            digestmod=hashlib.sha512,
        ).hexdigest()
        self.headers["Signature"] = signature
PreviousОбщая информацияNextAPI Определения

Last updated 1 year ago