Fiat Module
Примечание: все числовые значения, суммы, курсы и идентификаторы в примерах являются иллюстративными и приведены только для демонстрации. Реальные значения зависят от рыночных условий, конфигурации аккаунта и параметров конкретной транзакции.
Обзор
Fiat Module — это подсистема платформы CryptoCash, которая позволяет мерчанту принимать фиатные платежи от конечных пользователей и получать криптовалюту на свой кошелёк. Интеграция выполняется через подписанные API-запросы. Платежи проводятся через платёжного провайдера (Mercuryo). Конечный пользователь завершает оплату в виджете CryptoCash, где выбирает способ оплаты. После обработки платежа мерчант получает webhook с финальным статусом. Поддерживаемые возможности:- Оплата картой, Apple Pay, Google Pay, SEPA и другие способы оплаты
- Подписанные запросы (
ED25519илиLEGACY/SHA256) для аутентификации мерчанта - Webhook-и мерчанту при каждом изменении статуса транзакции
- Автоматический расчёт заработка мерчанта на основе
partner_fee
Высокоуровневый сценарий
Подробное описание native-сценария Apple Pay см. в разделе Apple Native Pay.
Настройка мерчанта и Fiat API Key
Что настраивает мерчант
После того как администратор подготовил аккаунт, мерчант генерирует Fiat API Key в личном кабинете. При создании ключа задаются параметры, которые применяются ко всем платежам, связанным с этим ключом:
В ответе возвращается пара
publicKey / privateKey. Приватный ключ хранится на платформе в зашифрованном виде и показывается мерчанту только один раз — при создании. Сохраните его сразу.
Если на аккаунте мерчанта включена двухфакторная аутентификация, для генерации ключа потребуется подтверждение 2FA.
Поля Fiat API Key
ED25519 vs LEGACY
Что проверяется при каждом запросе
При получении подписанного запроса платформа проверяет:- Ключ активен
- Срок действия ключа не истёк
- IP API-вызывающего (сервер мерчанта) входит в список разрешённых, если включено ограничение по IP
- Подпись валидна для выбранного алгоритма
Важно: ограничение по IP применяется к адресу сервера, который делает API-запрос, а не к IP конечного пользователя в поле ip payload-а платежа.
Подписанные запросы
Все API-запросы мерчанта должны быть подписаны. Алгоритм подписи определяется значениемkeyType, выбранным при создании ключа.
Структура запроса
publicKey передаётся либо в заголовке x-public-key, либо внутри объекта data. Если присутствуют оба, приоритет у заголовка.
ED25519 (рекомендуется)
LEGACY (SHA256)
Полный пример
Payload дляform/retrieve:
Создание платежа — form/retrieve
Endpoint
Запрос
Полеdata подписанного запроса содержит следующий JSON:
* Чтобы выбрать крипто-актив, передайте либо ticker, либо пару currency + network.
Ответ
Что происходит после запроса
- Проверяется подпись и IP.
- Проверяется уникальность
externalIdв рамках ключа мерчанта. - Сумма в фиате сверяется с минимально допустимой для выбранной валюты.
- Значение
networkнормализуется (без учёта регистра). - Создаётся транзакция со статусом
New. - Генерируется URL виджета.
- Мерчанту отправляется webhook
payment::created. - Возвращаются
idиurl.
Виджет CryptoCash и страница провайдера
Мерчант всегда получает URL виджета CryptoCash. URL страницы провайдера формируется внутри виджета после выбора способа оплаты и мерчанту не возвращается.
Публичное API мерчанта
Получение платежа
data содержит одно из:
Список платежей
data:
Ответ:
Списки валют
data:
crypto-currencies/list возвращает доступные мерчанту криптовалюты вместе с сетями и тикерами. Значения из tickers можно передавать в form/retrieve вместо пары currency + network.
Поля ответа платежа
Статусы транзакций
Статусы выставляются платформой на основе событий платёжного провайдера. Мерчант не может изменить статус через API.