Інтеграція POLi в мобільні додатки казино


1) Контекст і обмеження

Функціонал POLi: тільки депозити; висновок - через інші методи (банк-трансфер/картка/гаманець).
Юрисдикції:
  • Австралія: операції POLi припинені (вересень 2023); онлайн-казино/слоти для резидентів AU заборонені (IGA 2001).
  • Нова Зеландія: POLi доступний на ліцензованих майданчиках; мобільна інтеграція релевантна.
  • Висновок: нижче - технічна схема для ринків, де використання дозволено (NZ та інші легальні юрисдикції).

2) Архітектурні варіанти підключення

A. Redirect/Hosted Payment Page (HPP) - базовий стандарт

Клієнт → каси створює сесію оплати → редирект в банк (браузер/банк-додаток) → повернення по'return _ url'→ підтвердження через вебхук/полінг.
Плюси: мінімальні PCI-вимоги, стійка модель, менше ризиків.
Мінуси: залежить від коректної обробки app-switch і поворотного deeplink.

B. server-to-server + redirect (гібрид)

Сервер створює платіж у провайдера POLi, мобільний клієнт лише ініціює редирект; підсумковий статус приходить вебхуком.
Плюси: чітка реконциліяція, зручні ретраї, ідемпотентність на бекенді.
Мінуси: більше серверної логіки.

💡Повний «чистий API» без редиректу непрактичний: банківська аутентифікація вимагає переходу в банк.

3) Користувацький потік (mobile UX)

1. Каса → вибір POLi.
2. Введення суми → створення сесії оплати (txn\_ id, state/nonce, термін життя).
3. App-switch: відкриваємо банк (або браузер з інтернет-банком).
4. Логін/2FA в банку → підтвердження переказу.
5. Повернення по'return _ url '/deeplink в додаток → екран результату.
6. Бекенд отримує вебхук і фіналізує депозит; клієнт запитує статус по'txn _ id'( pull-підтвердження) на випадок затримок вебхука.

4) iOS-специфіка

Використовуйте ASWebAuthenticationSession або SFSafariViewController для браузерного кроку; прямий WKWebView рідше підходить через куки/редиректи.
Universal Links для `return_url`; обробка в'scene (_: continue: )`.
Таймаути сесії ≥ 10 хв, фоновий режим не обов'язковий, але збереження стану каси - обов'язково.
Якщо банк відкривається як окремий додаток - забезпечте доброзичливий back-to-app сценарій і повторне отримання статусу при поверненні.

5) Android-специфіка

Бажано Custom Tabs для веб-потоку; для банк-додатків - intent filters і перевірені App Links для'return _ url'.
Обробка результату - через deeplink-активіті; повторний запит статусу при'onResume ()'.
Не зберігайте стан оплати в'Activity'; використовуйте ViewModel/репозиторій, що переживає конфігураційні зміни.
Фолбек на системний браузер при недоступності банку/додатку.

6) Безпека інтеграції

TLS скрізь, заборона незахищених протоколів. iOS ATS/Android Network Security Config - включені.
CSRF/Replay-захист: одноразовий «state »/« nonce», звірка на поверненні.
Ідемпотентність: idempotency-key на створення оплати; повторна обробка вебхуків - безпечна.
Вебхуки: підпис, фіксовані вихідні IP (якщо доступно), ретраї з експоненціальною паузою, дедуплікація за event\_ id.
Логи: не логуйте банківські логіни/ОТР; маскуйте PII; зберігайте: 'txn _ id', час редиректу/повернення, коди статусів.
Root/Jailbreak-сигнали: м'яке попередження і блок високоризикових операцій за бізнес-правилами.
Захист поворотних URL: білий список'return _ url'на стороні провайдера і програми.

7) Обробка статусів і помилковість

Статуси: `processing` → `succeeded`/`failed`/`unknown`.
Якщо користувач закрив банк/браузер - показуйте екран «Продовжити оплату/Вибрати інший метод».
При'unknown': не блокуйте гравця - тримайте замовлення в «очікуванні», повторно опитайте бекенд, дочекайтеся вебхука.
Стандартизуйте коди помилок (банк недоступний, ліміт, автентифікація, скасування користувачем, таймаут).
Враховуйте дробові підтвердження (банк списав, мерчант ще не оновився) - пояснюйте це в UI.

8) Реконциліяція та фінанси

Щоденна звірка: звіти провайдера POLi ↔ ваша БД (по'merchant _ ref', сумі, валюті, часу).
Окрема черга на «розсинхрони»; ручні кейси - в бек-офіс тулінгу.
Для бонусів «на депозит» - нараховувати після'succeeded'; для'processing '/' unknown'- ставити hold.

9) UX-практики каси (mobile-first)

Видима смуга прогресу і таймер «Сеанс банку закінчиться через»....
Чітка копія на кнопках: «Перейти в банк», «Підтвердив - повернутися в додаток».
Ясні суми/валюта, моментальна валідація лімітів до редиректу.
Збереження чернетки депозиту; повторне відкриття сесії при відновленні програми.
Доступність: VoiceOver/TalkBack-лейбли, достатній контраст, Dynamic Type/FontScale.

10) Ліміти, KYC/AML, відповідальність

Ліміти задають банк і оператор, а не POLi; показуйте доступний діапазон до початку оплати.
KYC/AML не залежать від методу - перевірки на обсяг/частоту спрацьовують однаково; високі ризики - ручна верифікація.
Політика відповідальної гри: ліміти депозитів/паузи доступні і при POLi; додайте швидкі посилання на управління лімітами в касі.

11) Регіональні особливості та фічефлаги

AU: вимкніть POLi на рівні фічефлагів/білда; показуйте дисклеймер (сервіс недоступний; онлайн-казино заборонені).
NZ: дозволити POLi; список банків/лімітів підтягувати з конфігурації (remote config).
Геофенсинг, локалізація валют/форматів, серверні allow-lists мерчантів по країні.

12) Тест-матриця і QA

Банки: мінімум по одному кейсу на кожен великий банк і за типами 2FA (SMS, пуш, токен).
Платформи: iOS/Android, актуальні мажорні версії, темна/світла тема, різні локалі/мови.
Сценарії збоїв: скасування в банку, сесія, що закінчилася, розрив мережі, закриття webview, невірний deeplink, повтор вебхука.
Навантажувальні: пікові годинники, затримки вебхуків, масові ретраї.

13) Моніторинг та операційка

Метрики: конверсія каси, CTR «Перейти в банк», середній'time-to-funds', частка'unknown', частота ретраїв вебхука, відмова банку з причин.
Алерти: таймаут вебхуків, сплеск'failed'по одному банку, зростання'unknown'> порогу.
Ранбук інциденту: перемикання пріоритету методів, повідомити користувачам, форс-полінг статусів, пост-мортем.

14) Що інтеграція не робить

Не додає виведення коштів.
Не обходить ліміти банку або оператора.
Не замінює процедури KYC/AML і відповідальної гри.

Підсумок

Інтеграція POLi в мобільні додатки будується навколо безпечного redirect/HPP з коректним app-switch, надійною обробкою поворотного deeplink, підтвердженням через вебхуки і суворою ідемпотентністю. Ключ до стабільності - прозорі статуси, доброзичливі сценарії відновлення і повноцінна реконциліяція. В Австралії POLi недоступний і непридатний до онлайн-слотів; у Новій Зеландії метод залишається робочим і дає користувачам швидкі депозити при коректному технічному і правовому налаштуванні.