Intégrer Stripe dans votre projet Symfony : le guide technique et propre
Proposer le paiement par carte bancaire sur son application web est devenu une fonctionnalité incontournable.
Parmi les solutions du marché, Stripe s'impose comme une référence pour les développeurs grâce à sa robustesse et à la qualité de son API.
Si vous développez votre projet avec Symfony, l'intégration peut se faire de manière propre, sécurisée et évolutive.
Voyons ensemble les grandes étapes pour mettre en place un tunnel de paiement efficace.
1. L'architecture du paiement : Stripe Checkout VS API directe
Pour cet article, nous allons nous concentrer sur Stripe Checkout.
Pourquoi ? Parce que c'est la méthode recommandée pour la majorité des projets.
- Sécurité maximale : les données bancaires ne transitent jamais par votre serveur.
- Conformité PCI-DSS facilitée : Stripe prend en charge la partie sensible du paiement.
- Expérience utilisateur optimisée : prise en charge automatique du 3D Secure, Apple Pay, Google Pay, etc.
Le flux est simple :
- Votre application Symfony crée une session de paiement via l’API Stripe.
- L’utilisateur est redirigé vers une page sécurisée hébergée par Stripe.
- Une fois le paiement terminé, l’utilisateur revient sur votre site.
2. Étape par étape : le code côté Symfony
Installation du SDK
On commence par installer le SDK PHP officiel de Stripe via Composer :
composer require stripe/stripe-php
Configuration des clés API
Dans votre fichier .env, configurez vos clés secrètes et publiques récupérées depuis votre tableau de bord Stripe :
STRIPE_PUBLIC_KEY=pk_test_...
STRIPE_SECRET_KEY=sk_test_...
Le contrôleur : création de la session
Voici un exemple de méthode dans un contrôleur Symfony pour générer le lien de paiement :
use Stripe\Stripe;
use Stripe\Checkout\Session;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Routing\Annotation\Route;
#[Route('/achat/creer-session', name: 'checkout_pro_session')]
public function createCharge(string $stripeSecretKey): RedirectResponse
{
// On initialise le SDK avec la clé secrète
Stripe::setApiKey($stripeSecretKey);
// On crée la session Checkout
$session = Session::create([
'payment_method_types' => ['card'],
'line_items' => [[
'price_data' => [
'currency' => 'eur',
'product_data' => [
'name' => 'Abonnement Premium ou Produit X',
],
'unit_amount' => 4900, // Prix en centimes (ici 49,00 €)
],
'quantity' => 1,
]],
'mode' => 'payment',
'success_url' => $this->generateUrl('payment_success', [], UrlGeneratorInterface::ABSOLUTE_URL),
'cancel_url' => $this->generateUrl('payment_cancel', [], UrlGeneratorInterface::ABSOLUTE_URL),
]);
return new RedirectResponse($session->url, 303);
}
3. Ne pas oublier l'étape cruciale : les Webhooks
Rediriger l'utilisateur vers une success_url ne suffit pas pour valider une commande en base de données.
Si l'utilisateur ferme son navigateur juste après le paiement, votre site ne saura jamais qu'il a payé.
La bonne pratique consiste à configurer un Webhook : un point d'entrée sur votre application Symfony que Stripe va appeler de serveur à serveur pour envoyer l'événement :
checkout.session.completed
C'est à ce moment-là, de manière asynchrone et sécurisée, que vous validez la commande en base de données.
Un projet de monétisation ? Confiez-le à des experts
Gérer des flux financiers, sécuriser des transactions, configurer des abonnements récurrents ou interconnecter des outils de gestion demande une vraie rigueur.
Une erreur de code peut vite coûter cher.
Chez Dev-Booster, nous savons mettre en place ce type d’intégration proprement.
Que vous ayez besoin d'une plateforme web sur-mesure et scalable sous Symfony, ou que vous souhaitiez relier vos solutions de paiement à vos outils métiers développés sous WinDev, notre équipe maîtrise l'intégration des API bancaires.
Nous sécurisons vos tunnels de vente pour vous permettre de vous concentrer sur la croissance de votre activité.
Prêt à passer à la vitesse supérieure ? Contactez-nous dès aujourd'hui pour échanger sur votre projet.
#Symfony #Stripe #PaiementEnLigne #API #DéveloppementWeb #DevBooster #SaaS #Webhooks