Activer les achats en contexte via les agents d’IAVersion bêta privée
Découvrez comment permettre à vos entreprises de vendre leurs produits via des agents de chat basés sur l’IA.
Version bêta privée
Si vous souhaitez utiliser le commerce agentique pour vendre vos produits via des agents d’IA, y compris Instant Checkout dans ChatGPT, ou pour gérer les transactions entre clients et entreprises, inscrivez-vous sur la liste d’attente.
Partager des informations sur votre entreprise
Pour configurer votre plateforme et vos comptes connectés pour la vente agentique en contexte, fournissez les informations suivantes :
- ID du compte Stripe de la plateforme.
- ID des comptes connectés. Fournissez une liste d’ID de comptes connectés à activer pour la vente agentique en contexte. Vous pouvez envoyer une feuille de calcul ou un fichier texte, avec un ID de compte par ligne.
Charger les données de votre catalogue de produits dans Stripe
Préparer votre catalogue de produits
Créez un fichier CSV conforme à la spécification du catalogue de produits Stripe pour chaque compte connecté. Stripe fournit cette spécification séparément.
Charger les données du catalogue dans Stripe
Transmettez le flux via les API Stripe. Vous pouvez envoyer des mises à jour toutes les 15 minutes.
Utilisez l’environnement de test pour valider l’analyse, le mappage des champs et la qualité des données avant d’activer les mises à jour en production.
Commencez par charger le fichier CSV de votre catalogue de produits à l’aide de l’API Files. Une requête réussie renvoie un objet File, qui inclut l’id.
- Définissez
data_comme valeur du champmanagement_ manual_ upload purpose. - Assurez-vous que le type MIME correspond au format du fichier. Les formats acceptés incluent le CSV et le TSV, chaque ligne représentant un produit ou une variante.
- La taille maximale du fichier est de 200 Mo.
curl https://files.stripe.com/v1/files \ -u: \ -H "Stripe-Account: {{CONNECTED_ACCOUNT_ID}}" \ -F purpose=data_management_manual_upload \ -F file="@/path/to/your/file.csv;type=text/csv"sk_test_BQokikJOvBiI2HlWgH4olfQ2
Ensuite, utilisez l’API Data Management pour créer un ImportSet. Cet appel lance le traitement du catalogue et rend les données disponibles dans le Dashboard. Incluez les éléments suivants :
- L’ID
iddu fichier renvoyé - L’en-tête de prévisualisation (par exemple
Stripe-Version: 2025-09-30.)clover;udap_ beta=v1
curl https://api.stripe.com/v1/data_management/import_sets \ -H "Stripe-Version: 2025-09-30.clover;udap_beta=v1" \ -H "Stripe-Account: {{CONNECTED_ACCOUNT_ID}}" \ -u: \ -d file={{FILE_ID}} \ --data-urlencode standard_data_format="product_catalog_feed"sk_test_BQokikJOvBiI2HlWgH4olfQ2
Surveiller l’état du flux
Stripe traite les données du catalogue, les valide, les nettoie, puis les indexe et les convertit dans un format compatible avec les agents d’IA. Suivez l’avancement de l’indexation à l’aide du champ status de l’ensemble d’importation. Le statut peut être pending, failed, succeeded, succeeded_, pending_ ou archived.
curl https://api.stripe.com/v1/data_management/import_sets/{{IMPORT_SET_ID}} \ -u: \ -H "Stripe-Account: {{CONNECTED_ACCOUNT_ID}}"sk_test_BQokikJOvBiI2HlWgH4olfQ2
La réponse inclut le statut et les éventuelles erreurs :
{ "id": "impset_7MabcdZ8b617780e5145413", "object": "data_management.import_set", "created": 1643992696, "livemode": true, "result": { "errors": { "file": "file_234923sIENc", "row_count": 30 }, "rows_processed": 120, "successes": { "row_count": 90 } }, "status": "succeeded_with_errors" }
Si le statut de l’importation est succeeded_, vous pouvez télécharger le rapport d’erreurs :
- Recherchez le champ
result.dans la réponse.errors. file - Utilisez l’API Files pour récupérer le fichier d’erreurs à partir de son ID.
- Le fichier CSV téléchargé contient vos données d’origine, avec une colonne en tête nommée
stripe_expliquant la raison de l’échec de chaque ligne.error_ message
curl https://files.stripe.com/v1/files/{{ERROR_FILE_ID}}/contents \ -u:sk_test_BQokikJOvBiI2HlWgH4olfQ2
L’API renvoie un fichier CSV contenant uniquement les lignes en échec, avec une colonne stripe_ décrivant chaque erreur.
Assurer le traitement des achats et des commandes
Écoutez les webhooks Stripe pour suivre les commandes passées via des agents de chat IA.
Lorsqu’une commande est confirmée, Stripe émet des événements webhook que votre serveur peut traiter pour exécuter la logique de traitement. Configurez un endpoint sur votre serveur pour accepter, traiter et accuser réception de ces événements. Consultez le Guide des webhooks pour obtenir des instructions détaillées sur l’intégration et le test des webhooks Stripe.
Stripe émet les événements checkout. et payment_. Si votre logique de traitement des commandes gère déjà ces événements, aucune modification d’intégration supplémentaire n’est nécessaire. Vous pouvez personnaliser cette logique pour la vente agentique en contexte, par exemple en indiquant dans l’e-mail de confirmation de commande que le paiement a été effectué via un agent.
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY); // Use the secret provided by Stripe CLI for local testing // or your webhook endpoint's secret const endpointSecret = 'whsec_...'; app.post('/webhook', (request, response) => { const sig = request.headers['stripe-signature']; let event; try { event = stripe.webhooks.constructEvent(request.body, sig, endpointSecret); } catch (err) { response.status(400).send(`Webhook Error: ${err.message}`); return; } if (event.type === 'checkout.session.completed') { const session = event.data.object; // Fulfill the order using the session data fulfillCheckout(session.id); } response.status(200).send(); });
FacultatifCapture manuelle
Par défaut, les paiements sont capturés immédiatement lors de l’achat. Pour configurer la capture manuelle, activez-la dans le Dashboard. Lorsque la capture manuelle est activée, appelez la méthode de capture sur le PaymentIntent renvoyé dans le webhook décrit dans la section précédente.
FacultatifHook d’approbation manuelle
Par défaut, avant de confirmer un paiement, Stripe vérifie les stocks à partir des données de votre catalogue de produits et effectue des contrôles de fraude avec Radar. Si vous avez besoin d’un contrôle supplémentaire avant de finaliser un achat, configurez un hook d’approbation manuelle. Avant de finaliser le paiement, Stripe envoie une requête d’approbation à votre service, que vous pouvez ensuite approuver ou refuser.
Pour configurer un hook d’approbation manuelle :
- Spécifiez dans le Dashboard l’endpoint que Stripe appelle.
- Implémentez votre logique sur l’endpoint et utilisez les formats de requête et de réponse suivants.
Voici un exemple de requête d’approbation que Stripe envoie à votre service :
POST /stripe/v1/approve HTTP/1.1 Host: api.my-xyz.com Stripe-Version: V1 Stripe-Signature: CFweQMS7wvH4VHUuRbYHsuOJEzx9pCd5eMLBDPR8zAtLF4bgGF3Zo4pzhXR5c7/uCQeg4OnRC8ZjF3GCMuDNDQ== { "id": "cs_123", "created_at": 1663048712, "livemode": false, "amount_total": 2900, "currency": "usd", "line_items": { ... }, "payment_method_details": { "type": "card", "billing_details": { ... }, "card": { "brand": "discover", ... } } }
Voici des exemples de réponses permettant d’approuver ou de refuser la requête :
HTTP/1.1 200 OK Stripe-Version: V1 { "id": "cs_123", "result": { "type": "approved" } }
HTTP/1.1 200 OK Stripe-Version: V1 { "id": "cs_123", "result": { "type": "declined", "declined": { "reason": "low_inventory" } } }
FacultatifComposant intégré
Remarque
Ce composant intégré est en cours de développement actif. Les extraits de code sont fournis à titre illustratif uniquement et peuvent être modifiés.
Stripe propose un composant intégré pour faciliter l’onboarding des comptes connectés au commerce agentique. Ce composant hébergé par Stripe permet aux comptes connectés de gérer quels agents d’IA peuvent vendre leurs produits et de personnaliser la manière dont leur entreprise apparaît sur les plateformes d’agents.
L’exemple de code suivant montre comment votre plateforme peut s’intégrer à ce composant intégré. Pour plus de détails sur l’intégration des fonctionnalités du Dashboard à votre site Web, consultez Démarrer avec les composants intégrés Connect.
// server.js const stripe = require("stripe")( 'sk_123', { apiVersion: 'YYYY-MM-DD'} ); // POST /account_session_token const accountSession = await stripe.accountSessions.create({ account: '{{CONNECTED_ACCOUNT_ID}}', components: { agentic_commerce: { enabled: true, }, }, }, { apiVersion: `${STRIPE_API_VERSION}; embedded_connect_beta=v2`, }); response.json({ accountSessionToken: accountSession.client_secret });
// App.jsx import { ConnectAgenticCommerce, ConnectComponentsProvider, } from "@stripe/react-connect-js"; import { loadConnectAndInitialize } from "@stripe/connect-js"; const AgenticCommerce = () => { const [stripeConnectInstance] = React.useState(() => { const fetchClientSecret = async () => { const response = await fetch('/account_session', { method: "POST" }); if (!response.ok) { const {error} = await response.json(); console.log('An error occurred: ', error); return undefined; } else { const {client_secret: clientSecret} = await response.json(); return clientSecret; } }; return loadConnectAndInitialize({ publishableKey: "pk_123", fetchClientSecret: fetchClientSecret, }) }); return ( <div> <ConnectComponentsProvider connectInstance={stripeConnectInstance}> <ConnectAgenticCommerce /> </ConnectComponentsProvider> </div> ) }
FacultatifEnvoyer des mises à jour d’inventaire incrémentielles
En plus de charger votre catalogue de produits, vous pouvez envoyer des mises à jour unitaires de l’inventaire des produits via l’API Inventory Feed. Utilisez le même processus que pour le chargement du catalogue, mais définissez standard_ sur inventory_ :
# Step 1: Upload your CSV using the Files API curl https://files.stripe.com/v1/files \ -u: \ -H "Stripe-Account: {{CONNECTED_ACCOUNT_ID}}" \ -F purpose=data_management_manual_upload \ -F file="@/path/to/your/file.csv;type=text/csv" # Step 2: Create an ImportSet object curl https://api.stripe.com/v1/data_management/import_sets \ -H "Stripe-Version: 2025-09-30.clover;udap_beta=v1" \ -H "Stripe-Account: {{CONNECTED_ACCOUNT_ID}}" \ -usk_test_BQokikJOvBiI2HlWgH4olfQ2: \ -d file={{FILE_ID}} \ --data-urlencode standard_data_format="inventory_feed"sk_test_BQokikJOvBiI2HlWgH4olfQ2
FacultatifGérer les remboursements et les litiges
Si vous utilisez déjà l’API PaymentIntents ou l’API Checkout Sessions, votre intégration actuelle des remboursements et des litiges ne nécessite aucune modification pour la vente agentique en contexte. Des PaymentIntents sont toujours créés pour ces flux. Tant que vous associez l’ID PaymentIntent à votre commande, votre intégration des remboursements et des litiges continue de fonctionner.
Une fois le paiement effectué avec succès, vous pouvez initier un remboursement si un client annule la commande depuis votre site Web ou via le service client. Si vous utilisez déjà les API Checkout Sessions ou PaymentIntents, votre flux de remboursement existant fonctionne sans modification pour la vente agentique en contexte.
Gérez les remboursements et les litiges sans code depuis le Dashboard, à partir de la page Transactions.
Pour gérer les remboursements par voie programmatique, intégrez l’API Refunds pour les demandes d’annulation ou de remboursement après le paiement.