Payments — Monobank
| Поле | Значення |
|---|---|
| Провайдер | Monobank (Acquiring API) |
| Хто використовує | Abitly API (Studsearch — TODO: уточнити, можливо ні) |
| Token | /abitly/{env}/backend/MONOBANK_TOKEN (SSM SecureString) |
| Dashboard | TODO: (https://api.monobank.ua/ + Mono account) |
Сценарії оплати
Section titled “Сценарії оплати”| Тип | Створення | Webhook → status | Redirect після |
|---|---|---|---|
| Subscription | POST /payments/subscription | SUBSCRIPTION_WEBHOOK_URL | SUBSCRIPTION_REDIRECT_URL |
| Premium (one-off) | POST /payments/premium | PREMIUM_WEBHOOK_URL | PREMIUM_REDIRECT_URL |
| Token purchase | POST /payments/tokens | TOKEN_PURCHASE_WEBHOOK_URL | TOKEN_PURCHASE_REDIRECT_URL |
Точні ендпоїнти/назви скоупів — TODO: (звірити з кодом abitly-api-v2).
Sequence-діаграма → data-flows#оплата.
Типові проблеми
Section titled “Типові проблеми”- Webhook не доходить → перевірити Cloudflare rule (orange-cloud не блокує POST з IP Monobank), валідність підпису, лог у Telegram-logger.
- Платіж завис у pending → перевірити статус інвойсу через Monobank API (
getInvoiceStatus); якщо в Mono — paid, але у нас не активовано — повторити обробку webhook вручну. - Невалідний підпис →
MONOBANK_TOKENміг ротуватись; перевірити збіг з Mono account.
Безпека
Section titled “Безпека”MONOBANK_TOKEN— лише в SSM SecureString, ніколи в git.- Webhook signature verification обов’язкова (Monobank підписує SHA256(body + secret)).
- IP allowlist у Cloudflare —
TODO:чи увімкнено.