Résolue

Stripe : création d'un client

# Stripe

Gabriel Trouvé

Mentor

Re,

Promis dernière question pour aujourd'hui ^^

Dans ma conditon :

 if request.user.stripe_id:
        checkout_data["customer"] = request.user.stripe_id
    else:
        checkout_data["customer_email"] = request.user.email
        checkout_data["customer_creation"] = "always"

Du code ci-dessous.
Si j'ai déjà un stripe_id je le passe à "customer". Du coup en faisant ça stripe récupère automatiquement l'adresse mail du client ?
Ou le "customer_email" je devrais le mettre à la fois dans le if et le else ?

def create_checkout_session(request):
    # récupérer le panier
    cart = request.user.cart

    # compréhension de liste line_items :
    line_items = [{"price": order.ticket.stripe_id,
                   "quantity": order.quantity} for order in cart.orders.all()]
    # voir la doc https://stripe.com/docs/payments/accept-a-payment
    # créer un objet de type Session
    # https://stripe.com/docs/api/checkout/sessions/create
    checkout_data = {
        "locale": "fr",
        "line_items": line_items,
        "mode": 'payment',
        # voir ds la doc. On passe un dico avec une liste de pays autorisés
        "shipping_address_collection": {"allowed_countries": ["FR", "BE"]},
        # il faut une url absolue car je suis sur Stripe à ce moment-
        "success_url": request.build_absolute_uri(reverse('store:success')),
        "cancel_url": 'http://127.0.0.1:8000',
    }
    if request.user.stripe_id:
        checkout_data["customer"] = request.user.stripe_id
    else:
        checkout_data["customer_email"] = request.user.email
        checkout_data["customer_creation"] = "always"

    session = stripe.checkout.Session.create(**checkout_data)

    return redirect(session.url, code=303)

Merci

Salut Gab !

Oui si tu passes le stripe_id existant du client à "customer", Stripe récupérera automatiquement l'adresse e-mail correspondant à ce stripe_id car il aura l'information de son côté.

Tu n'as donc pas besoin de répéter l'adresse e-mail dans le bloc "else" parce que cela ne s'appliquerait que si le client n'a pas de stripe_id.

Dans ce cas, tu définis "customer_email" avec l'adresse e-mail du client et "customer_creation" sur "always" pour créer un nouveau client dans Stripe si nécessaire donc c'est tout bon :)

Gabriel Trouvé

Mentor

Super merci ! :)

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

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