Деньги
Приём платежей
Robokassa с вебхуком и идемпотентностью
Оплата от кнопки до подтверждения: формирование ссылки с подписью, приём вебхука с проверкой контрольной суммы, повторная обработка без двойного зачисления, страницы успеха и отказа.
Что внутри
- Подпись запроса и проверка контрольной суммы вебхука
- Повторный вебхук не зачисляет второй раз
- История платежей со статусами
- Тестовый режим без реальных списаний
Что добавит в проект
Поверх общей базы — она уже даёт авторизацию, базу и интерфейс.
Таблицы в базе2
Маршруты4
Переменные окружения4
- ROBOKASSA_MERCHANT_LOGIN
- Идентификатор магазина из личного кабинета
- ROBOKASSA_PASSWORD_1
- Пароль для формирования подписи платежа
- ROBOKASSA_PASSWORD_2
- Пароль для проверки вебхука
- ROBOKASSA_TEST_MODEне обязательна
- Тестовый режим без реальных списаний
Разбор архитектуры
Платёж подтверждается вебхуком, а не возвратом пользователя на страницу успеха: браузер можно закрыть, вкладку — потерять, а деньги при этом списываются. Вебхук приходит повторно при любой сетевой ошибке, поэтому обработчик идемпотентен: событие пишется с уникальным ключом операции, повтор отбрасывается на вставке. Это единственный способ не зачислить дважды.
Общая база
Пустое, но рабочее приложение: авторизация, база, UI-кит и деплой уже собраны и связаны между собой. Модули не переписывают его файлы — они добавляют свои и регистрируются в готовых точках расширения, поэтому их можно ставить в любом сочетании.