Compléter la transaction

Exclusif Premium

Débloquez votre potentiel ! ✨

Cette session fait partie de notre programme Premium exclusif

+100h de formations exclusives
+180 exercices de code avancés
+100h de mentorats en réécriture
20 projets guidés pas à pas
Mentorats groupés hebdomadaires
Support individuel avec nos mentors

Prêt à passer au niveau supérieur ?

Découvrez tous les avantages Premium et transformez votre apprentissage dès aujourd'hui!

Inscris-toi

(c'est gratuit !)

Un compte est nécessaire pour participer aux discussions.

Créer un compte

Toutes les questions

Fred

14 novembre 2024

Résolue
1 réponse

Erreur dans la vidéo sur le modèle Cart

Bonjour, il me semble qu'il y a une erreur dans la vidéo. Le code qui est utilisé ici n'est pas le même que celui auquel j'arrive en suivant les vidéos précédentes. En effet la je me retrouve avec un Cart qui n'a que l'utilisateur et une liste d'order; les champs ordered et ordered_date étant dans le modèle Order et non Cart. Je crois que c'est du à la vidéo intitulée modifier la suppression du panier dans le chapitre 6 : Gestion du panier utilisateur. Pourrais tu vérifier stp?

Gabriel Trouvé

16 mars 2023

Résolue
2 réponses

Est-ce que j'ai bien fait ?

Bonsoir,Je pense que j'ai bien fait car j'ai le même résultat que dans ta vidéo.En fait les modèles Cart et Order ne sont pas les mêmes quand la vidéo "compléter la transaction". Car en cours de route on avait fait une modif "Modifier les modèles Order et Cart".Du coup au lieu de faire :j'ai modifié la fonction complete_orderdef complete_order(data): try: user_email = data['customer_details']['email'] except KeyError: return HttpResponse("Invalid user email", status=404) user = get_object_or_404(Shopper, email=user_email) user.cart.delete() # 200 pour indiquer que le paiement a été procéssé correctement return HttpResponse(status=200) Car on avait surchargé la méthode delete du modèle Cart :class Cart(models.Model): # one to one car l'utilisateur ne peut avoir qu'un seul panier. Si j'utilise Foreign als unique=True user = models.OneToOneField(AUTH_USER_MODEL, on_delete=models.CASCADE) # plusieurs articles peuvent être ajoutés donc ManytoMany orders = models.ManyToManyField(Order) def __str__(self): return self.user.username def delete(self, *args, **kwargs): for order in self.orders.all(): order.ordered = True order.ordered_date = timezone.now() order.save() # je détache les articles de mon panier avec clear self.orders.clear() super().delete(*args, **kwargs) Au final j'ai le même résultat que dans la vidéo.Donc je pense que se servir de la méthode delete de Cart était la meilleure solution ?Merci

Christian Aucane

14 janvier 2023

Résolue
1 réponse

envoyer l'email a stripe

Comment faire pour envoyer dirrectement l'email a stripe pour éviter que l'utilisateur ne rentre une autre adresse ?

Thibaut44300

23 janvier 2023

Résolue
10 réponses

Status 404 dans le webhook de stripe

Le web_hook me renvois un status de 404 sur tout mes évenements, alors que sur ma vue stripe_webhook il est bien spécifié qu'il me retourne un status 400 en cas d'une ValueError, et un status 200 pour un checkout.session.completed.@csrf_exempt def stripe_webhook(request): payload = request.body sig_header = request.META['HTTP_STRIPE_SIGNATURE'] endpoint_secret = "whsec_de13345002dc7bc7b5b2eee23a56e5094d4bf744e6752c19280ec8d665649f35" event = None try: event = stripe.Webhook.construct_event( payload, sig_header, endpoint_secret ) except ValueError as e: # Invalid payload return HttpResponse(status=400) except stripe.error.SignatureVerificationError as e: # Invalid signature return HttpResponse(status=400) if event['type'] == 'checkout.session.completed': data = event['data']['object'] return completed_order(data) # Passed signature verification return HttpResponse(status=200) (.env) MacBook-Pro-de-Thibaut:DocShop thibaut$ stripe listen --forward-to 127.0.0.1:8000/stripe-webhook/A newer version of the Stripe CLI is available, please update to: v1.13.8> Ready! You are using Stripe API Version [2022-11-15]. Your webhook signing secret is whsec_de13345002dc7bc7b5b2eee23a56e5094d4bf744e6752c19280ec8d665649f35 (^C to quit)2023-01-12 16:52:22  --> checkout.session.expired [evt_1MPT4kFUn0aAiyLrOnt0tnTe]2023-01-12 16:52:22 <-- [404] POST http://127.0.0.1:8000/stripe-webhook/ [evt_1MPT4kFUn0aAiyLrOnt0tnTe]2023-01-12 16:53:21  --> charge.succeeded [evt_3MPT5fFUn0aAiyLr2hRo14j7]2023-01-12 16:53:21 <-- [404] POST http://127.0.0.1:8000/stripe-webhook/ [evt_3MPT5fFUn0aAiyLr2hRo14j7]2023-01-12 16:53:21  --> payment_intent.succeeded [evt_3MPT5fFUn0aAiyLr22Efq3Sn]2023-01-12 16:53:21 <-- [404] POST http://127.0.0.1:8000/stripe-webhook/ [evt_3MPT5fFUn0aAiyLr22Efq3Sn]2023-01-12 16:53:21  --> payment_intent.created [evt_3MPT5fFUn0aAiyLr2fFwD6KG]2023-01-12 16:53:21  --> checkout.session.completed [evt_1MPT5hFUn0aAiyLrN4jdLBEp]2023-01-12 16:53:21 <-- [404] POST http://127.0.0.1:8000/stripe-webhook/ [evt_3MPT5fFUn0aAiyLr2fFwD6KG]2023-01-12 16:53:21 <-- [404] POST http://127.0.0.1:8000/stripe-webhook/ [evt_1MPT5hFUn0aAiyLrN4jdLBEp]Est-ce normal?

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.

Rechercher sur le site

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.