Installation
1. Installer le bundle
composer require makfly/stripe-cashier-bundle dompdf/dompdf:^3.1Note :
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/messengerCela 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-intlNote : L’extension
intlest recommandée pour le formatage monétaire et les dates dans les factures PDF.
Vérification:
php -m | grep intl3. Générer la configuration
php bin/console cashier:installLa commande est idempotente. Elle crée uniquement ce qui manque.
Fichiers générés
config/packages/cashier.yamlconfig/packages/cashier_doctrine.yamlconfig/routes/cashier.yaml.envavec les variables Stripe manquantes
Répertoires générés
var/datavar/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_meRemplacez 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:migrate7. Vérifier le boot
php bin/console about
php bin/console debug:router | grep cashier
php bin/console doctrine:mapping:info8. 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/webhookOu avec --base-url pour construire automatiquement l’URL :
php bin/console cashier:webhook:listen --forward-to --base-url http://localhost:8000Puis 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