Robokassa
Оплата тарифа Pro через Robokassa.
Официально: partner.robokassa.ru, документация.
1. Магазин и пароли
- Создай магазин в Robokassa.
- Возьми MerchantLogin, Password1 (платежи), Password2 (ResultURL).
- В
.env:
PAYMENT_PROVIDER=robokassa
ROBOKASSA_MERCHANT_LOGIN=...
ROBOKASSA_PASSWORD1=...
ROBOKASSA_PASSWORD2=...
ROBOKASSA_IS_TEST=1
ROBOKASSA_RESULT_URL=http://localhost:3000/api/webhooks/robokassa
ROBOKASSA_SUCCESS_URL=http://localhost:3000/payments/success
ROBOKASSA_FAIL_URL=http://localhost:3000/payments/fail
NEXT_PUBLIC_APP_URL=http://localhost:3000
На проде: ROBOKASSA_IS_TEST=0 и URL на свой домен.
2. URL в кабинете Robokassa
В настройках магазина укажи:
| Назначение | URL |
|---|---|
| ResultURL | {APP}/api/webhooks/robokassa |
| SuccessURL | {APP}/payments/success |
| FailURL | {APP}/payments/fail |
ResultURL должен быть доступен из интернета по HTTPS (после деплоя). Ответ после успешной обработки — OK{InvId} (так сделано в коде).
3. Чеки 54-ФЗ (фискализация)
Для облачной кассы / Робочеков передавай номенклатуру в Receipt (дока):
RECEIPT_ENABLED=true
RECEIPT_SNO=usn_income
RECEIPT_VAT=none
Receipt входит в подпись: MerchantLogin:OutSum:InvId:Receipt:Password1 (Receipt URL-encoded).
Email покупателя берётся из профиля (Email в запросе). Без email/телефона при RECEIPT_ENABLED=true оплата не стартует.
Без фискализации в ЛК — RECEIPT_ENABLED=false.
4. Проверка сценария
- Живая БД + OAuth-вход (не Dev Login).
- Оплата Pro из кабинета /
/pricing. - После ResultURL webhook план в профиле = Pro.
- Пользователь видит Success/Fail страницу.
Частые ошибки
- Перепутаны Password1 и Password2.
- ResultURL недоступен снаружи → Pro не обновится.
- Забыли
PAYMENT_PROVIDER=robokassa. RECEIPT_ENABLED=trueбез email/телефона в профиле → ошибка до редиректа.- Фискализация включена в коде, но не в ЛК Robokassa → чек не сформируется / способы оплаты пропадут.