1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
/**
* @Route("/payment/status", name="payment.status")
*/
public function paymentStatus(AdvertRepository $advertRepository, Request $request, ObjectManager $manager, \Swift_Mailer $mailer)
{
$endpoint_secret = $this->getParameter('stripe_endpoint_secret');
$payload = @file_get_contents('php://input');
$sig_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];
$event = null;
try
{
$event = \Stripe\Webhook::constructEvent($payload, $sig_header, $endpoint_secret);
}
catch(\UnexpectedValueException $e)
{
// Invalid payload
http_response_code(400);
exit();
}
catch(\Stripe\Error\SignatureVerification $e)
{
// Invalid signature
http_response_code(400);
exit();
}
if ($event->type == "payment_intent.succeeded")
{
$intent = $event->data->object;
...
// Je mets à jour l'annonce : tout se passe correctement
...
// Je génère une facture au format PDF : tout se passe correctement
...
// J'enregistre la facture en base de données : tout se passe correctement
...
//Sending an email confirmation about the success payment
$mail = new Mail;
$user = $advert->getOwner()->getUser();
$mail->setReceiver($user)
->setSender(null)
->setSubject($this->getParameter('succeed_payment_email_subject'))
->setFirstname($this->getParameter('administrateur_firstname'))
->setName($this->getParameter('administrateur_name'))
->setEmailFrom($this->getParameter('administrateur_email'))
->setTemplate('Communication/succeedPaymentEmail.html.twig')
->setMessage($this->renderView(
$mail->getTemplate(),
['user' => $user]
)
)
;
if ($mail->sendEmail($mailer))
{
$manager->persist($mail);
$manager->flush();
// Le mail est bien enregistré en base de données alors qu'il n'est pas envoyé
}
http_response_code(200);
exit();
}
elseif ($event->type == "payment_intent.payment_failed")
{
$intent = $event->data->object;
$error_message = $intent->last_payment_error ? $intent->last_payment_error->message : "";
printf("Failed: %s, %s", $intent->id, $error_message);
http_response_code(200);
exit();
}
} |
Partager