Сценарий из mcp-everything. Актуально на 2026-10-24.
Ссылка на оплату без корзины на сайте и возврат по завершённой операции — оба через services.robokassa.ru, тело запроса — JWT.
import jwt, requests # pip install pyjwt requests
token = jwt.encode({"OpKey": "<OpKey операции>", "RefundSum": 500.0}, "<Password3>", algorithm="HS256")
# Тело запроса — сама строка JWT
r = requests.post("https://services.robokassa.ru/RefundService/Refund/Create", data=token)
print(r.json()) # {"success": true, "requestId": "..."} — дальше Refund/GetState?id=<requestId>
https://auth.robokassa.ruhttps://services.robokassa.ruТип: Другое
Стандартной схемы авторизации нет: каждый запрос подписывается контрольной суммой, состав которой зависит от метода. В личном кабинете магазина берутся MerchantLogin, Пароль#1, Пароль#2 (и Password3 для API возвратов), там же выбирается алгоритм хэша (в примерах документации — MD5). Пароль#1 используется для подписи запросов на оплату, Пароль#2 — для проверки уведомлений и XML-интерфейсов. Invoice API и Refund API принимают тело в виде JWT, подписанного HMAC.
Подпись запуска оплаты: MerchantLogin:OutSum:InvId:модификаторы:Пароль#1:Shp_*. Пример из документации (PHP, MD5):
$signature = md5("$merchantLogin:$outSum:$invId:$password1");
Создаёт одноразовую или многоразовую ссылку на оплату (хост services.robokassa.ru). Тело — строка JWT; секрет для HMAC — MerchantLogin:Пароль#1 (для тестового счёта с AdditionalParameters.IsTest=1 — тестовый Пароль#1). Ниже — поля payload.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
MerchantLogin |
body | string | да | Логин магазина |
InvoiceType |
body | string | да | OneTime или Reusable |
Culture |
body | string | нет | ru, en |
InvId |
body | integer | нет | Номер счёта |
OutSum |
body | number | нет | Сумма |
ExpirationDate |
body | string | нет | Окончание действия счёта |
Description |
body | string | нет | Описание |
InvoiceItems |
body | array | нет | Позиции для чека |
Aliases |
body | array | нет | Доступные способы оплаты |
Sno |
body | string | нет | Система налогообложения |
AdditionalParameters |
body | object | нет | Доп. параметры формы: IsTest, IncCurrLabel, PaymentMethods, Email, ResultURL2, StepByStep и др. |
Пример ответа:
{"id":"01234567-89ab-4cde-8f01-23456789abcd","invId":1234567890,"url":"https://auth.robokassa.ru/merchant/Invoice/AbCdEfGhIjKlMnOpQrStUv","isSuccess":true}
Полный или частичный возврат по завершённой операции (хост services.robokassa.ru). Тело — JWT, подписанный Password3 (HS256, HS384 или HS512). Требует подключения API возвратов.
Пример ответа (ошибка 401):
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
OpKey |
body | string | да | Идентификатор завершённой платёжной операции |
RefundSum |
body | number | нет | Сумма частичного возврата; для полного не передаётся |
InvoiceItems |
body | array | нет | Позиции чека возврата прихода |
Пример запроса:
{"success":false,"message":"Signature key is not exists or partner have not access to API","requestId":null}
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
id |
query | string | да | requestId, полученный при создании возврата |
OutSum, InvId, Fee, EMail, SignatureValue, PaymentMethod, IncCurrLabel и параметры Shp_*. Подпись проверяют по формуле OutSum:InvId:Пароль#2:Shp_* и только потом меняют статус заказа.OK + номер заказа (например OK12), иначе уведомление считается недоставленным.Shp_ возвращаются в уведомлениях без изменений и включаются в подпись в алфавитном порядке.StepByStep=true) в строку подписи добавляется модификатор true: MerchantLogin:OutSum:InvId:true:Пароль#1.Result.Code или isSuccess.Если этого недостаточно — официальная документация: https://docs.robokassa.ru/ru/quick-start Вся интеграция одним документом: https://mcp-everything.ru/integrations/robokassa.md