Intégration de POLi dans les applications mobiles du casino


1) Contexte et contraintes

Fonctionnalité POLi : dépôts uniquement ; conclusion - par d'autres méthodes (banque-transfert/carte/portefeuille).
Juridictions :
  • Australie : les opérations POLi ont cessé (septembre 2023) ; Les casinos/créneaux horaires en ligne pour les résidents AU sont interdits (IGA 2001).
  • Nouvelle-Zélande : POLi est disponible sur les sites autorisés ; l'intégration mobile est pertinente.
  • Conclusion : ci-dessous un schéma technique pour les marchés où l'utilisation est autorisée (NZ et autres juridictions légales).

2) Options de connectivité architecturale

A. Redirect/Hosted Payment Page (HPP) - la norme de base

Le client → la caisse crée une session de paiement → un redirect à la banque (navigateur/banque-application) → un retour par 'return _ ur' → une confirmation via le webhook/polling.
Avantages : exigences PCI minimales, modèle durable, moins de risques.
Inconvénients : Dépend du traitement correct de l'app-switch et du retour.

B. Server-to-Server + redirect (hybride)

Le serveur crée un paiement auprès du fournisseur POLi, le client mobile ne fait qu'initier le redirect ; le statut final vient du webhook.
Avantages : reconfiguration claire, retraits confortables, idempotence sur le backend.
Inconvénients : plus de logique de serveur.

💡Une « API propre » complète sans redirection n'est pas pratique : l'authentification bancaire nécessite de passer à la banque.

3) Flux personnalisé (mobile UX)

1. La caisse → la sélection POLi.
2. Entrez le montant → créez une session de paiement (txn\_ id, state/nonce, durée de vie).
3. App-switch : nous ouvrons une banque (ou un navigateur avec une banque en ligne).
4. Login/2FA à la banque → confirmation de transfert.
5. Renvoie « return _ url »/deplink à l'application → l'écran de résultats.
6. Backend reçoit le webhook et finalise le dépôt ; le client demande le statut par 'txn _ id' (pull-confirmation) en cas de retard du webhook.

4) spécificité iOS

Utiliser ASWebAuthenticationSession ou SFSafariViewController pour l'étape de navigation ; Le WKWebView direct est moins souvent adapté en raison des cookies/radiations.
Universal Links для `return_url`; traitement dans 'scene (_ : continue :)'.
Les temps de session ≥ 10 min, le mode de fond n'est pas obligatoire, mais le maintien de l'état de la caisse est obligatoire.
Si la banque s'ouvre en tant qu'application distincte - fournissez un script back-to-app amical et récupérez le statut lors du retour.

5) Spécificité Android

De préférence des Tabs personnalisés pour un flux Web ; pour les applications de banque - intent filters et les liens App vérifiés pour 'return _ url'.
Le traitement du résultat est par l'intermédiaire de l'activation deeplink ; redemander l'état sous 'onResume ()'.
Ne conservez pas l'état de paiement dans 'Activity' ; Utilisez ViewModel/référentiel qui connaît des changements de configuration.
Folback vers le navigateur système en cas d'indisponibilité de la banque/de l'application.

6) Sécurité de l'intégration

TLS partout, interdiction des protocoles non sécurisés. iOS ATS/Android Network Security Bou - inclus.
Protection CSRF/Replay : jetable 'state '/' nonce', rapprochement sur le retour.
Idempotence : idempotency-key pour créer le paiement ; Le traitement répété des webhooks est sécurisé.
Webhooks : signature, IP sortante fixe (si disponible), retraits avec pause exponentielle, déduplication par event\_ id.
Logs : ne pas logier les logins bancaires/OTR ; masquer le PII ; stocker : 'txn _ id', temps de retour, codes d'état.
Signaux Root/Jailbreak : avertissement léger et bloc d'opérations à haut risque selon les règles de l'entreprise.
Protection des URL de retour : liste blanche 'return _ url' côté fournisseur et application.

7) Traitement des statuts et résistance aux erreurs

