1. Платежи
Platega.io API
  • Авторизация
  • Модули CMS
  • SDK
  • Платежи
    • Приём карт по H2H
    • Рекуррентные СБП-подписки
      • Пробный доступ и изменение суммы подписки
      • Подписки по H2H
      • Создать подписку
      • Получить подписку
      • Список подписок
      • Отменить подписку
      • Проверка возможности обновить подписку
      • Обновление подписки
    • Создание платежной ссылки без заданного метода
      POST
    • Создание платежной ссылки с заданным методом
      POST
    • Получение QR-кода для H2H-транзакции
      GET
    • Проверка статуса оплаты платежа
      GET
    • Выгрузка транзакций в CSV
      POST
    • Выгрузка транзакций в Excel
      POST
    • Выгрузка транзакций в Json
      POST
  • Балансы
    • Получение балансов
      GET
  • Возвраты
    • Проверка возможности отмены транзакции
      GET
    • Отмена транзакции
      POST
    • Частичная отмена транзакции
      POST
  • Выводы
    • Создаёт вывод на рублёвую карту через Payout API
    • Создаёт вывод на криптокошелек через Payout API
    • Получение сохранённых карт
      GET
    • Получение сохраненных криптокошельков
      GET
  • Callbacks
    • Колбэки — общая информация
    • CONFIRMED
    • CANCELED
    • CHARGEBACKED
    • PARTIALLY_REFUNDED
    • DISPUTED
  • Schemas
    • Schemas
      • PaymentStatus
      • PaymentMethodInt
      • CreateTransactionRequest
      • CreateTransactionResponse
      • TransactionStatusResponse
      • SubscriptionStatus
      • CallbackSubscriptionStatus
      • SubscriptionInterval
    • Статус платежа в колбэке
    • Результат операции возврата
    • Общие поля колбэка
    • Поля колбэка по возврату
    • CallbackPayload
    • Поля колбэка по подписке
  1. Платежи

Приём карт по H2H

Приём карточных платежей без платёжной формы: реквизиты карты шифруются на стороне плательщика и передаются в Platega одним зашифрованным конвертом.

Последовательность вызовов#

1.
POST /transaction/process — создать карточную транзакцию.
2.
GET /h2h/card/encryption-key — получить публичный ключ шифрования.
3.
Сформировать одноразовый compact JWE с реквизитами карты.
4.
POST /h2h/{transactionId}/card — запустить оплату.
5.
Обработать ответ по значению threeDsStep или redirectUrl.
6.
Дождаться финального статуса через колбэк или GET /transaction/{transactionId}.

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

ЗаголовокЗначениеГде использовать
X-MerchantIdИдентификатор мерчанта, UUIDВо всех запросах
X-SecretСекретный ключ мерчантаТолько на вашем сервере
Content-Typeapplication/jsonВо всех POST-запросах
X-Secret передавать в браузер нельзя. Браузеру можно отдавать публичный ключ, transactionId и данные, необходимые для прохождения 3DS.

Шаг 1. Создать транзакцию#

POST /transaction/process
ПолеТипОбяз.Описание
paymentMethodnumberда11 — карта
paymentDetails.amountnumberдаСумма платежа
paymentDetails.currencystringдаКод валюты, например RUB
descriptionstringнетОписание платежа
returnstringнетАдрес возврата плательщика при успехе
failedUrlstringнетАдрес возврата плательщика при ошибке
payloadstringнетВаш идентификатор заказа или служебные данные
metadataobjectнетДополнительные данные заказа

Пример запроса#

{
  "paymentMethod": 11,
  "paymentDetails": {
    "amount": 1100,
    "currency": "RUB"
  },
  "description": "Заказ 123",
  "return": "https://merchant.example/success",
  "failedUrl": "https://merchant.example/fail",
  "payload": "order-123",
  "metadata": {
    "userId": "123456789",
    "userName": "@username"
  }
}

Пример ответа, 200#

{
  "paymentMethod": "Card",
  "transactionId": "b168b4f5-e6fe-4a96-ae8d-82405617a277",
  "status": "PENDING",
  "expiresIn": "00:15:00"
}
Сохраните transactionId. Поле redirect из ответа в этом сценарии не открывайте: дальше вызываются эндпоинты H2H.

Шаг 2. Получить ключ шифрования#

GET /h2h/card/encryption-key
Ключ выдаётся отдельно для каждого мерчанта и периодически обновляется. Запрашивайте его перед формированием конверта и не кэшируйте дольше, чем указано в заголовке Cache-Control.

Пример ответа, 200#

{
  "kid": "a3f1c2d4e5b6",
  "kty": "RSA",
  "use": "enc",
  "alg": "RSA-OAEP-256",
  "enc": "A256GCM",
  "typ": "platega-h2h-card+jwe",
  "n": "<модуль RSA в Base64URL>",
  "e": "AQAB",
  "activatedAt": "2026-10-01T10:00:00Z",
  "expiresAt": "2026-12-30T10:00:00Z",
  "envelopeTtlSeconds": 120
}

Шаг 3. Зашифровать карту#

