Documentation des flux de paiement

Ce document décrit les différents flux de paiement au sein de l'application Wego.

1. Flux de paiement en ligne (via QR Code)

Ce flux est destiné aux utilisateurs non authentifiés qui paient pour une session de recharge unique via une carte de crédit.

Étapes du flux

  1. Initiation : L'utilisateur scanne un QR code sur une borne de recharge, ce qui le redirige vers une page web dédiée à cette borne.

  2. Création d'une intention de paiement :

    • Le frontend appelle l'API pour créer une intention de paiement : GET /api/payments/evse/:slug/with-capture.
    • Le backend crée une intention de paiement (Payment Intent) auprès de Stripe avec la méthode de capture manuelle (capture_method: 'manual'). Cela autorise un montant pré-défini sans le débiter immédiatement.
    • Un enregistrement est créé dans la table payments avec le statut PAYMENT_CREATED et un tagId temporaire est généré.
    • L'API retourne un client_secret au frontend.
  3. Confirmation du paiement par l'utilisateur :

    • Le frontend utilise le client_secret pour afficher le formulaire de paiement Stripe.
    • L'utilisateur saisit ses informations de carte bancaire et valide le paiement.
  4. Démarrage de la transaction :

    • Une fois le paiement confirmé côté client, le frontend appelle l'API : POST /api/payments/remote-start-after-payment-confirmed.
    • Le backend vérifie la validité du paiement, met à jour le statut de l'enregistrement payments à PAYMENT_CONFIRMED.
    • Le backend envoie une commande RemoteStartTransaction à la borne via le protocole OCPP, en utilisant le tagId temporaire.
  5. Session de recharge : La session de recharge est active. Un enregistrement est créé dans la table transactions et lié à l'enregistrement payments.

  6. Arrêt de la transaction :

    • L'utilisateur arrête la recharge depuis la page web, ce qui déclenche un appel à POST /api/payments/transaction/:idOrSlug/stop.
    • La borne envoie une notification StopTransaction au backend.
  7. Capture du paiement :

    • La notification StopTransaction déclenche un événement transaction-payment-capture.
    • Un service écoute cet événement et appelle la méthode paymentsService.capturePaymentWithCapture().
    • Cette méthode finalise la transaction Stripe en capturant le montant final de la recharge (le coût réel de l'énergie consommée).
    • Le statut de l'enregistrement payments est mis à jour à PAYMENT_CAPTURED.

2. Flux de paiement par badge RFID (Utilisateur Wego)

Ce flux est destiné aux utilisateurs enregistrés sur la plateforme Wego et qui utilisent un badge RFID fourni par Wego.

Étapes du flux

  1. Authentification : L'utilisateur présente son badge RFID Wego à la borne.
  2. Autorisation : La borne envoie une requête Authorize au backend avec le tagId du badge. Le backend vérifie dans sa base de données locale que le badge est valide et actif.
  3. Démarrage de la transaction :
    • La borne envoie une notification StartTransaction au backend.
    • Le backend crée un enregistrement dans la table transactions lié au tagId de l'utilisateur.
  4. Session de recharge : La session est active.
  5. Arrêt de la transaction : L'utilisateur arrête la recharge. La borne envoie une notification StopTransaction au backend.
  6. Facturation :
    • Le coût de la transaction n'est pas payé immédiatement.
    • La transaction est associée à l'utilisateur et à son groupe de facturation (invoicedGroup).
    • Le processus de facturation se fait via un processus périodique (batch) qui agrège les transactions par groupe de facturation.
    • Le module emat gère un cas spécifique de facturation pour le groupe Eiffage.

3. Flux de paiement via EMSP

Ce flux s'applique lorsqu'un utilisateur d'un partenaire de roaming (un EMSP) utilise une borne du réseau Wego. La communication se fait via le protocole OCPI.

Étapes du flux

  1. Autorisation (OCPI) :
    • L'utilisateur présente le badge de son EMSP à la borne Wego.
    • La borne envoie une requête Authorize au backend Wego.
    • Le backend Wego, ne reconnaissant pas le badge localement, identifie qu'il s'agit d'un badge de roaming et interroge l'EMSP partenaire via l'endpoint OCPI Tokens (POST /ocpi/2.1.1/tokens/{token_uid}/authorize).
    • L'EMSP partenaire valide le badge et retourne une réponse positive.
    • Le backend Wego crée un enregistrement local Authorization qui lie le tagId à l' idEmsp du partenaire.
  2. Démarrage de la transaction :
    • La borne envoie une notification StartTransaction.
    • Le backend Wego crée une transaction et l'associe à l'idEmsp grâce à l'autorisation préalablement enregistrée.
  3. Session de recharge : La session est active.
  4. Arrêt de la transaction : L'utilisateur arrête la recharge. La borne envoie une notification StopTransaction au backend Wego.
  5. Génération et Envoi du CDR (Charge Detail Record) :
    • À la fin de la transaction, le backend Wego génère un CDR. Ce document est un "ticket de caisse" détaillé de la session de recharge (énergie consommée, durée, coût, etc.).
    • Le backend Wego envoie ce CDR à l'EMSP partenaire via son endpoint OCPI CDRs (POST /ocpi/cpo/2.1.1/cdrs).
    • L'URL du CDR sur le système de l'EMSP est enregistrée dans le champ emspCdrUrl de la transaction, servant de confirmation.
  6. Facturation :
    • La facturation finale de l'utilisateur est gérée entièrement par l'EMSP partenaire, sur la base du CDR reçu.
    • Le règlement financier entre Wego (le CPO) et l'EMSP se fait en dehors de l'application, selon les accords de roaming établis, en utilisant les CDRs comme preuve de service.