Підтримка POLi, PayID, банківського переказу та AUD
Вступ
Австралійські гравці віддають перевагу локальним платіжним методам: миттєві банківські перекази через POLi, PayID/Osko в рамках NPP і традиційний банк-трансфер, все в AUD. Для оператора важливо забезпечити безшовну інтеграцію, миттєву обробку, відповідність регуляціям і надійну архітектуру.
1. Огляд платіжних методів
1. POLi Payments
OAuth-авторизація користувача через інтерфейс банку, без карт і додатково SMS-кодів.
Миттєве зарахування коштів, підходить для депозитів.
2. PayID/Osko (NPP)
Переклад за ідентифікатором (email, телефон), мережевий стандарт NPP забезпечує розрахунок протягом секунд.
Вимагає інтеграції з PSP, що підтримує Australia's New Payments Platform.
3. Банківський переказ (BPAY/прямий transfer)
BPAY: генерація Biller Code і Customer Reference, оплату проводить користувач в інтернет-банку; зарахування до 24 год.
Прямий AUD-transfer: SWIFT/IBAN переклад, підходять для великих сум, час обробки 1-3 робочих дні.
4. Валюта AUD
Всі операції в AUD: корретне відображення, зберігання в базі, округлення до центів ('DECIMAL (12,2)').
2. Архітектура інтеграції
mermaid
flowchart LR
Player -->|initiate deposit| API-Gateway
API-Gateway --> PaymentService
PaymentService -->|init POLi| POLi-API
PaymentService -->|init PayID| PSP-API
PaymentService -->|generate BPAY| BillingService
POLi-API -->|webhook| PaymentService
PSP-API -->|webhook| PaymentService
BillingService -->|polling / webhook| PaymentService
PaymentService --> TransactionService
TransactionService --> AuditDB
API-Gateway: валідація, rate-limiting, маршрутизація до PaymentService.
PaymentService: уніфікована точка для всіх AUD-методів, зберігає'paymentId','method','status','metadata'.
BillingService: модуль для BPAY-рахунків і polling статусів.
TransactionService: ACID-транзакції оновлюють баланс і логують операції.
AuditDB: незмінне сховище логів запитів і відповідей.
3. Реалізація POLi
1. Ініціація:http
POST /api/payments/poli/init
{
"amount": 100. 00,
"currency": "AUD",
"returnUrl": "https: //casino. com/poli/callback"
}
→ `{ paymentId, poliUrl }`
2. Перенаправлення гравця:- Гравець перенаправляється на «poliUrl», авторизується в банку, підтверджує платіж.
http
POST /api/payments/poli/callback
Headers: X-Signature
Body: { paymentId, status, bankTransactionId }
Перевірка HMAC по'X-Signature'.
Оновлення «status»: `pending` → `approved`/`declined`.
При'approved'- запуск'TransactionService. credit(playerId, amount)`.
4. Реалізація PayID/Osko
1. Ініціація:http
POST /api/payments/payid/init
{
"payId": "user@example. com",
"amount": 250. 00,
"currency": "AUD",
«Дескріпшен»: "Casino deposit"
}
→ `{ paymentId, transactionRef }`
2. Webhook-повідомлення:- PSP шлёт `POST /api/payments/payid/callback { paymentId, status }`.
Аналогічна перевірка підпису.
Статуси: `pending`, `settled`, `failed`.
5. Реалізація BPAY та банківського переказу
1. Генерація рахунку BPAY:http
POST /api/payments/bpay/generate
{ "amount": 500. 00 }
→ `{ billerCode, customerRef, expiryDate }`
2. Polling статусів:- `GET /api/payments/bpay/status? billerCode = & customerRef ='кожні 15 хвилин.
- При `PAID` — update `approved`, credit funds.
- Відображення реквізитів рахунку (SWIFT, BSB, Account) в UI.
- Операції звіряються вручну або автоматично по incoming bank statements через SFTP.
6. Локалізація та UX
Форматування:js
new Intl. NumberFormat('en-AU', { style: 'currency', currency: 'AUD' }). format(1000)
// "A$1,000. 00"
UI:
- Вибір методу в депозиті: іконки POLi, PayID, BPAY, Bank Transfer.
- Опис термінів і комісій під кожним методом.
- Верифікація перед першим введенням: KYC/AML.
7. Безпека і відмовостійкість
TLS 1. 2 + для всіх API і Webhook.
Circuit Breaker (Resilience4j) для PSP-викликів, відключення методу при error-rate> 5%.
Retry-logic з експоненціальним backoff при тимчасових збоях.
Audit Trail: всі webhook-події і транзакції зберігаються 7 років мінімум за регуляціями.
8. Тестування
Sandbox-режими:- POLi: `poli. sandbox. domain'з фейковими токенами'test _ user'.
- PSP: тестові креди у провайдерів PayID.
- E2E-тести (Cypress): сценарії: ініціювати → емулювати callback → перевірити баланс.
- Load Testing (k6): імітація 1000 concurrent депозитів методом POLi і PayID.
Висновок
Інтеграція POLi, PayID/Osko і традиційних банківських переказів в AUD вимагає єдиного PaymentService, надійної обробки webhook, локалізації форматів і відмовостійкої архітектури з circuit breaker і retry-механізмами. Такий підхід забезпечує швидкі депозити, високий CR і відповідність австралійським вимогам.