Support POLi, PayID, virement bancaire et AUD

Introduction

Les joueurs australiens préfèrent les méthodes de paiement locales : les virements bancaires instantanés via POLi, PayID/Osko dans le cadre du NPP et les transferts bancaires traditionnels, le tout à l'AUD. Il est important pour l'opérateur de garantir une intégration transparente, un traitement instantané, une conformité aux réglementations et une architecture fiable.

1. Présentation des méthodes de paiement

1. POLi Payments

Autorisation OAuth de l'utilisateur via l'interface de la banque, sans cartes et en plus des codes SMS.
Crédité instantanée de fonds, convient pour les dépôts.

2. PayID/Osko (NPP)

Traduction par ID (email, téléphone), la norme réseau NPP assure le calcul en quelques secondes.
Nécessite une intégration avec le PSP qui prend en charge la plate-forme New Payments Australia.

3. Virement bancaire (BPAY/transfert direct)

BPAY : génération de Code Biller et Référence Client, le paiement est effectué par l'utilisateur dans une banque en ligne ; inscription jusqu'à 24 heures
Transfert direct AUD : Transfert SWIFT/IBAN, approprié pour les sommes importantes, temps de traitement 1-3 jours ouvrables.

4. Monnaie AUD

Toutes les opérations dans l'AUD : affichage correct, stockage dans la base, arrondi aux cents (« DECIMAL (12,2) »).

2. Architecture d'intégration

```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 : validation, rate-limiting, routage vers PaymentService.
PaymentService : point unifié pour toutes les méthodes AUD, stocke 'paymentId', 'method', 'status', 'metadata'.
BillingService : module pour les comptes BPAY et les états de polling.
TransactionService : Les transactions ACID mettent à jour le solde et enregistrent les opérations.
AuditDB : stockage immuable des logs de requête et de réponse.

3. Implémentation POLi

1. Initiation :
  • ```http
  • POST /api/payments/poli/init
  • {
  • "amount": 100. 00,
  • "currency": "AUD",
  • "returnUrl": "https: //casino. com/poli/callback"
  • }
  • ```

→ `{ paymentId, poliUrl }`

2. Redirection du joueur :
  • Le joueur est redirigé vers 'poliUrl', autorisé dans la banque, confirme le paiement.

3. Traitement Webhook :
  • ```http
  • POST /api/payments/poli/callback
  • Headers: X-Signature
  • Body: { paymentId, status, bankTransactionId }
  • ```

Vérification HMAC par « X-Signature ».
Mise à jour 'status' : 'pending' → 'approved '/' declined'.
Dans 'approved', exécutez 'TransactionService. credit(playerId, amount)`.

4. Mise en œuvre de PayID/Osko

1. Initiation :
  • ```http
  • POST /api/payments/payid/init
  • {
  • "payId": "user@example. com",
  • "amount": 250. 00,
  • "currency": "AUD",
  • « Descriptif » : « Casino deposit »
  • }
  • ```

→ `{ paymentId, transactionRef }`

2. Notification Webhook :
  • PSP шлёт `POST /api/payments/payid/callback { paymentId, status }`.

Vérification de signature similaire.
Statuts : 'pending', 'settled', 'failed'.

5. Mise en œuvre de BPAY et virement bancaire

1. Génération du compte BPAY :
  • ```http
  • POST /api/payments/bpay/generate
  • { "amount": 500. 00 }
  • ```

→ `{ billerCode, customerRef, expiryDate }`

2. Polling status :
  • `GET /api/payments/bpay/status? billerCode = & customerRef = 'toutes les 15 minutes.
  • При `PAID` — update `approved`, credit funds.

3. Virement bancaire direct :
  • Affiche les détails du compte (SWIFT, BSB, Compte) dans l'IU.
  • Les transactions sont vérifiées manuellement ou automatiquement par le biais des statuts de la banque incoming via SFTP.

6. Localisation et UX

Mise en forme :
  • ```js
  • new Intl. NumberFormat('en-AU', { style: 'currency', currency: 'AUD' }). format(1000)
  • // "A$1,000. 00"
  • ```
  • UI:
    • Choix de la méthode dans le dépôt : icônes POLi, PayID, BPAY, Virement bancaire.
    • Description des délais et des commissions sous chaque méthode.
    • Vérification avant la première introduction : KYC/AML.

    7. Sécurité et tolérance aux pannes

    TLS 1. 2 + pour toutes les API et Webhook.
    Circuit Breaker (Resilience4j) pour les appels PSP, désactivation de la méthode à un taux d'erreur> 5 %.
    Retry-logic avec un backoff exponentiel en cas d'échec temporaire.
    Audit Trail : tous les événements webhook et transactions sont stockés pendant au moins 7 ans par réglementation.

    8. Tests

    Modes sandbox :
    • POLi: `poli. sandbox. domain 'avec les faux tokens' test _ user '.
    • PSP : crédits de test auprès des fournisseurs PayID.
    • E2E-tests (Cypress) : scripts : initier → émuler callback → vérifier l'équilibre.
    • Load Testing (k6) : imitation de 1000 dépôts concurrentiels par la méthode POLi et PayID.

    Conclusion

    L'intégration de POLi, de PayID/Osko et de virements bancaires traditionnels dans AUD nécessite un seul PaymentService, un traitement fiable du webhook, une localisation des formats et une architecture tolérante aux pannes avec un circuit breaker et des mécanismes de retri. Cette approche garantit des dépôts rapides, des CR élevés et la conformité aux exigences australiennes.