SubscriptionOrderController
extends AbstractController
in package
Contrôleur de paiement des commandes portant un abonnement.
Il traite le cas d'une Order (typiquement issue d'une commande de carte physique) dont
le premier Payment est rattaché à une Subscription : règlement par Djomy, page de
succès et annulation. L'activation de l'abonnement est faite par
PaymentFulfillmentService après vérification auprès de Djomy (retour sur
djomy_payment_return ou webhook) : la route de succès ne fait qu'afficher l'état enregistré.
Chaque action contrôle que la commande appartient bien à l'utilisateur connecté
et renvoie systématiquement vers la liste des commandes physical_card_my_orders.
Aucun préfixe de route au niveau de la classe. Réservé à ROLE_USER.
Attributes
- #[IsGranted]
- 'ROLE_USER'
Table of Contents
Properties
- $djomyCheckoutService : DjomyCheckoutService
- $logger : LoggerInterface
Methods
- __construct() : mixed
- cancel() : Response
- Traiter l'abandon du paiement d'une commande d'abonnement.
- index() : Response
- Rediriger la liste des commandes d'abonnement vers la liste des commandes de cartes physiques.
- pay() : Response
- Démarrer le règlement Djomy d'une commande d'abonnement.
- success() : Response
- Afficher le résultat du paiement d'une commande d'abonnement, sans rien modifier.
Properties
$djomyCheckoutService read-only
private
DjomyCheckoutService
$djomyCheckoutService
$logger read-only
private
LoggerInterface
$logger
Methods
__construct()
public
__construct(DjomyCheckoutService $djomyCheckoutService, LoggerInterface $logger) : mixed
Parameters
- $djomyCheckoutService : DjomyCheckoutService
-
Démarre le paiement en ligne Djomy.
- $logger : LoggerInterface
-
Journalise les échecs de démarrage du paiement.
cancel()
Traiter l'abandon du paiement d'une commande d'abonnement.
public
cancel(Order $order) : Response
Page d'annulation. Se limite à vérifier que la commande appartient
à l'utilisateur connecté puis à afficher un message flash info. Aucun statut n'est modifié :
la commande et son paiement restent en attente et peuvent être repayés via
self::pay().
Route : /subscription/orders/{id}/cancel (GET), nom app_subscription_order_cancel.
Parameters
- $order : Order
-
Commande résolue par ParamConverter à partir de
{id}.
Tags
Attributes
- #[Route]
- '/subscription/orders/{id}/cancel'
- $name: 'app_subscription_order_cancel'
- $methods: ['GET']
Return values
Response —Redirection vers physical_card_my_orders.
index()
Rediriger la liste des commandes d'abonnement vers la liste des commandes de cartes physiques.
public
index() : Response
Cette action ne contient aucune logique propre : elle sert d'alias historique et redirige
immédiatement vers physical_card_my_orders, qui affiche l'ensemble des commandes de
l'utilisateur connecté.
Route : /subscription/orders (GET), nom app_subscription_orders_index.
Attributes
- #[Route]
- '/subscription/orders'
- $name: 'app_subscription_orders_index'
- $methods: ['GET']
Return values
Response —Redirection permanente d'usage (302) vers physical_card_my_orders.
pay()
Démarrer le règlement Djomy d'une commande d'abonnement.
public
pay(Order $order, Request $request) : Response
Enchaîne quatre contrôles : la commande doit appartenir à l'utilisateur connecté (sinon
AccessDeniedException), le jeton CSRF pay<id> transmis dans _token doit être valide,
le premier paiement de la commande doit exister et être rattaché à une Subscription,
et ce paiement doit être au statut Payment::PENDING_STATUS ; chaque échec pose un flash
et renvoie vers physical_card_my_orders. Le téléphone du payeur (payer_phone) est ensuite
transmis à DjomyCheckoutService::start(), qui crée la transaction et renvoie l'URL de la
page de paiement. Les échecs sont journalisés et traduits en message générique.
Route : /subscription/orders/{id}/pay (POST), nom app_subscription_order_pay.
Parameters
- $order : Order
-
Commande résolue par ParamConverter à partir de
{id}. - $request : Request
-
Requête POST portant le jeton CSRF
_tokenetpayer_phone.
Tags
Attributes
- #[Route]
- '/subscription/orders/{id}/pay'
- $name: 'app_subscription_order_pay'
- $methods: ['POST']
Return values
Response —Redirection vers la page de paiement Djomy, ou vers physical_card_my_orders
en cas de contrôle non satisfait ou d'erreur.
success()
Afficher le résultat du paiement d'une commande d'abonnement, sans rien modifier.
public
success(Order $order) : Response
Vérifie la propriété de la commande puis informe l'utilisateur de l'état déjà enregistré par
PaymentFulfillmentService : paiement confirmé (COMPLETED) ou en attente de
confirmation. Aucune activation n'a lieu ici.
Route : /subscription/orders/{id}/success (GET), nom app_subscription_order_success.
Parameters
- $order : Order
-
Commande résolue par ParamConverter à partir de
{id}.
Tags
Attributes
- #[Route]
- '/subscription/orders/{id}/success'
- $name: 'app_subscription_order_success'
- $methods: ['GET']
Return values
Response —Redirection vers physical_card_my_orders, le résultat étant communiqué par message flash.