BCard - Documentation technique

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

Methods

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
throws
AccessDeniedException

Si la commande n'appartient pas à l'utilisateur connecté.

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 _token et payer_phone.

Tags
throws
AccessDeniedException

Si la commande n'appartient pas à l'utilisateur connecté.

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
throws
AccessDeniedException

Si la commande n'appartient pas à l'utilisateur connecté.

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.


        
On this page

Search results