Service interne · Paiement · API
CabuPay
Un service de paiement interne conçu pour permettre aux applications de l'écosystème de gérer les dépôts, les retraits et la consultation des balances à travers une même API.

CabuPay est un service de paiement développé pour servir les différentes applications de l'écosystème Cabu.
Plutôt que de gérer séparément les paiements dans chaque application, l'idée était de disposer d'un service capable de centraliser les opérations de paiement et de fournir aux applications clientes les interfaces nécessaires pour les utiliser.
CabuPay expose ainsi une API permettant notamment d'effectuer des dépôts, des retraits et de consulter les balances.
Le besoin
Éviter de reconstruire le paiement dans chaque application
Lorsqu'un même écosystème contient plusieurs applications qui doivent accepter ou envoyer de l'argent, reproduire la logique de paiement dans chacune d'elles peut rapidement compliquer le fonctionnement de l'ensemble.
CabuPay a donc été pensé comme une couche commune entre les applications clientes et les services de paiement utilisés derrière celles-ci.
Une application n'a ainsi pas besoin de gérer elle-même l'ensemble de cette logique. Elle peut communiquer avec CabuPay et récupérer les informations dont elle a besoin.
Applications
Les applications clientes utilisent les services exposés par CabuPay.
CabuPay
Le service centralise les opérations de paiement et expose les endpoints nécessaires.
Prestataire de paiement
CabuPay communique avec les services de paiement utilisés pour traiter les opérations.
Deposits
Gérer les dépôts depuis une même API
Une application cliente peut initier un dépôt à travers CabuPay sans avoir à communiquer directement avec toute la logique nécessaire au traitement de l'opération.
Une fois l'opération initiée, CabuPay permet également de récupérer les informations du dépôt et d'en vérifier le statut.
Le système prend aussi en compte les notifications envoyées après le traitement d'une opération grâce aux webhooks.
Payouts
Prendre également en charge les retraits
Le fonctionnement est similaire pour les retraits. Une application cliente peut demander un payout à travers CabuPay et suivre ensuite l'évolution de l'opération.
Les informations liées au payout peuvent être récupérées depuis l'API et les événements associés peuvent être transmis à l'application cliente par webhook.
Le système permet également de vérifier le numéro concerné et de consulter le statut de l'opération.
Balances
Avoir une vision des balances disponibles
Les applications qui utilisent CabuPay peuvent également consulter les balances disponibles.
Les informations peuvent être récupérées globalement, mais aussi filtrées selon la devise ou le pays concerné.
Cela permet aux applications clientes d'obtenir les informations dont elles ont besoin sans avoir à reconstruire leur propre système de consultation.
Communication entre services
Les applications sont informées de l'évolution des opérations
Une opération de paiement ne se termine pas nécessairement au moment où une requête est envoyée.
CabuPay prévoit donc un système de webhooks permettant de transmettre aux applications clientes les événements liés aux dépôts et aux retraits.
L'application cliente peut ainsi réagir lorsqu'une opération évolue, plutôt que de devoir constamment interroger le service pour savoir si quelque chose a changé.
Vérifications
Vérifier les informations avant une opération
CabuPay prévoit également des mécanismes permettant de vérifier certains éléments avant ou pendant le traitement d'une opération, notamment les numéros concernés.
Ces vérifications font partie des services exposés aux applications clientes et permettent de mieux contrôler le parcours d'une transaction.
Intégration
Une couche de paiement au-dessus des prestataires
CabuPay s'intègre à des services de paiement externes afin de pouvoir traiter les opérations demandées par les applications de l'écosystème.
Le projet utilise notamment PawaPay pour la partie liée aux opérations de paiement.
L'intérêt de cette architecture est de fournir aux applications clientes une interface commune, sans les obliger à gérer directement chaque intégration de paiement.
Notre travail
Construire une brique commune pour l'écosystème
CabuPay n'est pas une application destinée directement à l'utilisateur final. C'est une brique technique qui se trouve derrière plusieurs applications.
Notre travail a donc consisté à construire cette couche de communication entre les applications clientes et les services de paiement : gestion des dépôts, retraits, balances, vérifications, statuts et notifications.
L'objectif est de permettre aux autres produits de l'écosystème de s'appuyer sur un même service de paiement plutôt que de réimplémenter ces fonctionnalités à chaque nouveau projet.
CabuPay constitue ainsi une couche commune de paiement pour l'écosystème : les applications peuvent initier des dépôts et des retraits, recevoir les événements associés, consulter les statuts et accéder aux balances depuis une même API.
Le projet
CabuPay au cœur de l'écosystème
Un service interne conçu pour rendre les fonctionnalités de paiement réutilisables par les différentes applications qui composent l'écosystème Cabu.