FireKassa API v2
  • FireKassa API v2
    • Правила сотрудничества с площадкой VanilaPay/FirePay
  • Общая информация
    • 💡Что нового?
    • 🛡️Безопасность
    • 🐞Обработка ошибок
    • 🪝Вебхуки
  • Счета
    • 📋Список счетов
    • 📄Просмотр счета
    • 📋Карточные методы
    • 📋Платежные методы
    • 📋Доступность методов
    • Курсы конвертации со счета на счет
  • Инвойсы
    • 📋Список инвойсов
    • 📄Просмотр инвойса
    • ➕Создание инвойса
    • ❌Отмена инвойса
  • Транзакции
    • 📋Список транзакций
    • 📄Просмотр транзакции
    • 🖤Проверка на наличие карты в черном списке
    • ✒️Добавление карты в черный список
    • Загрузка чека
    • 🤑Заявки на ввод
      • ➕Создание заявки на ввод
        • Карта
        • H2H
        • СБП
        • СБП (с)
        • USDT TRC20
        • USDT ERC20
      • ❌Отмена заявки на ввод
      • ⚡Передача сигнала об оплате
    • 💸Заявки на вывод
      • ➕Создание заявки на вывод
        • Карта
        • СБП
        • Телефон
        • Кошелек QIWI
        • Кошелек ЮMoney
        • USDT TRC20
        • USDT ERC20
        • Code
        • ECommerce (Оплата товара)
        • Счет (вывод на счет по реквизитам)
      • ❌Отмена заявки на вывод
      • 📋Перечень банков для СБП
      • 🧾Список банков для СБП на 24.04.2024
  • Premium Exchanger Modules
    • Прием платежей
    • Автовыплаты
      • Настройка автовыплат на сбп
Powered by GitBook
On this page
  • 1. Обязательное использование SSL
  • 2. Токен авторизации
  • 3. Подпись запросов
  • 4. Белый список айпи для доступа к API
  1. Общая информация

Безопасность

PreviousЧто нового?NextОбработка ошибок

Last updated 1 year ago

Мы прикладываем много усилилий для того, чтобы ваши средства были защищены от злоумышленников. Тем не менее, вам также требуется выполнить ряд действий для обеспечения защиты с вашей стороны

1. Обязательное использование SSL

Если вы не пользуетесь SSL, то весь трафик идет через сеть открытым текстом и потому может быть перехвачен злоумышленником. Чтобы избежать этой утечки, нужно обязательно использовать https, а не http.

Однако что более важно - обязательная проверка сертификата. С помощью атаки Man-In-The-Middle, мошенники могут попытаться перехватить ваш трафик. Это невозможно, если стоит проверка сертификата. Однако если ваш разработчик установит игнорирование проблем с сертификатом, то ваш трафик может оказаться под угрозой компроментации

2. Токен авторизации

Все запросы по API должны содержать токен авторизации, который идентифицирует вас как клиента и дает права на выполнение тех операций, которые вам доступны.

Токен авторизации указывается в виде bearer-значения для заголовка Authorization, вот пример:

curl --request POST \
  --url https://admin.vanilapay.com/api/v2/deposit \
  --header 'Authorization: Bearer ****' \
...
$httpClient = new \GuzzleHttp\Client();
$response = $httpClient->post('https://{{your_api_domain}}/api/v2/deposit', [
    'headers' => [
        'Authorization' => 'Bearer ' . $yourApiToken,
    ]
]);

Если токен указан не корректно или сайт еще не активирован, то вы получите ошибку HTTP 401 Unauthorized.

Токен авторизации индивидуален для каждого сайта и его можно увидеть\изменить именно в карточке сайта, на вкладке API.

После того как нажать на “Сменить токен” у вас появится окно, которое попросит подтверждения, а уже после этого появится окно с новым токеном. Это единственная возможность его скопировать, так что скопируйте и запишите у себя.

Внимание!!! Если токен указан некорректно, все запросы к апи будут возвращать ошибку HTTP 401 с телом ответа

{ “error”: ”Сайт не найден” }

3. Подпись запросов

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

Подпись запросов является опцией и ее можно включить в настройках сайта по вашему желанию.

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

Для формирования подписи требуется

  • создать строку из пути запроса ( начинается с /api/ ) и тела запроса ( если имеется )

  • обработать полученную строку с помощью HMAC с алгоритмом SHA512 и токеном для подписи запроса в качестве секрета для этого алгоритма

  • указать полученное значение в заголовке Signature

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

#example with body
$body = '{"method": "wallet", "amount": "50.00", "order_id": "12345"}';
$signature = hash_hmac('sha512', '/api/v2/deposit' . $body, 'your_key');

#example with query params and without body
$signature = hash_hmac('sha512', '/api/v2/transactions?sort=id', 'your_key');
import hmac
import hashlib

#example with body
body = '{"method": "wallet", "amount": "50.00", "order_id": "12345"}'.encode('utf-8')
signature = hmac.new('your_key'.encode('utf-8'), '/api/v2/deposit'.encode('utf-8') + body, hashlib.sha512).hexdigest()

#example with query params and without body
signature = hmac.new('your_key'.encode('utf-8'), '/api/v2/transactions?sort=id'.encode('utf-8'), hashlib.sha512).hexdigest()

Допустим вы вычислили подпись и она равна 1234567890. В этом случае запрос будет выглядеть следующим образом

curl --request POST \
  --url https://admin.vanilapay.com/api/v2/deposit \
  --header 'Authorization: Bearer ****' \
  --header 'Signature: 1234567890' \
  --header 'Content-Type: application/json' \
...
$httpClient = new \GuzzleHttp\Client();
$response = $httpClient->post('https://{{your_api_domain}}/api/v2/deposit', [
    'headers' => [
        'Authorization' => 'Bearer ' . $yourApiToken,
        'Signature' => '1234567890',
    ]
]);

4. Белый список айпи для доступа к API

Дополнительной опцией по безопасности является настройка белого списка айпи для доступа к API. Ранее у нас был такой список только на выводы, но в текущей версии API у нас есть отдельный список, который работает на все запросы к апи.

Настраивается этот список в карточке сайта, в разделе API

Внимание!!! Если запрос прийдет с айпи, которого нет в списке, в ответ будет возвращаться ошибка HTTP 401 с телом ответа

{ “error”: ”Сайт не найден” }
🛡️