Bonjour,
Je suis actuellement entrain de mettre en place un système de paiement dans mon application Symfony 4 avec stripe mais j'ai un problème ou quelques choses que je ne comprend pas. J'utilise ma function pour créer le checkout avec le fameux success_url et cancel_url. Mais un fois le paiement success je voudrais update une table dans ma DB passer la location en status 1?
Mais un client malintentionné peut appeler lui même l'URL de succes stockée dans redirect. Il est donc nécéssaire de vérifier que stripe a réellement été contacté et que la procedure s'est correctement déroulée avant de livrer le client.
Comment passer l'id de stripe dans le success_url puis l'enregistrer après c'est le Webhook qui check si le paiement a réellement était effectué puis update la DB depuis le server et pas le faire depuis une simple URL trouvable j'ai un bug.
Le code :
$session = \Stripe\Checkout\Session::create([
'customer_email' => $this->getUser()->getEmail(),
'payment_intent_data' => [
'setup_future_usage' => 'off_session',
],
'payment_method_types' => ['card'],
'line_items' => [[
'price_data' => [
'currency' => 'eur',
'product_data' => [
'name' => 'Location',
],
'unit_amount' => 2000,
],
'quantity' => 1,
]],
'mode' => 'payment',
//'success_url' => $this->generateUrl('checkout_location_success', ['id' => $ICI avoir un id de transaction à save $], UrlGeneratorInterface::ABSOLUTE_URL),
'success_url' => $this->generateUrl('checkout_location_success', [], UrlGeneratorInterface::ABSOLUTE_URL),
'cancel_url' => $this->generateUrl('checkout_location_cancel', [], UrlGeneratorInterface::ABSOLUTE_URL),
]);
return new JsonResponse(['id' => $session->id], 200);
}
Cordialement,