Сценарий из mcp-everything. Актуально на 2026-10-24.
Узнать об оплате с сервера и отметить заказ оплаченным.
import hashlib
SECRET = "<секретное слово>"
def handle(form: dict) -> str:
sum_str = f"{float(form['sum']):.2f}"
expected = hashlib.md5(f"{form['id']}{sum_str}{form['clientid']}{form['orderid']}{SECRET}".encode()).hexdigest()
if expected != form["key"]:
return "Error! Hash mismatch"
mark_paid_once(order_id=form["orderid"], payment_id=form["id"]) # идемпотентно по id платежа
return "OK " + hashlib.md5(f"{form['id']}{SECRET}".encode()).hexdigest()
https://<адрес вашего сервера PayKeeper>Тип: Basic Auth
Каждый запрос отправляется с заголовком Authorization: Basic — логин и пароль от личного кабинета PayKeeper в base64. Запросы на чтение выполняются GET, изменения — POST с заголовком Content-Type: application/x-www-form-urlencoded. Каждый POST-запрос дополнительно должен содержать параметр token — токен безопасности, полученный методом /info/settings/token/.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
id |
query | string | да | Идентификатор платежа в PayKeeper |
advanced |
query | string | нет | true — вернуть дополнительные опции платежа |
token обязателен в каждом POST-запросе, хотя в описании методов его часто не упоминают; токен меняется раз в 24 часа.partial передавайте именно true/false — значения 1/0 система не воспринимает./info/refunds/bypaymentid/ или реестр платежей со статусом refunding, обычно через несколько минут.status = queued на capture (Промсвязьбанк) запрос лишь принят банком; итог проверяют через несколько минут.id, sum, clientid, orderid, key и доп. поля. key — md5 от конкатенации id, sum (2 знака после точки), clientid, orderid и секретного слова из личного кабинета.OK <md5(id + секретное слово)>. Без корректного ответа PayKeeper повторяет запрос каждую минуту, по умолчанию до 50 раз, после чего платёж получает статус «Совершён без оповещения».id платежа.?pstype=sbp_default, чтобы показать QR-код СБП, и &returnFormat=json, чтобы получить содержимое QR-кода.Если этого недостаточно — официальная документация: https://docs.paykeeper.ru/dokumentatsiya-json-api/ Вся интеграция одним документом: https://mcp-everything.ru/integrations/paykeeper.md