Поддержка 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
API-Gateway: валидация, rate-limiting, маршрутизация к PaymentService.
PaymentService: унифицированная точка для всех AUD-методов, хранит `paymentId`, `method`, `status`, `metadata`.
BillingService: модуль для BPAY-счётов и polling статусов.
TransactionService: ACID-транзакции обновляют баланс и логируют операции.
AuditDB: неизменяемое хранилище логов запросов и ответов.
3. Реализация POLi
1. Инициация:
→ `{ paymentId, poliUrl }`
2. Перенаправление игрока:
3. Webhook-обработка:
Проверка HMAC по `X-Signature`.
Обновление `status`: `pending` → `approved`/`declined`.
При `approved` — запуск `TransactionService.credit(playerId, amount)`.
4. Реализация PayID/Osko
1. Инициация:
→ `{ paymentId, transactionRef }`
2. Webhook-уведомление:
Аналогичная проверка подписи.
Статусы: `pending`, `settled`, `failed`.
5. Реализация BPAY и банковского перевода
1. Генерация счёта BPAY:
→ `{ billerCode, customerRef, expiryDate }`
2. Polling статусов:
3. Прямой банковский перевод:
6. Локализация и UX
Форматирование:
Австралийские игроки предпочитают локальные платёжные методы: мгновенные банковские переводы через 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`, авторизуется в банке, подтверждает платёж.
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.
- POLi: `poli.sandbox.domain` с фейковыми токенами `test_user`.
- PSP: тестовые креды у провайдеров PayID.
- E2E-тесты (Cypress): сценарии: инициировать → эмулировать callback → проверить баланс.
- Load Testing (k6): имитация 1000 concurrent депозитов методом POLi и PayID.
7. Безопасность и отказоустойчивость
TLS 1.2+ для всех API и Webhook.
Circuit Breaker (Resilience4j) для PSP-вызывов, отключение метода при error-rate >5 %.
Retry-logic с экспоненциальным backoff при временных сбоях.
Audit Trail: все webhook-события и транзакции хранятся 7 лет минимум по регуляциям.
8. Тестирование
Sandbox-режимы:
Заключение
Интеграция POLi, PayID/Osko и традиционных банковских переводов в AUD требует единого PaymentService, надёжной обработки webhook, локализации форматов и отказоустойчивой архитектуры с circuit breaker и retry-механизмами. Такой подход обеспечивает быстрые депозиты, высокий CR и соответствие австралийским требованиям.