DjomyReturnController
extends AbstractController
in package
Retour du navigateur depuis la page de paiement Djomy, commun à tous les parcours web hors inscription entreprise.
La route est publique : le paiement est retrouvé par son jeton de retour aléatoire (voir DjomyCheckoutService::start()), et rien n'est cru sans relecture du statut auprès de Djomy. Le contrôleur ne fait que constater le résultat et rediriger vers la page du parcours d'origine ; le traitement métier est celui de PaymentFulfillmentService, identique à celui du webhook.
Table of Contents
Constants
- MESSAGE_FAILED : mixed = 'Le paiement n\'a pas abouti ou a été annulé. V...
- MESSAGE_PENDING : mixed = 'Paiement en cours de traitement : votre comman...
Properties
- $djomyService : DjomyService
- $entityManager : EntityManagerInterface
- $fulfillmentService : PaymentFulfillmentService
- $logger : LoggerInterface
- $physicalCardRepository : PhysicalCardRepository
Methods
- __construct() : mixed
- __invoke() : Response
- Constate le résultat d'un paiement Djomy et redirige vers la page de résultat du parcours.
- flashAndRedirect() : Response
- Ajoute un message flash puis redirige vers une route.
- redirectToResult() : Response
- Redirige vers la page de résultat propre au parcours du paiement.
- resolveOutcome() : string
- Détermine le résultat du paiement, en le validant si Djomy confirme le succès.
Constants
MESSAGE_FAILED
private
mixed
MESSAGE_FAILED
= 'Le paiement n\'a pas abouti ou a été annulé. Vous pouvez réessayer.'
MESSAGE_PENDING
private
mixed
MESSAGE_PENDING
= 'Paiement en cours de traitement : votre commande sera confirmée dès réception de la confirmation de Djomy.'
Properties
$djomyService read-only
private
DjomyService
$djomyService
$entityManager read-only
private
EntityManagerInterface
$entityManager
$fulfillmentService read-only
private
PaymentFulfillmentService
$fulfillmentService
$logger read-only
private
LoggerInterface
$logger
$physicalCardRepository read-only
private
PhysicalCardRepository
$physicalCardRepository
Methods
__construct()
public
__construct(DjomyService $djomyService, PaymentFulfillmentService $fulfillmentService, EntityManagerInterface $entityManager, PhysicalCardRepository $physicalCardRepository, LoggerInterface $logger) : mixed
Parameters
- $djomyService : DjomyService
-
Relit le statut de la transaction.
- $fulfillmentService : PaymentFulfillmentService
-
Traite un paiement réussi.
- $entityManager : EntityManagerInterface
-
Recherche du paiement.
- $physicalCardRepository : PhysicalCardRepository
-
Détecte une commande de carte physique.
- $logger : LoggerInterface
-
Journalise les erreurs de lecture ou de traitement.
__invoke()
Constate le résultat d'un paiement Djomy et redirige vers la page de résultat du parcours.
public
__invoke(string $token) : Response
Le paiement est chargé par jeton (404 s'il est inconnu, n'est pas Djomy ou n'a pas de transaction).
S'il est déjà COMPLETED, c'est un succès. Sinon le statut est relu : seul SUCCESS (devise GNF
si fournie) fait foi et déclenche PaymentFulfillmentService::fulfill() ; FAILED et CANCELLED
sont un échec ; tout autre statut, une devise inattendue ou une erreur annonce un traitement en cours
(le webhook finalisera). La destination dépend de ce qui est lié au paiement : abonnement Pro, commande
d'abonnement, carte physique, commande entreprise ou commande de la boutique.
Route : /payment/djomy/return/{token} (GET), nom djomy_payment_return.
Parameters
- $token : string
-
Jeton de retour du paiement.
Attributes
- #[Route]
- '/payment/djomy/return/{token}'
- $name: 'djomy_payment_return'
- $requirements: ['token' => '[0-9a-f]{32,64}']
- $methods: ['GET']
Return values
Response —Redirection vers la page de résultat du parcours.
flashAndRedirect()
Ajoute un message flash puis redirige vers une route.
private
flashAndRedirect(string $type, string $message, string $route[, array<string, mixed> $params = [] ]) : Response
Parameters
- $type : string
-
Type de flash (
success,info,warning). - $message : string
-
Message affiché.
- $route : string
-
Route de destination.
- $params : array<string, mixed> = []
-
Paramètres de la route.
Return values
Response —Redirection.
redirectToResult()
Redirige vers la page de résultat propre au parcours du paiement.
private
redirectToResult(Payment $payment, string $outcome) : Response
Les pages de succès des parcours ne valident plus rien : elles affichent un état déjà enregistré par PaymentFulfillmentService.
Parameters
- $payment : Payment
-
Paiement concerné.
- $outcome : string
-
success,failedoupending.
Return values
Response —Redirection avec le message flash adapté.
resolveOutcome()
Détermine le résultat du paiement, en le validant si Djomy confirme le succès.
private
resolveOutcome(Payment $payment) : string
Parameters
- $payment : Payment
-
Paiement Djomy ayant une transaction.
Return values
string —success, failed ou pending.