Skip to content
← Projets
silvere@ouaga:~/projects/betpay

BetPay

[ IN DEV ]

Mon projet perso : un pipeline automatisé de dépôts/retraits entre mobile money et plateformes de paris. Le SaaS sera bientôt déployé, adossé à une ferme de téléphones et un portail de gestion complet.

2
apps, un protocole
4
rôles du portail
1%
commission de parrainage
100%
transactions auditées
  • Flutter
  • Kotlin
  • Node.js
  • Socket.io
  • PostgreSQL
  • OCR
  • Ferme de téléphones
Avant : l’offre manuelle d’agent de Maiga Services, publiée sur les réseaux sociaux
Avant — le service d’agent manuel
Après : la connexion au portail agent du SaaS BetPay
Après — le portail agent BetPay

Le problème

Alimenter un compte 1xBet depuis le mobile money au Burkina, c’est une conversation manuelle avec un agent. L’image « avant » ci-dessus est réelle : un service promu sur Facebook, opéré personne par personne sur WhatsApp, chaque transaction tapée à la main.

BetPay automatise la boucle. Le client demande un dépôt ou un retrait dans une app Flutter très simple, et le côté opérateur exécute et vérifie, avec chaque étape auditée.

L’architecture

La question de conception qui a tout structuré : qu’est-ce que chaque côté a le droit de faire ?

L’app client (Flutter) n’a ni authentification, ni logique métier, ni secrets. Elle valide les saisies uniquement pour l’expérience utilisateur et parle un protocole JSON documenté sur WebSocket, avec des UUID générés côté client et une machine à états (PENDING → PROCESSING → SUCCESS/FAILED/TIMEOUT). Si l’opérateur est hors ligne après cinq tentatives en backoff, l’app compose un message WhatsApp pré-rempli : la panne devient une conversation tracée au lieu d’un client perdu.

L’app admin (Kotlin) porte tout le sensible. Elle intègre l’API agent MobCash, vérifie automatiquement les SMS de confirmation des opérateurs, et passe les captures de solde à l’OCR avec un score de confiance avant d’approuver quoi que ce soit. La surface non fiable ne contient rien qui vaille une attaque ; la surface de confiance vit sur du matériel que l’opérateur contrôle.

Un portail web multi-rôles (agent, affilié, admin, superadmin) repose sur le même backend WebSocket. Les agents ont un tableau de bord et des codes de parrainage avec suivi automatique d’une commission de 1 %, ce qui transforme une opération WhatsApp à une personne en service que d’autres agents peuvent revendre.

La suite

La version SaaS sera bientôt déployée. L’exécution passe sur une ferme de téléphones : les transactions tournent sur un parc d’appareils gérés au lieu du téléphone d’un seul opérateur, et le portail devient une vraie gestion de flotte (santé des appareils, débit, comptabilité par agent). Le protocole a été écrit avant le code, et c’est la raison principale pour laquelle le même backend a survécu à trois générations de front.