- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Deviens membre Premium magic_button
Débloque cette session en devenant Membre Premium 🚀
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte personlive_helpToutes les questions
Gabriel Trouvé
15 mars 2023 - 15 mars 2023 à 20:17
checkConversation résolue
6 réponses
webhook stripe tuto e commerce
Bonsoir,je devrais avoir un évènement payment_intent.created dans mon cas mais comme vous pouvez le voir sur le screen ci-dessous je n'ai rien.Vous savez pourquoi ?Merci d'avance@csrf_exempt def stripe_webhook(request): payload = …
00:00:00 :Pour pouvoir terminer l'acte d'achat sur notre site, on va devoir écouter les événements qui sont envoyés par Stripe dans ce qu'on appelle un webhook.Donc assurez-vous déjà d'avoir bien l'outil Stripe CLI qui est installé, qui va nous permettre de développer, de tester ces webhooks de façon locale.
00:00:15 :Donc pour vérifier que tout fonctionne, vous pouvez utiliser Stripe Status et si tout fonctionne, vous aurez ce message All services are online.Donc ça signifie que l'outil de Stripe fonctionne et on va pouvoir créer ce qu'ils appellent ici un Event Handler.
00:00:29 :Donc là, comme je vous dis, encore une fois, vous pouvez aller voir toutes ces étapes dans la documentation.Là, je suis dans le Stripe Checkout, dans Fulfill your orders.
00:00:45 :Vous voyez ici qu'on a un exemple avec Django, donc ça tombe bien puisqu'on utilise Django.Donc ce qu'on va faire en fait, c'est créer une vue.
00:01:01 :Donc on va aller mettre tout ça en place dans notre projet.Donc dans urls.py, on va déjà créer l'URL du webhook.Donc moi, je vais l'appeler tout simplement Stripe-Webhook.
00:01:10 :On va créer une vue qu'on va appeler StripeWebhook.Donc on n'a pas encore créé, mais on va la créer tout de suite.Et pour le nom, je vais l'appeler également StripeWebhook, comme ceci.
00:01:18 :Donc on va créer cette vue, je vais mettre l'import tout de suite comme ça, ce sera fait.Donc l'import au début de mon fichier et dans Views ici, à la toute fin, je vais créer cette vue StripeWebhook avec l'objet Request.
00:01:29 :Et donc si on retourne voir dans la documentation, vous voyez qu'on doit bien avoir notre Stripe API Key.Donc ça, on l'avait déjà à l'intérieur du fichier.
00:01:36 :Si je remonte tout en haut, elle était déjà là puisqu'on utilisait cette clé pour le checkout session.Donc ça, c'est bon.On a un décorateur CSRF exempt.
00:01:45 :Donc on va le rajouter puisque là, dans ce cas-ci, on n'aura pas de jeton CSRF qui sera envoyépuisque ce n'est pas un formulaire envoyé depuis notre site.
00:01:53 :Ce sont des informations qui sont envoyées directement par Stripe.Donc je vais importer ce décorateur automatiquement avec PyCharm.Vous voyez que là, on a un module à rallonge Django, Views, Décorateur, CSRF.
00:02:03 :Donc je l'importe automatiquement.Et ensuite, pour l'instant, on va juste faire ces quelques étapes ici.Vous verrez que par la suite, il va falloir authentifier la requête pour s'assurer qu'elle vient bien de Stripe.
00:02:12 :Mais pour l'instant, on va faire un truc très simple ici.Donc je vais enlever les commentaires.Je vais importer également le HTTP response.Là encore, option entrée, Import Django Response.
00:02:22 :Et donc ce qu'on fait ici, c'est tout simplement récupérer le corps de la requêtequi est disponible dans request.body, l'afficher avec un printet retourner un HTTP response avec un statut de 200qui signifie que la requête a été correctement effectuée.
00:02:34 :Une fois qu'on a ça en place, on va pouvoir tester notre webbook avec Stripe CLI qu'on a installé.Donc pour savoir comment faire, vous pouvez aller là encore dans la documentationet vous voyez qu'on va utiliser cette ligne ici.
00:02:45 :Alors bien sûr, il va falloir modifier l'adresse.Donc je vais mettre tout ça dans un terminal.Et nous, ce n'est pas localhost 42 42 webhook,mais c'est plutôt 127.0.0.1 2.8000.
00:02:59 :Et ensuite, on a le slash Stripe-webhook comme ceci.Donc ça, c'est vraiment l'URL que l'on a mise à l'intérieur de notre fichier urls.py.Donc si je reviens ici, on avait Stripe-webhook.
00:03:11 :Donc on met le localhost, donc 127.0.0.1, notre port 8000, slash Stripe-webhook.Et on lui dit en fait d'écouter à cette adresse.Donc je valide en appuyant sur entrée.
00:03:22 :Là, il va donc écouter tous les événements qui vont se passer.Et vous voyez également ici qu'on a une clé secrète qu'on va devoir utiliser par la suitepour authentifier que la connexion vient bien de Stripe.
00:03:33 :Donc pour l'instant, ce qu'on va faire, c'est tout simplement aller dans notre panier,donc sur le panier ici dans notre application.Alors là, je suis déconnecté du site.
00:03:41 :Donc je vais me reconnecter pour accéder au panier et procéder à un achat de test.Donc dans le panier ici, on va aller cliquer sur procéder au paiement.
00:03:51 :Et en fait, tous les événements qu'on va faire ici, vous allez les retrouver ici.Vous voyez, on a un payment intent qui a été créé.
00:03:56 :Et on a l'événement qui a été posté à cette adresse.Et on a bien notre retour de 200.Donc on peut déjà aller voir dans notre terminal ici.
00:04:04 :Et vous voyez qu'on a bien le payload.Donc qu'on avait dans notre view.Donc ce payload ici qui correspond au corps de la requête qui est affiché.
00:04:12 :Et là, on a plein d'informations.Donc pour l'instant, c'est un peu pêle-mêle comme ça.Vous voyez, on a la devise par exemple ici.On a pas mal de choses.
00:04:19 :Donc ça, on va pouvoir par la suite l'utiliser pour identifierquel est l'utilisateur qui a initié cet événement.Et ensuite procéder à la validation de son panier.
00:04:28 :Donc je vais revenir ici sur Doxtring.On va mettre donc les informations.Hello at doxtring.frOn met notre carte.Donc la carte par défaut qui nous permet de tester.
00:04:39 :Ici, je vais mettre Thibault, France, Fidji.On peut mettre France ou Fidji.Vous pouvez mettre n'importe quoi ici.Ça n'a pas d'importance.Et je clique donc sur payer.
00:04:48 :Et là, si je retourne dans mon terminal,on va voir qu'on a pas mal d'événements ici.Donc on a un customer qui est créé.Donc un client en fait qui est créé du côté de Stripe.
00:04:56 :Et nous, ce qui va nous intéresser, c'est cet événement ici.Checkout session completed.Puisque c'est vraiment le dernier événement, vous voyez, qui arrive.Donc quand on a cet événement qui est reçu,ça veut dire que l'utilisateur a bien été créé.
00:05:08 :Donc on a bien customer created ici.Que le paiement est passé.Donc payment succeeded.Donc tout ça, c'est des choses qui sont gérées du côté de Stripe.
00:05:16 :Et il faut vraiment que tout ça passe.Il faut que l'utilisateur soit bien créé.Il faut que le paiement passe.Pour qu'ensuite, on ait cet événement qui soit envoyé.
00:05:25 :Donc ça, c'est vraiment la base.Vous voyez qu'il y a pas mal d'événements qui sont envoyés.Et nous, on va devoir, avec une structure conditionnelle,filtrer dans notre vue les événements qui nous intéressent.
00:05:35 :Donc avant ça, on va devoir rajouter la couche de sécurité.Qui est expliquée là encore dans la documentation.Donc vous voyez ici, on nous indique qu'il faut vérifierque les événements viennent bien de Stripe.
00:05:44 :Et on a notre clé ici, Endpoint Secret.Donc là, je vais juste copier tout ça.Vous allez voir, je vais vous expliquer par la suitece qui se passe un peu plus en détail ici.
00:05:53 :Donc je mets tout ça ici.Et là, on a cette clé Endpoint Secret.Que je vais mettre ici par exemple.Et donc cette clé Endpoint Secret,c'est la clé qu'on avait à l'intérieur de notre terminal.
00:06:03 :Donc cette clé ici, vous la copiez.Et vous la mettez ici.Donc sous forme de chaîne de caractère bien entendu.Et c'est cette clé qui va permettre à Stripe de vérifierque la requête vient bien de Stripe.
00:06:14 :Puisque n'importe qui pourrait effectuer une requête à notre URL ici.N'importe qui pourrait aller sur Stripe Webhooket essayer de nous envoyer des informations.Donc nous, on veut pas que n'importe qui puisse envoyer des choseset potentiellement créer des paiements ou des utilisateurs ou quoi que ce soit.
00:06:30 :Donc en fait, on va utiliser cette clé secrète.Qui pour l'instant, on la met bien sûr en dur dans notre fichier.Mais par la suite, quand vous aurez la vraie clé,il faudra passer par le même processus que ce qu'on avait fait pour la clé de Stripe.
00:06:42 :Et la mettre à l'intérieur du fichier .env.Donc ce fichier ici qui contenait la clé d'API de Stripe.Donc pour l'instant, je la mets comme ça juste pour vous montreret pour pas complexifier et faire durer cette vidéo trop longtemps.
00:06:52 :Mais pensez bien qu'au final, il ne faudra pas la mettre comme ça directement dans votre script.Donc là, vous voyez qu'est-ce qu'on fait ?On va essayer en fait de construire un événement.
00:07:00 :Donc on va lui passer le endpoint secret, le payload qui est donc le core de la requêteet le sigheader ici qui est en fait la signature de Stripe.
00:07:08 :Et avec tout ça en fait, il va pouvoir vérifier si tout est correctet si l'événement vient bien de Stripe.Donc là, si ce n'est pas le cas, on va retourner des statuts d'erreur de 400.
00:07:17 :Donc vous voyez, si on a un value error ou un Stripe signature verification error,on va retourner des HTTP response de 400.Si ce n'est pas le cas, ça veut dire que tout s'est bien passéet on va pouvoir procéder ici à toutes les opérations qu'on souhaite effectuerune fois que le paiement a été correctement effectué.
00:07:32 :Donc voilà pour la base de cette vue.Pour l'instant, c'est vraiment juste des notions de sécurité.Donc là, il ne faut pas trop vous en faire.
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.