Skip to Content
DocumentationInstallation

Installation

1. Installer le bundle

composer require makfly/stripe-cashier-bundle dompdf/dompdf:^3.1

Note : dompdf/dompdf ^3.1 est installé par défaut (renderer PDF). Vous pouvez utiliser un autre renderer comme Snappy (voir Configuration).

Pour activer le traitement asynchrone des webhooks, installez également :

composer require symfony/messenger

Cela permet aux événements Stripe d’être traités via des messages async (voir Events - Messenger).

2. Installer ext-intl si possible

Le bundle fonctionne sans ext-intl, mais la qualité de rendu des montants et des dates est meilleure avec l’extension.

Sur Debian / Ubuntu (remplacez 8.x par votre version de PHP, ex: 8.2, 8.3 ou 8.4):

sudo apt-get install -y php8.x-intl

Note : L’extension intl est recommandée pour le formatage monétaire et les dates dans les factures PDF.

Vérification:

php -m | grep intl

3. Générer la configuration

php bin/console cashier:install

La commande est idempotente. Elle crée uniquement ce qui manque.

Fichiers générés

  • config/packages/cashier.yaml
  • config/packages/cashier_doctrine.yaml
  • config/routes/cashier.yaml
  • .env avec les variables Stripe manquantes

Répertoires générés

  • var/data
  • var/data/invoices

4. Vérifier les variables Stripe

STRIPE_KEY=pk_test_change_me STRIPE_SECRET=sk_test_change_me STRIPE_WEBHOOK_SECRET=whsec_change_me

Remplacez les valeurs placeholders avant de brancher un environnement réel.

5. Déclarer une entité billable

Votre entité doit implémenter BillableEntityInterface et utiliser BillableTrait.

use CashierBundle\Concerns\BillableTrait; use CashierBundle\Contract\BillableEntityInterface; use Doctrine\ORM\Mapping as ORM; #[ORM\Entity] class User implements BillableEntityInterface { use BillableTrait; #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column] private ?int $id = null; #[ORM\Column(length: 180, unique: true)] private string $email; #[ORM\Column(length: 255, nullable: true)] private ?string $name = null; public function getId(): ?int { return $this->id; } public function getEmail(): string { return $this->email; } public function getName(): ?string { return $this->name; } }

6. Générer les migrations

php bin/console doctrine:migrations:diff php bin/console doctrine:migrations:migrate

7. Vérifier le boot

php bin/console about php bin/console debug:router | grep cashier php bin/console doctrine:mapping:info

8. Vérifier l’installation locale complète

Prérequis : La Stripe CLI  doit être installée localement pour tester les webhooks.

php bin/console cashier:webhook:listen --forward-to=http://127.0.0.1:8000/cashier/webhook

Ou avec --base-url pour construire automatiquement l’URL :

php bin/console cashier:webhook:listen --forward-to --base-url http://localhost:8000

Puis déclenchez un paiement test via Stripe Checkout pour vérifier:

  • la session Checkout
  • la réception des webhooks
  • la génération du PDF dans var/data/invoices

Configuration →

Last updated on