Сценарий из mcp-everything. Актуально на 2026-10-24.
Pay-, Fail- и Check-уведомления сообщают о результате оплаты; сверка за период ловит то, что могло потеряться.
import base64, hashlib, hmac
def is_valid(body: bytes, header_hmac: str, api_secret: str) -> bool:
digest = hmac.new(api_secret.encode(), body, hashlib.sha256).digest()
return hmac.compare_digest(base64.b64encode(digest).decode(), header_hmac)
# В обработчике: if not is_valid(request.body, request.headers["Content-HMAC"], API_SECRET): вернуть 403
# Затем обновить заказ по InvoiceId и ответить {"code": 0}
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" }
Детализация транзакции по номеру.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
TransactionId |
body | Long | да | Номер транзакции |
Пример запроса:
{"TransactionId":897749645}
Результат сортируется по CreatedDate от старых к новым, 100 записей на страницу.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
CreatedDateGte |
body | Date | да | Начальная дата создания операций |
CreatedDateLte |
body | Date | да | Конечная дата создания операций |
PageNumber |
body | Number | да | Номер страницы, от 1 |
TimeZone |
body | String | нет | Код временной зоны, по умолчанию UTC |
Statuses |
body | String Array | нет | Статусы: Authorized, Completed, Cancelled, Declined; по умолчанию все |
Пример запроса:
{
"PageNumber": 1,
"CreatedDateGte":"2021-03-09T00:00:00+03:00",
"CreatedDateLte":"2021-03-10T00:00:00+03:00",
"TimeZone": "MSK",
"Statuses": ["Authorized", "Completed", "Cancelled", "Declined"]
}
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