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
Developer resources
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
      Personnalisation dynamique des options d'expédition
      Mise à jour dynamique des postes de facture
    Gérer votre catalogue de produits
    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
Web Elements
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
Beyond payments
Incorporate your company
Cryptomonnaies
Financial Connections
Climate
AccueilPaiementsBuild a checkout pageDynamically update checkout

Mettre à jour dynamiquement les postesVersion bêta privée

Mettez à jour les postes en réponse aux modifications apportées lors du paiement.

Version bêta privée

Cette fonctionnalité est disponible en version bêta privée. Request access to dynamic updates to checkout.

Découvrez comment ajouter, supprimer ou mettre à jour dynamiquement les postes inclus dans une session Checkout.

Cas d’usage

Ce guide vous explique comment mettre à jour des postes pour augmenter la vente d’un abonnement, mais vous pouvez également :

  • Vérifier l’inventaire : effectuez une vérification de vos stocks et réservez des articles lorsque les clients tentent de modifier des quantités d’articles.
  • Ajout de nouveaux produits : Ajoutez un produit gratuit si le total de la commande dépasse un certain montant.
  • Mise à jour des tarifs de livraison : Si le total de la commande change, mettez à jour les frais de livraison en combinant la méthode décrite dans ce guide avec celle indiqués à la rubrique Personnalisation des options de livraison lors du paiement.
  • Mise à jour des taux de taxe : Si vous n’utilisez pas Stripe Tax, vous pouvez mettre à jour de manière dynamique les taux de taxe appliqués aux postes de facture en fonction de l’adresse de livraison saisie.

Configurer le SDK
Côté serveur

Utilisez nos bibliothèques officielles pour accéder à l’API Stripe depuis votre application :

Command Line
Ruby
gem install stripe -v 15.1.0-beta.2

Mettre à jour le SDK du serveur
Côté serveur

Pour utiliser cette version bêta, commencez par mettre à jour votre SDK afin d’utiliser l’en-tête checkout_server_update_beta=v1 de la version bêta.

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'
Stripe.api_version = '2025-03-31.basil; checkout_server_update_beta=v1;'

Configurer les autorisations de mise à jour de Checkout Session
Côté serveur

Transmettez permissions.update_line_items=server_only lors de la création de la session Checkout pour activer la mise à jour des postes à partir de votre serveur. La transmission de cette option désactive également les mises à jour des postes côté client, tels que updateLineItemQuantity, ce qui garantit que toutes les mises à jour transitent par votre serveur.

Command Line
cURL
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -H "Stripe-Version: 2025-03-31.basil; checkout_server_update_beta=v1;" \ -d ui_mode=custom \ -d "permissions[update_line_items]"=server_only \ -d "line_items[0][price]"=
{{PRICE_ID}}
\ -d "line_items[0][quantity]"=1 \ -d mode=subscription \ --data-urlencode return_url="https://example.com/return"

Mise à jour dynamique des postes
Côté serveur

Créez un nouvel endpoint sur votre serveur pour mettre à jour les postes de la session Checkout. Vous l’appellerez à partir du front-end dans une étape ultérieure.

Conseil en matière de sécurité

Il est essentiel de comprendre que le code côté client s’exécute dans un environnement entièrement contrôlé par l’utilisateur. Un utilisateur malveillant peut contourner votre validation côté client, intercepter et modifier les requêtes, ou même créer des requêtes entièrement nouvelles pour votre serveur.

Pour concevoir l’endpoint, nous recommandons ce qui suit :

  • Concevez des endpoints pour des interactions spécifiques avec le client plutôt que de les formuler de manière trop générique (par exemple, « ajouter un article de vente croisée » plutôt qu’une action générale comme « mettre à jour »). Des endpoints spécifiques contribuent à la clarté de l’objectif et facilitent l’écriture et le maintien de la logique de validation.
  • Évitez de transmettre les données de session directement du client à votre endpoint. Les clients malveillants peuvent modifier les données de requête, ce qui en fait une source peu fiable pour déterminer l’état de la session Checkout. Transmettez plutôt l’ID de session à votre serveur et utilisez-le pour récupérer en toute sécurité les données auprès de l’API de Stripe.
Ruby
require 'sinatra' require 'json' require 'stripe' set :port, 4242 # 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'
Stripe.api_version = '2025-03-31.basil; checkout_server_update_beta=v1;' MONTHLY_PRICE_ID = '{{MONTHLY_PRICE}}' YEARLY_PRICE_ID = '{{YEARLY_PRICE}}' post '/change-subscription-interval' do content_type :json request.body.rewind request_data = JSON.parse(request.body.read) checkout_session_id = request_data['checkout_session_id'] interval = request_data['interval'] if checkout_session_id.nil? || !['yearly', 'monthly'].include?(interval) status 400 return { type: 'error', message: 'We could not process your request. Please try again later.' }.to_json end begin # 1. Create the new line items for the session new_price = interval == 'yearly' ? YEARLY_PRICE_ID : MONTHLY_PRICE_ID line_items = [{ price: new_price, quantity: 1, }] # 2. Update the Checkout Session with the new line items. Stripe::Checkout::Session.update(checkout_session_id, { line_items: line_items, }) # 3. Return success response. { type: 'success' }.to_json rescue Stripe::StripeError # Handle Stripe errors with a generic error message status 400 { type: 'error', message: 'We couldn't process your request. Please try again later.' }.to_json rescue StandardError # Handle unexpected errors status 500 { type: 'error', message: 'Something went wrong on our end. Please try again later.' }.to_json end end

Lorsque vous mettez à jour des postes, vous devez retransmettre l’intégralité du tableau des postes.

  • Pour conserver un poste existant, indiquez son id.
  • Pour mettre à jour un poste existant, indiquez son id ainsi que les nouvelles valeurs des champs à mettre à jour.
  • Pour ajouter un nouveau poste, indiquez un prix dans price et une quantité dans quantity sans saisir un id.
  • Pour supprimer un poste existant, omettez l’ID du poste dans le tableau retransmis.
  • Pour modifier l’ordre d’un poste, indiquez son id à l’endroit souhaité dans le tableau retransmis.

Mettre à jour le SDK du client
Côté client

Initialisez stripe.js avec l’en-tête bêta custom_checkout_server_updates_1.

checkout.js
const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
, { betas: ['custom_checkout_server_updates_1'], });

Appeler les mises à jour du serveur
Côté client

Déclenchez la mise à jour à partir de votre front-end en envoyant une requête à votre serveur et en l’incluant dans runServerUpdate. Si la demande aboutit, l’objet Session est mis à jour avec les nouveaux postes.

index.html
<button id="change-subscription-interval" role="switch" aria-checked="false"> Save with a yearly subscription </button>
checkout.js
document.getElementById('change-subscription-interval') .addEventListener("click", async (event) => { const button = event.target; const isCurrentSubscriptionMonthly = button.getAttribute("aria-checked") === "false"; const updateCheckout = () => { return fetch("/change-subscription-interval", { method: "POST", headers: { "Content-type": "application/json", }, body: JSON.stringify({ checkout_session_id: checkout.session().id, interval: isCurrentSubscriptionMonthly ? "yearly" : "monthly", }) }); }; const response = await checkout.runServerUpdate(updateCheckout); if (!response.ok) { // Handle error state return; } // Update toggle state on success const isNewSubscriptionMonthly = !isCurrentSubscriptionMonthly; button.setAttribute("aria-checked", !isNewSubscriptionMonthly); button.textContent = isNewSubscriptionMonthly ? "Save with a yearly subscription" : "Use monthly subscription"; });
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