Где взять ключи: ЛК Модульбанка → «Ещё → Интернет-эквайринг» → «Интеграции» →
«Модули для сайта». Скопируйте «Идентификатор магазина», «Тестовый секретный ключ»
и «Рабочий секретный ключ».
Страница оплаты: по умолчанию используется зеркало https://pay.mdl.bz/pay —
оно открывается в любом браузере без установки сертификатов Минцифры. Серверный API
(status/refund/СБП) работает с pay.modulbank.ru.
Поле «адрес страницы оплаты» можно оставить пустым.
Что куда вписывать: «Идентификатор магазина» → поле «Модульбанк: идентификатор магазина»;
«Тестовый/Рабочий секретный ключ» → поле «Модульбанк: секретный ключ» (в тестовом режиме —
тестовый ключ, в рабочем — рабочий). «Тестовый режим» = параметр testing=1;
в тестовом режиме чеки не формируются.
Параметры обмена: merchant — идентификатор магазина;
amount — сумма; order_id — наш номер заказа;
description — назначение; success_url — возврат после оплаты;
testing — тестовый режим; callback_url — адрес уведомлений банка;
client_name, client_phone, client_email — данные клиента;
receipt_contact — контакт для чека; receipt_items — позиции чека;
unix_timestamp, salt — защита от повторов; signature — подпись.
Подпись: каждое поле как field=base64(value) (ключи в нижнем регистре,
пустые пропускаются, сам signature не участвует), сортировка по алфавиту,
склейка через &, затем SHA1(secret + SHA1(secret + values)).
Callback: банк POST-ит JSON на наш адрес уведомлений, подпись считается по всем полям
ответа. Мы отвечаем 200 OK — иначе банк повторяет доставку до 14 раз.
Чек (receipt_items): name, price,
quantity, payment_method (напр. full_prepayment),
payment_object (service/commodity — задаётся по позиции: билеты/группы = услуга, товары = товар),
sno (osn/usn_income/…),
vat (none/vat0/vat5/vat10/vat20/…),
discount_sum (только при работе через Модулькассу). Чек формируется только если
в ЛК включена «удалённая регистрация чеков через онлайн-кассу».
Статусы и возврат: оплата считается полученной при state/status ∈
COMPLETE / success / paid / accepted / OK. Возврат — отдельным запросом к endpoint refund.
Подробнее — памятка: docs/ПАМЯТКА-заказчику-оплата.md.