Підтримка 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 depositAPI-Gateway
API-Gateway --> PaymentService
PaymentService -->init POLiPOLi-API
PaymentService -->init PayIDPSP-API
PaymentService -->generate BPAYBillingService
POLi-API -->webhookPaymentService
PSP-API -->webhookPaymentService
BillingService -->polling / webhookPaymentService
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», авторизується в банку, підтверджує платіж.

3. Webhook-обробка:
  • ```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.

3. Прямий банківський переказ:
  • Відображення реквізитів рахунку (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 і відповідність австралійським вимогам.