Aller au contenu

Tableau de bord marchand

Le Tableau de bord marchand Xaalis (/dashboard/*) permet aux marchands et à leurs équipes de suivre les soldes, gérer les paiements et virements, administrer les abonnements et factures, configurer les webhooks, effectuer la rotation des clés d’API et gérer les membres de l’équipe.

L’accès au tableau de bord s’effectue sans mot de passe et uniquement sur invitation :

  1. Aucune inscription publique : Les utilisateurs du tableau de bord sont configurés par un opérateur (via POST /admin/merchants/{id}/dashboard-memberships) ou invités par un Propriétaire (Owner) existant.
  2. Liens magiques (Magic Links) : Connectez-vous en saisissant votre adresse e-mail sur /dashboard/login. Vous recevez immédiatement un lien de connexion sécurisé (POST /dashboard/auth/sign-in/magic-link).
  3. Cookie de session : Cliquer sur le lien reçu dans l’e-mail établit un cookie de session sécurisé HttpOnly (credentials: "include"). Aucun jeton ou secret n’est conservé dans le stockage du navigateur (localStorage ou sessionStorage).

Chaque collaborateur dispose d’un rôle spécifique attribué sur le compte marchand :

Fonctionnalité / Action Propriétaire Développeur Lecteur
Consulter les soldes, transactions et factures ✓ ✓ ✓
Consulter les livraisons de webhooks et payloads ✓ ✓ ✓
Créer des paiements test et simuler les résultats ✓ ✓ —
Créer des abonnements et avancer les cycles (test) ✓ ✓ —
Initier des virements (réels ou test) ✓ — —
Résilier des abonnements (immédiat ou fin de période) ✓ — —
Gérer les clés d’API (créer, renouveler, révoquer) ✓ — —
Modifier l’URL de webhook en direct ✓ — —
Inviter ou retirer des membres de l’équipe ✓ — —

La barre de navigation supérieure intègre un sélecteur visible entre le Mode Test et le Mode En direct :

  • En Mode Test, un bandeau d’avertissement ambre de 32px s’affiche au sommet de l’interface. Toutes les données, transactions et soldes affichés proviennent strictement du grand livre test:.
  • Les actions exécutées en Mode Test (création de paiements test, simulation de validations ou d’échecs, rotation de clés test) ne touchent jamais à de l’argent réel ni aux opérateurs télécoms réels.
  • Vous pouvez basculer d’un mode à l’autre en un clic ; vos permissions restent identiques.

Le tableau de bord met en avant deux montants consolidés :

  • Disponible : Fonds encaissés et disponibles sur votre compte marchand, prêts pour un virement immédiat.
  • Virements en cours : Fonds réservés pour des virements en cours de traitement vers Wave ou Orange Money.
  1. Cliquez sur Virer les fonds depuis le bandeau de solde ou la page Virements.
  2. Choisissez l’opérateur bénéficiaire (Wave ou Orange Money).
  3. Renseignez le numéro de téléphone mobile au format sénégalais normalisé : +2217XXXXXXXX.
  4. Indiquez le montant en nombre entier de FCFA (qui doit être $\le$ Disponible déduction faite des frais).
  5. Vérifiez le récapitulatif des frais avant confirmation.
  6. L’opération transmet un en-tête Idempotency-Key unique et automatique pour garantir l’absence de doublon.
  • Historique en temps réel : Tableau affichant la date, les coordonnées client, la référence de commande, le montant brut et les frais prélevés.
  • Filtres par statut : Filtrez rapidement par succeeded, processing, requires_payment_method, failed ou expired.
  • Tiroir de détail : Cliquez sur n’importe quel paiement pour déployer le panneau latéral complet affichant l’identifiant exact Xaalis, le détail des frais, le montant net et le lien direct vers le checkout hébergé.
  • Simulation : En Mode Test, un paiement en attente ou en cours de traitement peut être simulé en succeeded ou failed directement depuis le tiroir afin de tester vos webhooks.

La section Abonnements permet la gestion de la facturation récurrente :

  • Création d’abonnements : Définition de forfaits avec fréquence (hebdomadaire, mensuelle, trimestrielle, semestrielle, annuelle), nombre de cycles, informations client et délai d’échéance (days_until_due).
  • Factures : Chaque cycle génère une facture dotée d’un lien de paiement client dédié (hosted_invoice_url). Statuts disponibles : brouillon, ouverte, payée, en retard ou irrécouvrable.
  • Résiliation :
    • À la fin de la période (at_period_end: true) : La période en cours reste active et payable ; aucun renouvellement futur n’aura lieu.
    • Immédiate (at_period_end: false) : Annulation immédiate. Si un paiement est déjà en cours de traitement chez l’opérateur, il sera régularisé proprement sans facturation ultérieure.
  • Avancement de cycle en test : Les développeurs peuvent forcer l’avancement immédiat d’un cycle en mode test pour valider les renouvellements et l’émission des factures.

Accessible via /dashboard/developers, cet espace est dédié aux intégrations techniques :

  • Liste des clés actives et planifiées pour révocation selon le mode sélectionné.
  • Seuls les identifiants techniques sûrs (key_...), le préfixe affiché (sk_test_... ou sk_live_...) et la date de création sont consultables.
  • Génération de clé : La clé secrète n’est révélée qu’une seule fois dans une fenêtre modale sécurisée avec bouton de copie. Elle n’est jamais stockée dans le navigateur ni récupérable par l’API ultérieurement.
  • Renouvellement sans coupure (Roll) : Permet de configurer un délai de grâce entre 1 et 72 heures (24h par défaut). L’ancienne clé reste valide jusqu’à l’heure programmée (scheduled_revoke_at), laissant le temps de mettre à jour vos serveurs de production.
  • Révocation immédiate : Pour révoquer sans délai une clé compromise.
  • Configuration : Enregistrement de votre URL de webhook HTTPS pour recevoir les événements (payment.succeeded, payout.failed, etc.).
  • Journal des livraisons : Historique en temps réel des 50 dernières tentatives d’envoi, avec code de retour HTTP, durée et historique des retries.
  • Inspecteur de payload : Cliquez sur une livraison pour visualiser le payload JSON exact signé et expédié à votre serveur.

Les Propriétaires du compte peuvent accéder à /dashboard/settings pour :

  • Consulter les informations légales et la grille tarifaire appliquée au compte marchand.
  • Visualiser tous les membres actuels de l’équipe et leurs rôles.
  • Inviter de nouveaux collaborateurs avec les rôles Développeur ou Lecteur.
  • Révoquer l’accès d’un collaborateur à tout moment.