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)
- 2. Flux de paiement par badge RFID (Utilisateur Wego)
- 3. Flux de paiement via EMSP
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
-
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.
-
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
paymentsavec le statutPAYMENT_CREATEDet untagIdtemporaire est généré. - L'API retourne un
client_secretau frontend.
- Le frontend appelle l'API pour créer une intention de paiement :
-
Confirmation du paiement par l'utilisateur :
- Le frontend utilise le
client_secretpour afficher le formulaire de paiement Stripe. - L'utilisateur saisit ses informations de carte bancaire et valide le paiement.
- Le frontend utilise le
-
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 letagIdtemporaire.
- Une fois le paiement confirmé côté client, le frontend appelle l'API :
-
Session de recharge : La session de recharge est active. Un enregistrement est créé dans la table
transactionset lié à l'enregistrementpayments. -
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
StopTransactionau backend.
- L'utilisateur arrête la recharge depuis la page web, ce qui déclenche un appel à
-
Capture du paiement :
- La notification
StopTransactiondéclenche un événementtransaction-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
paymentsest mis à jour àPAYMENT_CAPTURED.
- La notification
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
- Authentification : L'utilisateur présente son badge RFID Wego à la borne.
- Autorisation : La borne envoie une requête
Authorizeau backend avec letagIddu badge. Le backend vérifie dans sa base de données locale que le badge est valide et actif. - Démarrage de la transaction :
- La borne envoie une notification
StartTransactionau backend. - Le backend crée un enregistrement dans la table
transactionslié autagIdde l'utilisateur.
- La borne envoie une notification
- Session de recharge : La session est active.
- Arrêt de la transaction : L'utilisateur arrête la recharge. La borne envoie une notification
StopTransactionau backend. - 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
ematgè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
- Autorisation (OCPI) :
- L'utilisateur présente le badge de son EMSP à la borne Wego.
- La borne envoie une requête
Authorizeau 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
Authorizationqui lie letagIdà l'idEmspdu partenaire.
- Démarrage de la transaction :
- La borne envoie une notification
StartTransaction. - Le backend Wego crée une transaction et l'associe à l'
idEmspgrâce à l'autorisation préalablement enregistrée.
- La borne envoie une notification
- Session de recharge : La session est active.
- Arrêt de la transaction : L'utilisateur arrête la recharge. La borne envoie une notification
StopTransactionau backend Wego. - 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
emspCdrUrlde la transaction, servant de confirmation.
- 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.