# Fonctionnement des extensions Découvrez comment personnaliser Stripe avec des extensions. Les extensions vous permettent d’exécuter une logique personnalisée à des emplacements désignés dans Stripe, appelés [points d’extension](https://docs.stripe.com/extensions/extension-points.md). Lorsque Stripe doit exécuter la logique à ces points d’extension, elle vérifie si une extension y est connectée et, si c’est le cas, exécute la logique personnalisée dans l’extension. Par exemple, Stripe définit un point d’extension pour les [calculs au prorata](https://docs.stripe.com/extensions/scripts/build-prorations-extension.md). Vous utilisez une extension conçue pour ce point d’extension. Lorsque Stripe atteint l’étape de calcul au prorata, elle exécute la logique de votre extension au lieu de la logique de calcul au prorata par défaut. La logique de l’extension détermine comment facturer au prorata et renvoie le montant du prorata. Stripe utilise le résultat et poursuit le processus de facturation. De même, dans [Workflows](https://docs.stripe.com/extensions/custom-actions/how-custom-actions-work.md), Stripe définit un point d’extension d’action personnalisé. Une extension associée à ce point d’extension appelle votre code pour envoyer un e-mail, mettre à jour un CRM ou effectuer toute autre opération que vous définissez. ## Fonctionnement du modèle Stripe définit des points d’extension, c’est-à-dire des emplacements spécifiques dans les produits Stripe où votre code peut s’exécuter. Chaque point d’extension spécifie : - **Entrée** : les données que Stripe envoie à votre extension lorsque le point d’extension est atteint, notamment les entrées de l’utilisateur de l’extension - **Sortie** : les données que votre extension doit renvoyer à Stripe - **Types de mise en œuvre autorisés** : quels types de mise en œuvre (scripts, fonctions distantes, ou les deux) vous pouvez utiliser à ce point d’extension (See full diagram at https://docs.stripe.com/extensions/how-extensions-work) Commencez par trouver le [point d’extension](https://docs.stripe.com/extensions/extension-points.md) pour votre cas d’usage. Vous créez votre logique personnalisée comme une extension qui s’intègre à un point d’extension. Les extensions sont proposées dans le cadre de [Stripe Apps](https://docs.stripe.com/stripe-apps.md), qui gère l’installation, les autorisations et la distribution. Vous pouvez avoir plusieurs extensions regroupées au sein de la même application, de tout type d’implémentation : [scripts](https://docs.stripe.com/extensions/how-extensions-work.md#scripts), [remote functions](https://docs.stripe.com/extensions/how-extensions-work.md#remote-functions) ou [UI Extensions](https://docs.stripe.com/extensions/how-extensions-work.md#ui-extensions). Les applications peuvent également contenir des [objets personnalisés](https://docs.stripe.com/custom-objects.md). ## Types de mise en œuvre Chaque point d’extension prend en charge un ou plusieurs types de mise en œuvre. Le type de mise en œuvre détermine où votre code s’exécute et comment il interagit avec les services externes. ### Scripts Les scripts sont des méthodes TypeScript qui s’exécutent sur le moteur d’exécution entièrement géré de Stripe. Vous n’avez pas besoin de gérer d’infrastructure, car c’est Stripe qui exécute votre code et vous effectuez le déploiement en téléchargeant votre application via la CLI Stripe. Les scripts exécutent votre logique métier lorsque Stripe atteint un point d’extension. Utilisez des scripts lorsque vous avez besoin d’effectuer ce qui suit : - Appliquer des règles d’entreprise complexes à l’aide de code comme le calcul d’une remise basée sur l’historique d’achat du client et les événements promotionnels. - Valider ou transformer des données avant qu’elles ne soient traitées par Stripe, par exemple pour vérifier si un client remplit les critères d’éligibilité. - Intégrer des données externes dans les opérations Stripe sans avoir à créer ni à maintenir de webhooks. - Réaliser des prototypes rapidement sans avoir à déployer ni à gérer vos propres services. Ce que les scripts peuvent faire dépend du point d’extension : - **Aux points d’extension de facturation** (solde client, gestion des éléments, calculs au prorata) : les scripts reçoivent des données de Stripe, exécutent votre logique et renvoient un résultat. Les appels à l’API externes ne sont pas autorisés. Ces points d’extension s’exécutent dans le pipeline de facturation, où Stripe limite les effets de bord afin de garantir la fiabilité. - **Au point d’extension de l’action personnalisée** (pour les flux) : les scripts peuvent effectuer des appels HTTP externes à l’aide d’`endpointFetch()`. Vous déclarez les endpoints dans le manifeste de votre application, et Stripe gère le stockage des clés secrètes et l’injection d’authentification via le [Secret Store](https://docs.stripe.com/stripe-apps/store-secrets.md). Cela est conçu pour les actions qui atteignent les services externes sans que vous ayez à gérer l’infrastructure. **Limitations :** aucune dépendance tierce. Appels à l’API externes uniquement pour les actions personnalisées de Workflows utilisant `endpointFetch()`. Prise en charge de TypeScript uniquement. Consultez la section sur le [comportement d’exécution des scripts](https://docs.stripe.com/extensions/scripts/build-prorations-extension.md#script-runtime-behavior) pour obtenir la liste complète des limitations. ### Fonctions distantes Les fonctions distantes sont des endpoints HTTP que vous hébergez sur votre propre infrastructure. Stripe appelle votre endpoint lorsque le point d’extension est atteint, en signant chaque requête avec une [signature webhook](https://docs.stripe.com/webhooks.md#verify-official-libraries) afin que vous puissiez vérifier qu’elle provient de Stripe. Vous gérez l’authentification pour tout service externe vos appels de code, Stripe n’injecte pas de clés secrètes pour les fonctions distantes. Vous vérifiez la signature Stripe entrante, et vous gérez vous-même l’autorisation sortante. Utilisez des fonctions distantes lorsque vous devez : - Exécuter la logique sur vos propres serveurs ou dans votre propre environnement - Intégrer vos propres systèmes tels que votre ERP ou votre CRM. - Utiliser un langage autre que TypeScript **Limites :** vous gérez l’hébergement, la disponibilité et le déploiement. Vos endpoints doivent répondre dans le délai défini par le point d’extension (par exemple, 20 secondes pour les actions personnalisées). ### Extensions d’interface utilisateur Composants React affichés dans le Dashboard Stripe. Utilisez une extension d’interface utilisateur pour proposer des éléments d’interface utilisateur personnalisés aux utilisateurs du Dashboard. Voir [Extensions d’interface utilisateur](https://docs.stripe.com/stripe-apps/how-ui-extensions-work.md). ### Choisir un type de mise en œuvre Si un point d’extension prend en charge à la fois les scripts et les fonctions distantes, utilisez ce tableau pour décider : | Considération | Script | Fonction distante | | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | Où elle s’exécute | Environnement d’exécution géré de Stripe | Votre infrastructure | | Langue | TypeScript | Toute langue (endpoint HTTP) | | Appels API externes | Dépendant des points d’extension. Autorisé pour les actions personnalisées (via `endpointFetch()`). Non autorisé pour les points d’extension de facturation. | Oui, vous effectuez des appels directement depuis vos serveurs | | Autorisation pour les services externes | Stripe injecte les secrets via la configuration de l’endpoint et le [Secret Store](https://docs.stripe.com/stripe-apps/store-secrets.md) (dans lequel les appels à l’API externes sont autorisés) | Vous gérez vous-même l’authentification | | Autorisation de Stripe vers votre code | N/A, votre code s’exécute sur Stripe | Stripe signe chaque requête. Vous [vérifiez la signature webhook](https://docs.stripe.com/webhooks.md#verify-official-libraries). | | Idéal pour | Logique qui n’a pas besoin de votre propre infrastructure | Logique qui nécessite vos propres systèmes, transformations ou langages autres que TypeScript | | Limites | Aucune dépendance tierce, pas de `fetch()` brut, TypeScript uniquement | Vous gérez l’hébergement, la disponibilité et le déploiement | ## Autorisations Lorsque vous créez une extension, vous devez déclarer les autorisations dont votre extension a besoin. Une extension ne peut accéder qu’aux données pour lesquelles elle a reçu l’autorisation de lecture ou d’écriture. Les utilisateurs d’extensions accordent ces autorisations lors de l’installation de l’application contenant les extensions. Consultez la liste complète de toutes les [autorisations](https://docs.stripe.com/stripe-apps/reference/permissions.md). ## Cycle de vie La création d’une extension suit le cycle de vie suivant : 1. **Création** : vous créez une extension au sein d’une application Stripe. 1. **Téléchargement** : vous téléchargez l’application à l’aide de l’interface CLI de Stripe qui la traite et la rend disponible à l’installation. 1. **Version** (optionnelle) : vous téléchargez de nouvelles versions au fur et à mesure de vos itérations. 1. **Publication** (optionnelle) : vous partagez l’application via un [canal de test externe](https://docs.stripe.com/stripe-apps/test-app.md) ou la plateforme [Stripe App Marketplace](https://docs.stripe.com/stripe-apps/publish-app.md). Elle devient alors disponible pour installation sur les comptes de vos clients. 1. **Installation** : vous, ou vos clients avec lesquelles l’application est partagée, l’installez en acceptant les autorisations associées. 1. **Activation** : l’utilisateur de l’application active une extension à son point d’extension. 1. **Invocation** : Stripe sollicite l’extension activée chaque fois qu’elle atteint le point d’extension. 1. **Désactivation** : l’utilisateur de l’application désactive l’extension. Celle-ci reste associée au compte, mais Stripe ne la sollicite plus lorsqu’elle atteint le point d’extension. 1. **Désinstallation** : l’utilisateur supprime l’application et ses extensions de son compte. ## Démarrer la création Le guide que vous suivez dépend du point d’extension pour lequel vous créez : - [Créez une extension de script de facturation](https://docs.stripe.com/extensions/scripts/build-prorations-extension.md) pour personnaliser le solde client, la gestion des éléments ou le comportement du calcul au prorata. - [Créez une action de flux de travail personnalisée à l’aide d’un script](https://docs.stripe.com/extensions/custom-actions/build-with-script.md) ou de [fonctions distantes](https://docs.stripe.com/extensions/custom-actions/build-with-remote-function.md). Apprenez davantage sur le [mode de fonctionnement des actions personnalisées](https://docs.stripe.com/extensions/custom-actions/how-custom-actions-work.md). Pour obtenir la liste complète des points d’extension disponibles et de leurs types de mises en œuvre prises en charge, consultez [Points d’extension](https://docs.stripe.com/extensions/extension-points.md).