Commit f2951dcf by Yvon

remove confusing notifyAction controller in PaymentController as notification is…

remove confusing notifyAction controller in PaymentController as notification is handled by Payum already + comment
parent 595b13c9
...@@ -144,59 +144,14 @@ class PaymentController extends AbstractController ...@@ -144,59 +144,14 @@ class PaymentController extends AbstractController
} }
/** /**
*
* Traitement des notifications Payzen.
* @see doneAction
*
* @param Request $request
* @return Response
* @Route("/payment/notify/", name="payment_notify")
*/
public function notifyAction(Request $request)
{
//TODO Security possible issue : someone else than Payzen could get the token and submit
//TODO a recurring notification payment occurence here, which will be accepted...
//TODO until blocked if user has already payed its cotisation...
//TODO but if e.g. recurring payment time range is over, the kohinos
//TODO would not realize it and will continue to trigger new payments on the system
//TODO clean solution could be to detect last occurence of recurring payment
//TODO and invalidate token at this point.
try {
$token = $this->payum->getHttpRequestVerifier()->verify($request);
} catch (\Exception $e) {
// Token expired
return new Response("NotifyAction controller : jeton déjà invalidé.");
}
// Get payment
$gateway = $this->payum->getGateway($token->getGatewayName());
$gateway->execute($status = new GetHumanStatus($token));
$payment = $status->getFirstModel();
if ($payment->getStatus() == GetHumanStatus::STATUS_NEW || $payment->getIsRecurrent()) {
// No notification arrived at this point or payment is recurrent : execute Notify action
$gateway->execute(new Notify($token));
return new Response("NotifyAction controller : notification prise en compte.");
} else {
// Invalidate token
$this->payum->getHttpRequestVerifier()->invalidate($token);
return new Response("NotifyAction controller : jeton valide invalidé.");
}
}
/**
* Ce contrôleur est sollicité lorsque Payzen renvoie le cotisant sur l'URL de retour. * Ce contrôleur est sollicité lorsque Payzen renvoie le cotisant sur l'URL de retour.
* *
* Avant fin mars 2024, on pouvait croire que ce contrôleur était également sollicité lorsque Payzen notifie du paiement * IMPORTANT : ce contrôleur n'est PAS sollicité directement par Payzen via l'URL de notification.
* via l'URL de notification, mais ce n'est pas le cas car la configuration du back office Payzen * En effet, le module Payzen écrase (au moins dans certains cas) cette URL en transmettant la route
* est réécrite par la configuration par défaut du module Payum. * payum_notify_do via la variable vads_url_check.
*
* C'est donc désormais le contrôleur notifyAction qui est sollicité
* (ajout de ce contrôleur suite découverte bug lors de la mise en place du paiement récurrent,
* jusqu'ici les notifications payzen n'étaient donc pas captées, ce qui ne pose pas nécessairement
* problème car les utilisateurs sont redirigés vers l'URL de retour s'ils ne ferment pas leur navigateur.)
* *
* Pour plus de clarté, on gagne à modifier finalement l'URL de retour Payzen dans le backoffice de sorte * Pour plus de clarté, on gagne à modifier finalement l'URL de retour Payzen dans le backoffice de sorte
* à pointer vers notifyAction également. * à pointer vers notifyAction également (INSTALL.md modifié).
* *
* @Route("/payment/done/", name="payment_done") * @Route("/payment/done/", name="payment_done")
*/ */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment