Stripe + Laravel : Démarrer un projet rapidement

Stripavel stripe laravel

Pourquoi ?

Pour tout développeur, certaines tâches sont répétitives, et chacun cherche à éliminer au maximum cette partie en trouvant des outils qui font le boulot pour eux.

Dans mon cas, ce qui reste casse pied, c’est la création des schémas de base de données. Ayant démarré 3 projets Stripe simultanément sur une base Laravel, toute cette partie m’est vite sortie par les yeux.

Quand j’utilise une API aussi importante dans un projet, j’aime avoir l’intégralité des données disponibles directement en base de données. Ca évite de nombreuses requêtes sur l’API du PSP (Payment Service Provider), ce qui peut faire gagner un temps considérable en rapidité d’affichage pour le client final sur votre appli.

Le prochain projet Stripe / PHP : Se concentrer sur l’appli :

Du coup, je me suis dit qu’un produit générique n’existait pas. J’allais jusqu’à chercher la liste des événements Stripe, et en dehors de la doc, aucun moyen d’avoir une liste brute. Du coup, j’en ai fait une.

C’est de là qu’est né Stripavel. Ce n’est pas un package, et pour l’instant, c’est volontaire. Pour utiliser les webhooks de Stripe, il faut configurer son end-point. Il fallait donc que cette url, qui reçoit des requêtes POST de Stripe, soit ignorée de la protection CSRF. Ca, plus la modification du fichier routes, etc, m’ont poussé dans cette direction.

L’objectif de Stripavel est donc uniquement de démarrer un projet, sans se soucier de lister les données de la doc, créer tous les modèles, les migrations, faire le contrôleur pour les notifications etc.

Après quelques minutes, vous êtes donc prêts pour coder le véritable besoin du client.

L’architecture

Stripavel est donc un fork du dépôt Laravel 5.2, sur lequel j’ai ajouté les fichiers de migrations nécessaires à l’utilisation de Stripe, la route qui ne doit pas être protégée par le CSRF.

Deux nouvelles variables d’environnement sont aussi nécessaires, et la liste des événements Stripe ont tous été convertis en événements (classe) Laravel. Dans le fichier EventServiceProvider, vous n’avez donc plus qu’à rattacher les Listeners dont vous avez besoin sur les événements.

Pour le reste, tout se base sur des modèles Eloquent, qui utilisent un Trait, contenant toutes les méthodes pour gérer les données Stripe : ajout, mise à jour et conversion des propriétés. Parce-ce que oui, certaines propriétés étaient trop génériques. Par exemple, on peut avoir une propriété plan dans un objet subscription. En soit c’est logique, mais cette propriété contient l’objet complet, en JSON. Typiquement, ce genre de propriété est renommé en plan_obj dans la base de données. Ca laisse la voie libre pour le champ plan qui contiendra plutôt le nom du plan par exemple.

Le fichier composer.json embarque bien sûr la lib stripe-php, ainsi que polyfill-iconv pour la gestion du JSON avec Postgresql.

Stripavel n’est pas un framework

Le mécanisme d’installation est le même que Laravel. C’est à dire qu’après avoir lancé composer create-project rikless/stripavel, les commandes d’installation de Laravel seront toutes exécutées. Cependant, ce n’est pas un framework, je vais simplement mettre à jour l’upstream à chaque nouvelle version proposée par Taylor Otwell.

metrogeek

Laisser un commentaire