- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Formations
Articles
Communauté

La certification qualité a été délivrée pour la catégorie d'actions « Actions de formation ».
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Formations
Articles
Communauté

La certification qualité a été délivrée pour la catégorie d'actions « Actions de formation ».
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

Christian Aucane
21 mars 2023 - 21 mars 2023 à 21:07
checkConversation résolue
12 réponses
Ca marche pas chez moi
le champs customer qui est récupéré par le webhook vaut None,Je suis allé voir sur stripe et il ne crée pas de "Account" mais un "Guest" qui est écrasé et …
00:00:00 :Au niveau de Stripe, pour pouvoir utiliser automatiquement l'adresse de livraisonqui est associée à un utilisateur, il va falloir passer cet utilisateur.Pour l'instant, on passe l'adresse e-mail.
00:00:10 :Si je vais voir dans cette fonction Create Checkout Session,qui est la fonction qui me permet d'initier la session pour passer au paiement dans Stripe,ici on passe à chaque fois Customer e-mail,même si, comme on l'avait vu dans une partie précédente,quand on récupère dans le Stripe Webhook l'utilisateur,
00:00:26 :vous voyez ici qu'on associe le Stripe ID,les informations qu'on récupère depuis Stripe qui sont envoyées par le Webhook,on les sauvegarde de notre côté dans ce champ.
00:00:36 :Donc ce qu'on va faire dans cette partie, c'est si on a des informations dans ce champ,plutôt que de passer l'e-mail, on va passer le ID de Stripe qui est associé à l'utilisateur,comme ça il va automatiquement pouvoir utiliser l'adresse de livraisonqui est associée dans Stripe à cet utilisateur.
00:00:52 :Si je vais voir dans Stripe, là si je prends le client,donc là j'en ai beaucoup qui sont assez similaires puisqu'à chaque fois je fais des tests,je vais prendre le dernier ici,vous allez voir que dans les détails sont bien sauvegardés l'adresse de facturationet l'adresse de livraison qu'on a utilisé la dernière fois pour passer une commande.
00:01:07 :Et on retrouve ici le ID, donc le Customer ID que l'on a de notre côté dans la base de données.Donc si je vais voir dans Utilisateur, ici,et que je descends, on a bien Stripe ID qui correspond à cet identifiant.
00:01:19 :Donc ce que je vais faire, c'est ça ici, c'est que je vais revenir dans ma vue,donc dans la vue qu'on avait Create Checkout Session,et on va faire une structure conditionnelle,et en fonction de cette structure conditionnelle,donc en fonction de si on a un Stripe ID ou pas,
00:01:31 :on va passer soit le Stripe ID, soit l'email de l'utilisateur.Donc avant de faire cette structure conditionnelle,on va prendre toutes ces informations ici,et on va les mettre à l'intérieur d'un dictionnaire.
00:01:42 :Puisque je ne peux pas ici faire un IF,on ne peut pas à l'intérieur des paramètres ici,faire une structure conditionnelle qui nous permettraitsoit d'envoyer le Customer Email, soit juste le Customer.
00:01:52 :Donc ce que je vais faire, c'est que je vais prendre tout ça ici,je vais le couper pour l'instant,et on va faire un dictionnaire que je vais appeler Checkout-Data, comme ceci,et à l'intérieur de ce dictionnaire, on va mettre toutes ces informations.
00:02:05 :Donc là c'est un petit peu décousu pour l'instant,je vais reprendre tout ça, il m'a fait une indentation assez bizarre,et je vais faire Shift-Tab pour tout ramener ici au même niveau,et on va tout transformer pour que ce soit correspondant à un dictionnaire Python.
00:02:17 :Puisque là on avait des nombres de paramètres avec des éléments,donc ce qu'on passait en fait à une fonction,et là on va utiliser ça dans un dictionnaire.
00:02:24 :Donc je vais tout simplement mettre des guillemets,donc on va mettre un multicurseur, sur macOS j'appuie sur Option deux fois rapidement,et je descends avec la flèche du bas,sinon vous pouvez utiliser la molette de votre souris,vous cliquez en fait et vous glissez avec la molette de votre souris,
00:02:40 :et ça permet de faire la même chose.Donc je vais mettre un premier guillemet ici,ensuite je vais aller là encore avec Option et les flèches cette fois-ci,donc la flèche de droite, je vais me rendre jusqu'à la fin de ces noms de variables,et je vais remettre un guillemet,
00:02:54 :on va ensuite supprimer les égales et à la place je vais mettre un deux points,et normalement c'est tout bon,on a donc à la place des noms de paramètres des chaînes de caractère,à la place du égal les deux points,et on garde toujours les virgules qui séparent les éléments.
00:03:07 :Je vais faire un reformatage du fichier, je vais aller dans Code,et vous allez avoir ici Reformat Code,qui va me permettre automatiquement de tout raligner correctement.
00:03:15 :Donc je vais pouvoir ensuite utiliser CheckoutData,et le passer à l'intérieur de Create, à la place de tout ce que j'avais auparavant.Également je vais devoir rajouter les deux astérisques ici,puisqu'on va unpacker ces éléments,on ne va pas passer le dictionnaire,si je passais juste CheckoutData comme ça, on passerait directement un dictionnaire,
00:03:33 :et nous ce qu'on veut c'est passer les différentes clés et valeurs de notre dictionnaire,de la même façon que si on mettait par exemple ici LineItems,et qu'on mettait les éléments,donc ça va permettre de reprendre ce dictionnaire,et donc pour ça on prend notre dictionnaire,et on l'unpack avec les deux astérisques,
00:03:48 :vous commencez à être habitué à cette technique.Ce que je vais faire avant de passer ces informations,c'est la fameuse structure conditionnelle,donc on va vérifier si on a dans Request.user le StripeID,
00:04:00 :donc si on a un identifiant Stripe qui est associé à notre utilisateur,et bien on va l'ajouter dans notre dictionnaire,donc on va faire CheckoutData,et on va rajouter une clé Customer tout simplement,donc pas CustomerEmail, juste Customer,et on va mettre Request.user.StripeID.
00:04:15 :Sinon, on va mettre ici le CustomerEmail comme on avait auparavant,donc CustomerEmail comme ceci,égal à Request.user.Email.Donc si on a un StripeID, on met le StripeID dans Customer,et ensuite on passe ces informations à notre Checkout,et si on n'a pas de ID, on passe l'email.
00:04:33 :Donc on va tester tout ça, je vais retourner sur mon site,là on a un CustomerID,donc logiquement il devrait envoyer ce StripeID,et on devrait utiliser automatiquement cette adresse de facturationqui est associée à mon utilisateur, donc à mon client dans Stripe.
00:04:47 :Donc je vais revenir ici, je vais aller ajouter des éléments dans mon panier,et on va faire un test avec le Checkout.Donc je vais dans mon panier, je clique sur Acheter,et là on a une erreur puisqu'il nous dit qu'on ne peut pas mettreà la fois Customer et CustomerEmail,
00:05:01 :alors ça c'est parce que j'ai oublié d'enlever cette clé dans mon dictionnaire ici,avant on passait à chaque fois l'email de l'utilisateur,donc là en fait il faut l'enlever,et on ne va passer que l'un ou l'autre,donc soit le Customer, soit le CustomerEmail.
00:05:14 :Donc je reviens ici sur la page d'avant,je vais actualiser pour être sûr que tout est bon,je clique sur Acheter,on va être redirigé vers Stripe,et normalement l'adresse devrait être automatiquement remplie,et c'est bien le cas, on a bien l'adresse travail ici,on a également l'email, puisqu'on a un email qui est associé
00:05:29 :à notre client sur Stripe ici, donc cet email là,et on a également l'adresse qui est correctement envoyéeet automatiquement remplie au moment de passer ma commande.
00:05:38 :Donc ça fonctionne, on a bien réussi à envoyerles bonnes informations en fonction de si on avait un Stripe ID ou non,et dans les prochaines parties on va voir comment on peut modifier l'adresseque l'on envoie ici, puisque sur Stripe on n'a qu'une seule adresse qui est enregistrée,
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.