Accéder directement au contenu
Créez un compte
ou
connecter-vous
Logo de la documentation Stripe
/
Demander à l'assistant IA
Créez un compte
Connectez-vous
Démarrer
Paiements
Revenus
Plateformes et places de marché
Gestion de fonds
Ressources pour les développeurs
Aperçu
À propos des paiements Stripe
Mettre votre intégration à niveau
Analyses des paiements
Paiements en ligne
PrésentationTrouver votre cas d'usageManaged Payments
Utiliser Payment Links
Créer une page de paiement
    Présentation
    Solutions de démarrage rapide
    Personnaliser l'apparence
    Collecter des informations supplémentaires
    Collecter des taxes
    Mise à jour dynamique lors du paiement
    Gérer votre catalogue de produits
      Gérer un stock limité
      Autoriser les modifications de quantité
      Offrir aux clients la possibilité de payer le montant de leur choix
    Abonnements
    Gérer les moyens de paiement
    Offrir aux clients la possibilité de payer dans leur devise locale
    Ajoutez des réductions, des ventes incitatives et des articles facultatifs
    Configurer des paiements futurs
    Enregistrer les coordonnées bancaires lors du paiement
    Approuver manuellement les paiements sur votre serveur
    Après le paiement
    Liste des modifications de la version bêta d'Elements avec l'API Checkout Sessions
    Migrer depuis l'ancienne version de Checkout
    Migrer vers Checkout pour utiliser Prices
Développer une intégration avancée
Développer une intégration dans l'application
Moyens de paiement
Ajouter des moyens de paiement
Gérer les moyens de paiement
Paiement accéléré avec Link
Interfaces de paiement
Payment Links
Checkout
Elements pour le web
Elements intégrés à l'application
Scénarios de paiement
Gérer plusieurs devises
Tunnels de paiement personnalisés
Acquisition flexible
Orchestration
Paiements par TPE
Terminal
Au-delà des paiements
Constituez votre entreprise
Cryptomonnaies
Financial Connections
Climate
AccueilPaiementsBuild a checkout pageManage your product catalog

Autoriser les modifications de quantité

Offrez à vos clients la possibilité d'ajuster la quantité des postes au moment du paiement.

Les postes de chaque session Checkout permettent de garder une trace des achats de votre client. Vous pouvez configurer la session Checkout de façon à ce que les clients puissent ajuster les quantités d’articles au moment du paiement.

Activer les quantités modifiables
Côté serveur

Remarque

Certaines actions de mise à jour des postes, telles que la possibilité d’ajouter de nouveaux postes, ne sont pas prises en charge pour cette intégration.

Définissez adjustable_quantity sur vos line_items lors de la création d’une session Checkout pour permettre à vos clients de modifier la quantité d’un poste lors du paiement.

Command Line
cURL
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "line_items[0][price_data][currency]"=usd \ -d "line_items[0][price_data][product_data][name]"=T-shirt \ -d "line_items[0][price_data][unit_amount]"=2000 \ -d "line_items[0][quantity]"=1 \ -d "line_items[0][adjustable_quantity][enabled]"=true \ -d "line_items[0][adjustable_quantity][maximum]"=100 \ -d "line_items[0][adjustable_quantity][minimum]"=0 \ -d mode=payment \ -d ui_mode=custom \ -d return_url={{RETURN_URL}}

Vous pouvez personnaliser les paramètres par défaut des quantités minimales et maximales autorisées en définissant adjustable_quantity.minimum et adjustable_quantity.maximum. Par défaut, la quantité modifiable minimale d’un poste est de 0 et la quantité modifiable maximale est de 99. Vous pouvez spécifier une valeur allant jusqu’à 999 999 pour adjustable_quantity.maximum.

Checkout empêche le client de retirer un poste lorsqu’il s’agit du seul restant.

Mettre à jour les quantités des postes
Côté client

Utilisez updateLineItemQuantity pour modifier la quantité d’un poste suite à l’action d’un client, par exemple s’il clique sur un bouton pour augmenter la quantité. Transmettez l’ID du poste et la nouvelle quantité :

index.html
<button class="increment-quantity-button" data-line-item="{{line item ID}}">+</button>
checkout.js
stripe.initCheckout({fetchClientSecret}).then((checkout) => { const button = document.querySelector('.increment-quantity-button'); const lineItem = button.getAttribute("data-line-item"); const quantity = checkout.session().lineItems.find((li) => li.id === lineItem).quantity; button.addEventListener('click', () => { checkout.updateLineItemQuantity({ lineItem, quantity: quantity + 1, }) }) });

Gérer les transactions réussies
Côté serveur

Une fois le paiement effectué, vous pouvez lancer une requête sur les postes finalisés et leurs quantités. Si votre client supprime un poste, celui-ci est également supprimé de la réponse relative aux postes. Consultez le guide d’exécution pour apprendre à créer un gestionnaire d’événements pour traiter les sessions Checkout terminées.

Remarque

Pour tester votre gestionnaire d’événements, installez la CLI Stripe et utilisez stripe listen --forward-to localhost:4242/webhook pour transmettre des événements à votre serveur local.

Ruby
# Set your secret key. Remember to switch to your live secret key in production! # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
"sk_test_BQokikJOvBiI2HlWgH4olfQ2"
require 'sinatra' # You can find your endpoint's secret in your webhook settings endpoint_secret = 'whsec_...' post '/webhook' do event = nil # Verify webhook signature and extract the event # See https://stripe.com/docs/webhooks#verify-events for more information. begin sig_header = request.env['HTTP_STRIPE_SIGNATURE'] payload = request.body.read event = Stripe::Webhook.construct_event(payload, sig_header, endpoint_secret) rescue JSON::ParserError => e # Invalid payload return status 400 rescue Stripe::SignatureVerificationError => e # Invalid signature return status 400 end if event['type'] == 'checkout.session.completed' checkout_session = event['data']['object'] line_items = Stripe::Checkout::Session.list_line_items(checkout_session['id'], {limit: 100}) # Fulfill the purchase... begin fulfill_order(checkout_session, line_items) rescue NotImplementedError => e return status 400 end end status 200 end def fulfill_order(checkout_session, line_items) # TODO: Remove error and implement... raise NotImplementedError.new(<<~MSG) Given the Checkout Session "#{checkout_session.id}" load your internal order from the database here. Then you can reconcile your order's quantities with the final line item quantity purchased. You can use `checkout_session.metadata` and `price.metadata` to store and later reference your internal order and item ids. MSG end
Cette page vous a-t-elle été utile ?
OuiNon
Besoin d'aide ? Contactez le service Support.
Rejoignez notre programme d'accès anticipé.
Consultez notre log des modifications.
Des questions ? Contactez l'équipe commerciale.
LLM ? Lire llms.txt.
Propulsé par Markdoc