FreeKassa
FreeKassa — агрегатор с классической SCI-схемой: база не дёргает API вообще, а собирает подписанную ссылку на платёжную страницу pay.fk.money, где юзер сам выбирает способ — карта, СБП, электронные кошельки. Валюта — только RUB. Результат оплаты прилетает вебхуком (ResultURL).
У FreeKassa есть и современный API (api.fk.life) — в базе он подключается отдельным провайдером KassaAI. Это два независимых шлюза, включать можно любой.
Что понадобится
Магазин в мерчант-кабинете FreeKassa. Из его настроек нужны три значения:
- ID магазина —
shop_id; - Секретное слово 1 — подписывает ссылку на оплату;
- Секретное слово 2 — подписывает уведомления о платеже.
Настройка в кабинете
Кабинет → Платежи → карточка FreeKassa:
| Поле | Что это | Обязательное |
|---|---|---|
shop_id | ID магазина FreeKassa | да |
secret1 | Секретное слово 1 — подпись платёжной ссылки | да |
secret2 | Секретное слово 2 — подпись вебхука | да |
Секреты шифруются (Fernet) при сохранении и обратно не показываются. После заполнения включи провайдера тумблером — пока он выключен, вебхук отвечает 404. Кнопка «Тест» для FreeKassa API-пробу не выполняет: правильность ключей проверяется первым платежом. Общие поля карточки (имя в списке оплаты, комиссия для статистики, включённые формы) — в настройках платежей.
Вебхук
В кабинете FreeKassa укажи ResultURL:
https://ваш-домен/api/v1/payments/freekassaУведомление приходит POST form-encoded (MERCHANT_ID, AMOUNT, MERCHANT_ORDER_ID, SIGN). Подлинность проверяется MD5-подписью:
SIGN = md5(shop_id:amount:secret2:order_id)Неверная подпись → 403, уведомление отбрасывается. IP-фильтра нет — достаточно подписи. На валидное уведомление база сама отвечает обязательным для FreeKassa plain-text YES — настраивать это не нужно.
Особенности
- FreeKassa шлёт только успешные оплаты — любое уведомление с валидной подписью засчитывается как платёж, промежуточных статусов нет.
- Возвратов по API и рекуррентов нет: возврат из кабинета фиксируется как «ручной», деньги возвращаешь на стороне FreeKassa — см. Возвраты.
- Целые суммы FreeKassa подписывает без копеек («199», а не «199.00») — база сама приводит сумму к этому формату и в ссылке на оплату, и при проверке подписи вебхука, иначе подписи не сходились бы.
- Опроса статуса по API у этого шлюза нет: если уведомление не дошло (неверный ResultURL, файрвол), платёж останется в ожидании.
Платёж не пришёл?
Реконсилятор проверяет зависшие платежи каждые 5 минут, но FreeKassa не даёт опроса статуса по API — оплату закрывает только вебхук. Проверь ResultURL и доставку уведомлений — разбор в разделе Вебхуки.
