- 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

Konimba
17 juillet 2023 - 17 juillet 2023 à 11:26
checkConversation résolue
9 réponses
Stripe Sauvegarder l'identifiant et l'adresse de livraison
bonjour à tous, je n'arrive pas à Sauvegarder l'identifiant et l'adresse de livraison dans ma base de données sur stripe. ```python {'after_expiration': None, 'allow_promotion_codes': None, 'amount_subtotal': 159, 'amount_total': 159, 'automatic_tax': …
00:00:11 :Donc si je reviens dans ce qu'on a actuellement dans le webhook, on récupère les données dans le cas où on a un événement de type CheckoutSessionCompleted et ensuite une fonction CompleteOrder dans laquelle on récupère l'email de l'utilisateur à partir des données,on récupère l'utilisateur donc à partir de la classe et ensuite on va modifier le panier.
00:00:48 :Donc on va avoir des modifications à faire dans ce webhook et on va également rajouter des éléments.Alors la première chose qu'on va faire c'est déjà sortir en fait cet élément pour le mettre au niveau de cette structure conditionnelle puisqu'on va en fait créer une deuxième fonction que je vais créer tout de suite en fait et que je vais appeler SaveShippingAddress.
00:01:07 :Donc c'est une fonction qui va nous permettre en récupérant les données ici de sauvegarder l'adresse pour l'utilisateur.Alors on pourrait être tenté de le faire directement dans CompleteOrder mais je préfère bien séparer les choses.
00:01:18 :Vous l'avez déjà probablement entendu c'est un des principes SOLID qui est un anagramme pour plusieurs choses qui nous permettent de coder de façon efficace.Et donc on a le concept de Single Responsibility qui correspond au S de SOLID et qui signifie qu'une fonction ne doit avoir qu'une seule chose à faire.
00:01:35 :Donc on ne veut pas dans cette fonction à la fois modifier l'utilisateur et sauvegarder l'adresse.On va avoir une fonction qui va s'occuper de gérer la finalité du panier et une fonction qui va sauvegarder l'adresse de livraison.
00:01:47 :Donc je vais prendre tout ça ici et on va le sortir et le mettre ici directement et ce qu'on va faire c'est passer l'utilisateur.Alors là je vais prendre cette fonction GetObjectOr404 et on va faire tout ça à l'intérieur du try.
00:01:59 :Donc ce que je vais faire c'est prendre l'email ici et le passer à email directement.Et donc si pour une raison ou une autre ces clés ne sont pas trouvées on aura un KeyError et on va retrouver un httpResponseInvalidUserEmail.
00:02:11 :Et si jamais l'objet n'est pas trouvé donc si l'adresse email par exemple n'est pas valide on va retourner un 404.Donc dans les deux cas de figure que ce soit les clés ici qui ne sont pas trouvées dans le dictionnaire ou si jamais l'utilisateur n'est pas trouvé.
00:02:24 :Donc si on a un email valide mais que l'utilisateur n'est pas trouvé dans la base de données on aura aussi un 404.Donc ça va me permettre de récupérer l'utilisateur ici et on va le passer à CompleteOrder et également à l'autre fonction.
00:02:36 :Donc là je vais rajouter un paramètre on va mettre User et je vais le passer ici User égale User.Je vais enlever le return pour l'instant on va le mettre après on va retourner un httpResponse avec un statut de 200 si tout se passe bien.
00:02:48 :Et ici on va appeler le SafeShippingAddress on va passer le data et on va passer également l'utilisateur.Donc là je rajoute également l'utilisateur dans la fonction.
00:03:05 :Donc ici déjà on va devoir faire quelques modifications comme je vous disais puisqu'on n'a plus ces champs qui sont sur le panier.Donc on va enlever ces deux lignes et en fait tout ce qu'on va faire c'est supprimer le panier avec la méthode delete.
00:03:15 :Donc cette méthode delete si j'y accède en faisant commande B vous voyez que c'est celle-ci ici delete de mon modèle carte.Donc cette commande ici qui va changer le champ de mon article et ensuite enlever ces articles de mon panier.
00:03:29 :Donc ça c'est la première chose qu'on va faire.La deuxième chose qu'on va faire c'est également de récupérer les informations qui sont envoyées par Stripe pour sauvegarder l'identifiant de l'utilisateur.
00:03:39 :Donc pour savoir quelle est l'information que Stripe nous envoie qu'on va pouvoir récupérer pour sauvegarder cet identifiant on va retourner dans l'API.Donc là on était dans la partie avec l'objet session et si on descend un petit peu vous allez voir qu'on va trouver.
00:03:52 :Donc voilà l'endroit où on crée une session et on va avoir un exemple ici de tout ce qui nous est retourné par le webhook.Donc si on descend un petit peu on va voir qu'en fait on va avoir ici customer et c'est l'identifiant.
00:04:03 :Donc id of an existing customer et donc c'est ça qu'on va devoir récupérer.Vous voyez dans la réponse ici on a une clé qui s'appelle customer et qui va contenir l'identifiant du client qui a été créé du côté de Stripe.
00:04:15 :Donc si je reviens sur mon dashboard de Stripe si on va voir dans client vous allez voir qu'on a plein de clients qui ont déjà été créés iciqui correspondent à chaque fois qu'on a fait en fait un achat sur notre site.
00:04:25 :C'est des clients qui ont été créés en conséquence et si on clique sur un client on voit ici qu'on a l'identifiant.Donc c us tiré du bas est un identifiant pour ce client.
00:04:33 :Donc c'est ça qu'on va vouloir récupérer et mettre dans notre base de données puisqu'on avait rajouté un champ pour ça.Donc si je veux voir sur un utilisateur ici vous voyez qu'on a le Stripe ID.
00:04:41 :Donc c'est ça qu'on va vouloir récupérer.Donc dans ma fonction ici complete order je vais récupérer le Stripe ID à partir de data et la clé c'était customer.
00:04:51 :Donc on va mettre ça dans user.stripe-id.On va supprimer le cart.delete et on va faire un user.save pour sauvegarder ce Stripe ID tout simplement.Donc c'est tout ce qu'on a besoin de faire dans cette fonction et dans la deuxième fonction ici par contre on va récupérer l'adresse qui a été envoyée par Stripe.
00:05:08 :Donc voilà pour cette première fonction complete order qui nous permet de récupérer l'identifiant de Stripe et de supprimer le panier.Et dans la prochaine partie on va voir comment s'occuper donc de cette fonction qui va nous permettre de récupérer l'adresse que l'utilisateur a rentré au moment de faire son paiement sur Stripe.
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.