Accéder directement au contenu
Créez un compte ou connecter-vous
Logo de la documentation Stripe
/
Demander à l'assistant IA
Créez un compteConnectez-vous
Démarrer
Paiements
Revenus
Plateformes et marketplaces
Gestion de fonds
Ressources pour les développeurs
API et SDKAide
AperçuAccepter un paiementMettre votre intégration à niveau
Paiements en ligne
PrésentationTrouver votre cas d'usage
Utiliser Payment Links
Utiliser une page de paiement préconfiguré
Créer une intégration personnalisée avec Elements
Développer une intégration dans l'application
Utiliser Managed Payments
Paiements récurrents
Paiements par TPE
Terminal
Moyens de paiement
Ajouter des moyens de paiement
Gérer les moyens de paiement
Paiement accéléré avec Link
Opérations de paiement
Analyses
Soldes et délai de règlement
Conformité et sécurité
Devises
Refus de paiement
Litiges
Prévention de la fraude
Radar pour la protection contre la fraude
Virements
ReçusRemboursements et annulations
Intégrations avancées
Tunnels de paiement personnalisés
Acquisition flexible
Paiements hors session
Orchestration multiprestataire
Au-delà des paiements
Constituez votre entreprise
Cryptomonnaies
Commerce agentique
    Présentation
    Concepts clés
    Monétisez votre application MCP.
      Accepter un paiement
    Activer la vente en contexte sur les agents IA
Paiements automatiques
Financial Connections
Climate
Vérifier l'identité
États-Unis
Français (France)
AccueilPaiementsAgentic commerceMonetize your MCP app

Accepter un paiement

Acceptez des paiements en toute sécurité avec votre application MCP.

Vous pouvez collecter des paiements en dehors de votre application à l’aide d’une page de paiement hébergée par Stripe. Ce guide explique comment :

  • Définissez des outils Model Context Protocol (MCP) pour afficher des produits et permettre aux clients de sélectionner des éléments à acheter.
  • Collectez les informations de paiement avec une page de paiement préconfigurée et hébergée par Stripe
  • Surveillez les webhooks après un paiement réussi

Configurer Stripe

Pour configurer Stripe, ajoutez la bibliothèque Stripe API à votre back-end.

Command Line
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# Available as a gem sudo gem install stripe
Gemfile
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

Créer des produits et tarifs

Dans cet exemple, vous pouvez afficher un groupe de produits dans l’application MCP. Découvrez comment créer des produits et des prix dans le Dashboard ou à l’aide de l’interface en ligne de commande Stripe.

Enregistrez un outil MCP pour Checkout

Enregistrez un outil MCP qui crée une session Checkout pour un ensemble de Prices. Cet outil est appelé depuis l’application MCP lors d’une étape ultérieure.

server.js
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { registerAppTool, registerAppResource, RESOURCE_MIME_TYPE, } from "@modelcontextprotocol/ext-apps/server"; import { readFileSync } from "node:fs"; import Stripe from "stripe"; import { z } from "zod"; const stripe = new Stripe(
"sk_test_BQokikJOvBiI2HlWgH4olfQ2"
) const server = new McpServer({ name: "my-mcp-server", version: "1.0.0" }); const resourceUri = "ui://list-products.html"; async function createCheckoutSession(priceIds) { const lineItems = priceIds.map((price) => ({ price, quantity: 1 })); const session = await stripe.checkout.sessions.create({ mode: "payment", line_items: lineItems, success_url: "https://example.com/checkout/success", }); return session; } // Register the tool that creates a checkout session server.registerTool( "buy-products", { title: "Buy products", description: "Create a checkout page link for purchasing the selected products", inputSchema: { priceIds: z.array(z.string()) }, }, async ({ priceIds }) => { const session = await createCheckoutSession(priceIds); return { content: [ { type: "text", text: `[Complete your purchase here](${session.url})`, }, ], structuredContent: { checkoutSessionId: session.id, checkoutSessionUrl: session.url, }, }; } );

Enregistrez un outil et une ressource d’interface utilisateur

Configurez l’interface utilisateur de votre application MCP en enregistrant un outil MCP et une ressource. Cette interface utilisateur :

  1. Affiche la liste des produits
  2. Permet au client de sélectionner les produits à acheter
  3. Rediriger vers la page Stripe Checkout pour finaliser le paiement

Enregistrez un outil MCP de liste des produits

