Сценарий из mcp-everything. Актуально на 2026-10-24.
Одностадийная оплата: данные карты шифрует скрипт CloudPayments на странице, сервер магазина проводит платёж по криптограмме.
curl -X POST https://api.cloudpayments.ru/payments/cards/charge \
-u '<Public ID>:<API Secret>' \
-H 'Content-Type: application/json' \
-H 'X-Request-ID: order-1042-try-1' \
-d '{
"Amount": 1500.00,
"Currency": "RUB",
"IpAddress": "203.0.113.7",
"CardCryptogramPacket": "<криптограмма из Checkout>",
"InvoiceId": "1042",
"AccountId": "user_42",
"Description": "Оплата заказа № 1042",
"Email": "buyer@example.ru"
}'
https://api.cloudpayments.ruТип: Basic Auth
HTTP Basic Auth: логин — Public ID, пароль — API Secret. Оба значения есть в личном кабинете. Без заголовка авторизации или с неверными данными API возвращает HTTP 401 Unauthorized. API Secret нужно хранить в защищённом месте.
Параметры передаются методом POST в теле запроса: application/x-www-form-urlencoded («ключ=значение») или application/json. Ответ всегда JSON и содержит как минимум Success и Message.
{ "Success": false, "Message": "Invalid Amount value" }
Оплата по криптограмме платёжных данных, сформированной скриптом Checkout. Для двухстадийной схемы тот же набор параметров отправляется на /payments/cards/auth. Если нужна 3-D Secure аутентификация, в ответе будет Success: false и в Model — AcsUrl, PaReq, TransactionId.
Пример ответа (некорректный запрос):
Пример ответа (требуется 3-D Secure):
Пример ответа (транзакция принята, сокращён):
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
Amount |
body | Number | да | Сумма платежа, разделитель точка, не больше 2 знаков после точки; не меньше 0.01 |
Currency |
body | String | нет | Валюта: RUB/USD/EUR/GBP, по умолчанию RUB |
IpAddress |
body | String | да | IP-адрес плательщика |
CardCryptogramPacket |
body | String | да | Криптограмма платёжных данных |
Name |
body | String | нет | Имя держателя карты латиницей |
PaymentUrl |
body | String | нет | Адрес сайта, с которого вызывается скрипт checkout |
InvoiceId |
body | String | нет | Номер счёта или заказа |
Description |
body | String | нет | Описание оплаты в свободной форме |
CultureName |
body | String | нет | Язык уведомлений: ru-RU, en-US |
AccountId |
body | String | нет | Идентификатор пользователя; нужен для создания подписки и получения токена |
Email |
body | String | нет | E-mail для квитанции об оплате |
Payer |
body | Object | нет | Данные плательщика: FirstName, LastName, MiddleName, Birth, Street, Address, City, Country, Phone, Postcode |
JsonData |
body | Json | нет | Произвольные данные транзакции; инструкции для подписки или онлайн-чека оборачиваются в объект cloudpayments |
SaveCard |
body | bool | нет | Вернуть карточный токен после успешной оплаты (работает при включённой настройке «Сохранение токена карты» в ЛК) |
X-Request-ID |
header | String | нет | Уникальный ключ для идемпотентности |
Пример запроса:
{
"Amount":10,
"Currency":"RUB",
"InvoiceId":"1234567",
"IpAddress": "123.123.123.123",
"Description":"Оплата товаров в example.com",
"AccountId":"user_x",
"Name":"CARDHOLDER NAME",
"CardCryptogramPacket":"01492500008719030128SM...",
"Payer":
{
"FirstName":"Тест",
"LastName":"Тестов",
"Phone":"+71234567890"
}
}
Пример ответа:
{"Success":false,"Message":"Amount is required"}
Плательщика отправляют POST-формой на AcsUrl с параметрами MD (= TransactionId), PaReq и TermUrl. После аутентификации он возвращается на TermUrl с MD и PaRes, после чего вызывается этот метод. В ответ приходит информация об успешной или отклонённой транзакции.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
TransactionId |
body | Long | да | Значение параметра MD |
PaRes |
body | String | да | Значение одноимённого параметра |
Success в ответе показывает только успешность запроса, а не статус транзакции. Статус транзакции смотрят в поле Model.Status или в уведомлениях.X-Request-ID с уникальным значением; результат хранится 1 час, новый запрос требует нового значения.Payer.Phone (только цифры, например +71234567890), иначе банки отклоняют операции.X-Content-HMAC и Content-HMAC: HMAC-SHA256 от тела запроса (для GET — от строки параметров) в UTF-8, ключ — API Secret, результат в base64.{"code":0} — принять платёж; коды 10, 11, 12, 13, 20 отклоняют его (неверный InvoiceId, AccountId, сумма, платёж не принят, просрочен).Если этого недостаточно — официальная документация: https://developers.cloudpayments.ru/#api Вся интеграция одним документом: https://mcp-everything.ru/integrations/cloudpayments.md