Статусы: `processing` → `succeeded`/`failed`/`unknown`.
Si l'utilisateur a fermé la banque/le navigateur - afficher l'écran « Continuer le paiement/Choisir une autre méthode ».
Avec 'unknown' : ne bloquez pas le joueur - gardez la commande en « attente », interrogez à nouveau le backend, attendez le webhook.
Normaliser les codes d'erreur (banque non disponible, limite, authentification, annulation par l'utilisateur, délai d'attente).
Tenez compte des confirmations fractionnaires (la banque a débité, le merchant n'a pas encore été mis à jour) - expliquez-le dans l'IU.

8) La reconquête et la finance

Rapprochement quotidien : Rapports du fournisseur POLi ↔ votre base de données (par 'merchant _ ref', montant, devise, heure).
Une file d'attente séparée pour les « dissynchrones » ; Les mallettes manuelles sont dans le bureau de beck tulling.
Pour les bonus de dépôt - payer après 'succeeded' ; pour 'processing '/' unknown', mettre hold.

9) Les pratiques UX de la caisse (mobile-first)

La barre de progression visible et le minuteur « La session de la banque arrivera à son terme »....
Une copie claire sur les boutons « Aller à la banque », « Confirmé - retourner à l'application ».
Montants/devises clairs, validation instantanée des limites jusqu'au redirect.
Enregistrer le brouillon de dépôt ; rouvrir la session lors de la restauration de l'application.
Disponibilité : Label VoiceOver/TalkBack, contraste suffisant, Dynamic Type/FontScale.

10) Limites, KYC/AML, responsabilité

Les limites sont fixées par la banque et l'opérateur, pas par POLi ; afficher la plage disponible avant le début du paiement.
KYC/AML sont indépendants de la méthode - les contrôles de volume/fréquence sont également déclenchés ; les risques élevés sont la vérification manuelle.
Politique de jeu responsable : les limites de dépôt/pause sont également disponibles sous POLi ; ajoutez des liens rapides vers la gestion des limites dans la caisse.

11) Caractéristiques régionales et Ficheflags

AU : débranchez le POLi au niveau ficheflags/billd ; montrer le disclaymer (service non disponible ; les casinos en ligne sont interdits).
NZ : autoriser le POLi ; Tirer la liste des banques/limites à partir de la configuration (remote bou).
Géofensing, localisation des devises/formats, serveurs allow-lists de merchants dans le pays.

12) Matrice de test et QA

Banques : au moins un cas par grande banque et par type de 2FA (SMS, push, token).
Plates-formes : iOS/Android, versions majeures actuelles, thème sombre/lumineux, différents locals/langues.
Scénarios d'échec : Annulation dans la banque, session terminée, rupture du réseau, fermeture du webview, mauvais deeplink, répétition du webhook.
Charge : heures de pointe, retards de webhooks, retraits massifs.

13) Surveillance et exploitation

Métriques : conversion de caisse, CTR « Aller à la banque », moyenne 'time-to-funds', part 'unknown', taux de rétroaction du webhook, défaillance de la banque pour des raisons.
Alert : timout des webhooks, surtension de 'failed' à un pot, croissance de 'unknown'> seuil.
Ranbook incident : basculement de la priorité des méthodes, informer les utilisateurs, force-polling des statuts, post-mortem.

14) Ce que l'intégration ne fait pas

N'ajoute pas de retrait.
Les limites de la banque ou de l'opérateur ne sont pas dépassées.
Ne remplace pas les procédures KYC/AML et le jeu responsable.

Total

L'intégration de POLi dans les applications mobiles est basée sur un redirect/HPP sécurisé avec une bonne application-switch, un traitement fiable des retours, une confirmation par le biais de webhooks et une stricte idempotence. La clé de la stabilité est des statuts transparents, des scénarios de reprise amicaux et une reconversion complète. En Australie, POLi n'est pas disponible et ne s'applique pas aux créneaux horaires en ligne ; en Nouvelle-Zélande, la méthode reste opérationnelle et donne aux utilisateurs des dépôts rapides avec une configuration technique et juridique correcte.