Créez un outil MCP de liste des produits. Sa fonction de rappel renvoie les ID de prix des produits à afficher dans l’interface utilisateur.

server.js
registerAppTool( server, "list-products", { title: "List products", description: "List the products available for purchase", _meta: { ui: { resourceUri } }, }, async () => { const suggestedProducts = [ // The price IDs from the earlier step { priceId:
"{{PRICE_ID}}"
, name: "Test product 1" }, { priceId:
"{{PRICE_ID}}"
, name: "Test product 2" }, ]; return { structuredContent: { products: suggestedProducts }, content: [], }; } );

Enregistrez une ressource d’interface utilisateur pour la liste des produits

Créez une ressource MCP pour le widget de liste de produits. Elle définit le code de l’interface utilisateur qui affiche les produits.

server.js
// Register the resource that serves the bundled HTML registerAppResource( server, "list-products-widget", resourceUri, { mimeType: RESOURCE_MIME_TYPE }, async () => { const html = readFileSync("dist/ui/list-products.html", "utf8"); return { contents: [ { uri: resourceUri, mimeType: RESOURCE_MIME_TYPE, text: html, }, ], }; } );

Cet exemple utilise une majoration minimale. Dans une application de production, vous pouvez utiliser un framework tel que React. Consultez la documentation des applications MCP pour découvrir d’autres exemples.

ui/list-products.html
<div id="root"></div> <script type="module" src="/ui/mcp-app.js"></script>
ui/mcp-app.js
import { App } from "@modelcontextprotocol/ext-apps"; const app = new App({ name: "ProductList", version: "1.0.0" }); // Establish communication with the host await app.connect(); /** * UI markup and event handlers */ const renderProduct = (product) => { return ` <label> <input type="checkbox" name="cart[]" value="${product.priceId}"> ${product.name} </label> `; }; const handleSubmit = async (event) => { // We'll fill this in next } const renderApp = (products) => { const root = document.querySelector("#root"); root.innerHTML = ` <h1>Select products to purchase</h1> <form id="product-form"> ${products.map(renderProduct).join("")} <button type="submit">Buy</button> </form> `; document .querySelector("#product-form") ?.addEventListener("submit", handleSubmit); }; /** * Render the list of products from the tool's structuredContent */ app.ontoolresult = (params) => { const { products } = params.structuredContent ?? {}; if (products) { renderApp(products); } };

Rediriger vers Checkout

Lorsque le client clique sur Acheter dans l’application MCP :

  1. Appelez l’outil que vous avez créé pour acheter un produit afin de générer une URL de session Checkout.
  2. Ouvrez l’URL de la session Checkout.

Mettez à jour la fonction handleSubmit :

ui/mcp-app.js
const handleSubmit = async (event) => { event.preventDefault(); const formData = new FormData(event.target); const priceIds = Array.from(formData.values()); // Call the buy-products tool to create a Checkout Session const { structuredContent } = await app.callServerTool({ name: "buy-products", arguments: { priceIds }, }); if (typeof structuredContent?.checkoutSessionUrl === "string") { await app.openLink({ url: structuredContent.checkoutSessionUrl }); } };

Gérez les commandes réussies

Vous pouvez gérer les commandes réussies en écoutant l’événement checkout.session.completed (et checkout.session.async_payment_succeeded pour les moyens de paiement différés), puis en appelant une fonction de réalisation idempotente qui récupère la session Checkout (en utilisant le paramètre expand pour inclure line_items), vérifie payment_status et traite les éléments.

Utilisez une page d’accueil success_url pour déclencher la réalisation immédiatement après la redirection, mais appuyez-vous sur des webhooks pour vous assurer que chaque paiement est traité.

Vous pouvez ensuite effectuer des tests en local avec l’interface en ligne de commande Stripe, puis déployer votre endpoint de webhook.

Découvrez comment traiter les paiements reçus avec l’API Checkout Sessions.

Voir aussi

  • Collecter des taxes
  • Collecter les informations de livraison et les autres données client
  • Personnalisez votre image de marque
  • Personnalisez votre page de confirmation de paiement
Cette page vous a-t-elle été utile ?
OuiNon
  • Besoin d'aide ? Contactez le service Support.
  • Consultez notre log des modifications.
  • Des questions ? Contactez l'équipe commerciale.
  • LLM ? Lire llms.txt.
  • Propulsé par Markdoc