Сформируйте compact JWE из пяти сегментов Base64URL, разделённых точкой.
Часть JWEСодержимое
Защищённый заголовокРовно четыре поля: alg, enc, kid, typ — со значениями из ответа предыдущего шага
Полезная нагрузкаv, merchantId, transactionId, iat, exp, jti, card
cardpan, expMonth, expYear, cvv

Полезная нагрузка до шифрования#

{
  "v": 1,
  "merchantId": "8b2f1c3a-0d4e-4f51-9a62-7c8d9e0f1a2b",
  "transactionId": "b168b4f5-e6fe-4a96-ae8d-82405617a277",
  "iat": 1785141000,
  "exp": 1785141090,
  "jti": "b8d872f8-e0db-4c0d-90cf-d89e601b7f92",
  "card": {
    "pan": "4111111111111111",
    "expMonth": "12",
    "expYear": "29",
    "cvv": "123"
  }
}
Ограничения:
v всегда равно 1;
merchantId и transactionId в нагрузке должны совпадать с теми, по которым выполняется запрос;
конверт одноразовый, jti — от 16 до 128 символов Base64URL, новый для каждого запроса;
разница exp и iat не должна превышать envelopeTtlSeconds;
pan — от 13 до 19 цифр, проходит проверку по алгоритму Луна;
expMonth — от 01 до 12, expYear — в формате YY или YYYY, срок действия не истёк;
cvv — 3 или 4 цифры;
имя держателя, IP и данные браузера не передаются.

Шаг 4. Отправить карту#

POST /h2h/{transactionId}/card
{
  "card": {
    "encryptedData": "<compact JWE>"
  }
}
Разберите ответ и выполните ровно одну подходящую ветку.
Что вернул эндпоинтЧто видит плательщикЧто делает мерчант
threeDsStep = methodНичего, шаг проходит в скрытом фреймеСоздать скрытую форму и методом POST отправить formParameters на threeDsData.url. После загрузки фрейма или через 10 секунд вызвать /h2h/{transactionId}/card/3ds/complete, передав continuationParameters
threeDsStep = challengeСтраницу подтверждения банкаОткрыть видимый фрейм или окно и методом POST отправить formParameters на threeDsData.url. /3ds/complete не вызывать, ждать колбэк или проверять статус
threeDsStep = completeНичегоНичего не открывать и /3ds/complete не вызывать. Ждать колбэк или проверять статус
redirectUrlВнешнюю страницу оплатыПеренаправить плательщика на redirectUrl. /3ds/complete не вызывать, ждать колбэк или проверять статус
Отправка формы: создайте форму с методом POST и адресом threeDsData.url, добавьте по скрытому полю на каждую пару из formParameters с тем же именем и значением, затем отправьте её. Имена параметров не фиксируйте в коде — передавайте весь словарь целиком.
На threeDsData.url отправляются только formParameters. continuationParameters остаются на вашем сервере и на этот адрес не отправляются.

Пример ответа с шагом method, 200#

{
  "id": "b168b4f5-e6fe-4a96-ae8d-82405617a277",
  "status": "PENDING",
  "threeDsStep": "method",
  "threeDsData": {
    "url": "https://example.com/3ds/method",
    "method": "POST",
    "formParameters": {
      "threeDSMethodData": "..."
    },
    "continuationParameters": {
      "gatewaySessionId": "...",
      "threeDSMethodData": "...",
      "bankOperationId": "..."
    }
  }
}

Шаг 5. Завершить шаг method#

Вызывается только если на предыдущем шаге пришло threeDsStep = method.
POST /h2h/{transactionId}/card/3ds/complete
Тело запроса — continuationParameters из предыдущего ответа без изменений.
{
  "gatewaySessionId": "...",
  "threeDSMethodData": "...",
  "bankOperationId": "..."
}

Ответ с шагом challenge, 200#

{
  "threeDsStep": "challenge",
  "threeDsData": {
    "url": "https://example.com/3ds/challenge",
    "method": "POST",
    "formParameters": {
      "creq": "...",
      "threeDSSessionData": "..."
    }
  }
}
Покажите плательщику страницу подтверждения и передайте весь словарь formParameters методом POST на threeDsData.url. После этого /3ds/complete повторно не вызывается — ждите колбэк или проверяйте статус транзакции.

Ответ с шагом complete, 200#

{
  "threeDsStep": "complete"
}
Ничего не открывайте и повторно /3ds/complete не вызывайте. Переходите к проверке финального статуса.

Проверка перед запуском#

Все обращения к Platega с X-Secret выполняются только с вашего сервера.
Браузер получает только публичный ключ и шифрует карту до отправки.
Каждый конверт имеет новый jti и создаётся непосредственно перед вызовом /h2h/{transactionId}/card.
Для шага method отправляются только formParameters, затем вызывается /3ds/complete.
Для шага challenge /3ds/complete повторно не вызывается.
Заказ подтверждается только по финальному статусу транзакции.
Modified at 2026-10-29 16:29:13
Previous
SDK
Next
Пробный доступ и изменение суммы подписки
Built with