Перейти к основному содержанию

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

Подписанный запрос. Подпись и IP проверяются до обработки запроса.

Запрос

Поле data подписанного запроса содержит следующий JSON: * Чтобы выбрать крипто-актив, передайте либо ticker, либо пару currency + network.

Ответ

Что происходит после запроса

  1. Проверяется подпись и IP.
  2. Проверяется уникальность externalId в рамках ключа мерчанта.
  3. Сумма в фиате сверяется с минимально допустимой для выбранной валюты.
  4. Значение network нормализуется (без учёта регистра).
  5. Создаётся транзакция со статусом New.
  6. Генерируется URL виджета.
  7. Мерчанту отправляется webhook payment::created.
  8. Возвращаются id и url.

Виджет CryptoCash и страница провайдера

Мерчант всегда получает URL виджета CryptoCash. URL страницы провайдера формируется внутри виджета после выбора способа оплаты и мерчанту не возвращается.

Публичное API мерчанта

Получение платежа

Подписанный запрос. Поле data содержит одно из:
или
Ответ:

Список платежей

Подписанный запрос. Поле data: Ответ:

Списки валют

Оба endpoint-а используют подписанные запросы. Минимальный payload в data:
crypto-currencies/list возвращает доступные мерчанту криптовалюты вместе с сетями и тикерами. Значения из tickers можно передавать в form/retrieve вместо пары currency + network.

Поля ответа платежа

Статусы транзакций

Статусы выставляются платформой на основе событий платёжного провайдера. Мерчант не может изменить статус через API.

Обработка ошибок

Все ошибки API возвращаются в одном из двух форматов: Формат A — кодированная ошибка:
Формат B — список ошибок (используется при ошибках декодирования):

Коды ошибок

Apple Pay

Виджет CryptoCash поддерживает native-сценарий Apple Pay: платёжная панель iOS открывается прямо в виджете без редиректа на внешнюю страницу. Подробное описание условий доступности native-режима, fallback-поведения и обработки ошибок см. в разделе Apple Native Pay.

Диаграммы

Общий сценарий оплаты