# Intégration côté serveur Configurez l'intégration de votre back-end Stripe. Pour mettre en place une intégration de back-end optimale, vous devez vous identifier auprès de Stripe, vous familiariser avec les bonnes pratiques en matière de requêtes à l’API et configurer vos webhooks de manière appropriée. ## S’identifier sur Stripe Stripe propose l’authentification au moyen d’une clé API. Vous pouvez également créer des [clés d’accès limité](https://docs.stripe.com/keys-best-practices.md#limit-access) pour mieux contrôler l’accès à des ressources spécifiques. Vous pouvez utiliser les [clés API secrètes et publiques](https://docs.stripe.com/keys.md#obtain-api-keys) pour créer des tokens, mais vous avez besoin de clés secrètes pour toute authentification côté serveur. Voici un exemple d’appel à l’API : ```curl curl https://api.stripe.com/v1/balance \ -u "<>:" ``` ## Bonnes pratiques en matière de requêtes d’API Stripe recommande l’ajout d’une [clé d’idempotence](https://docs.stripe.com/api/idempotent_requests.md) à toutes les requêtes POST. Assurez-vous que la clé est unique. Il peut par exemple s’agir d’un identifiant unique universel ou d’une combinaison d’ID de clients et d’ID de commande. Ces clés vous permettent de relancer en toute sécurité des requêtes en cas d’erreur de réseau. ### Objets Customer : enregistrer les informations de paiement Pour stocker et réutiliser les *PaymentMethods* (PaymentMethods represent your customer's payment instruments, used with the Payment Intents or Setup Intents APIs), vous devez les associer à des [objets Customer](https://docs.stripe.com/payments/save-and-reuse.md). Après avoir associé la PaymentMethod à un Customer, stockez l’[ID du Customer](https://docs.stripe.com/api/customers/object.md#customer_object-id) et l’[ID du PaymentMethod](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-id) dans votre système pour l’utiliser pour les paiements futurs. Étant donné qu’un objet Customer peut avoir une [liste de multiples moyens de paiement](https://docs.stripe.com/api/payment_methods/list.md), vous devez spécifier à la fois l’ID du client et l’ID du PaymentMethod lorsque vous créez un paiement ultérieur. Voici un exemple de création d’un objet Customer associé à un PaymentMethod : ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" \ -d name="Jenny Rosen" \ --data-urlencode email="jenny.rosen@stripe.com" \ -d payment_method={PAYMENT_METHOD_ID} ``` ### Remboursements Les remboursements sont gérés avec l’API [Refunds](https://docs.stripe.com/api/refunds.md) et peuvent être complets ou partiels. Pour rembourser une transaction avec Stripe, vous aurez besoin de l’ID du PaymentIntent ou de l’ID du paiement correspondant à la transaction que vous souhaitez rembourser. Les remboursements utilisent votre solde Stripe *disponible* et ne peuvent pas utiliser votre solde en cours. Si votre solde disponible n’a pas de fonds suffisants pour couvrir le montant du remboursement, Stripe débitera le montant restant de votre compte bancaire. Vous pouvez émettre des remboursements partiels, des remboursements complets et plus d’un remboursement pour un paiement, mais vous ne pouvez pas rembourser un total supérieur au moment du paiement original. Vous pouvez émettre des remboursements en utilisant l’[API](https://docs.stripe.com/api.md) ou le [Dashboard](https://dashboard.stripe.com/test/dashboard). Une fois émis, vous ne pouvez plus supprimer un remboursement. Il apparaît sur le relevé du client sous [5 à 10 jours ouvrables](https://support.stripe.com/questions/customer-refund-processing-time). Si un client s’interroge sur l’état de son remboursement, vous pouvez lui [fournir l’ARN](https://support.stripe.com/questions/acquirer-reference-number-\(arn\)-for-refunds) pour qu’il puisse formuler une demande auprès de sa banque concernant le remboursement. Voici un exemple de remboursement d’un PaymentIntent : ```curl curl https://api.stripe.com/v1/refunds \ -u "<>:" \ -d payment_intent={PAYMENT_INTENT_ID} ``` Voici un exemple de remboursement partiel avec un montant spécifié : ```curl curl https://api.stripe.com/v1/refunds \ -u "<>:" \ -d payment_intent={PAYMENT_INTENT_ID} \ -d amount=1000 ``` ### Litiges et contestations de paiement Votre entreprise est responsable de la gestion des [litiges (également appelés contestations de paiement)](https://docs.stripe.com/disputes.md). Nous vous recommandons de surveiller activement les litiges, de recueillir et de soumettre des preuves pour attester du bien-fondé des paiements, le cas échéant. Dans l’attente d’une décision, nous bloquons les fonds contestés et les déduisons de votre solde Stripe. Nous vous restituons les fonds si vous remportez le litige. Vous pouvez surveiller les litiges de deux manières : - Utilisez le Dashboard Stripe et les notifications par e-mail que vous pouvez configurer dans vos paramètres [Informations personnelles](https://dashboard.stripe.com/settings/user). - En cas de litige, vous pouvez pleinement automatiser la réponse et la soumission des preuves via l’API [Disputes](https://docs.stripe.com/api/disputes.md). ## Configurer des webhooks Vous pouvez utiliser des *webhooks* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) pour capturer les événements qui se produisent sur votre compte (notamment les versements réalisés sur votre compte bancaire, les remboursements, les paiements, etc.). Les webhooks sont utiles pour gérer les [événements](https://docs.stripe.com/api/events.md) Stripe qui ont lieu de manière asynchrone, ou ceux pour lesquels vous souhaitez déclencher des actions supplémentaires. ![](https://b.stripecdn.com/docs-statics-srv/assets/webhooks-endpoints.871d5a30be8e59762e191fa45b0421a2.png) Voir le webhook que nous recommandons pour chaque type : | **Type de webhook** | **Webhooks recommandés** | | -------------------------- | ---------------------------------------------------------------------------------------------- | | **Paiements** | - `charge.succeeded` - `charge.failed` - `charge.refunded` | | **Remboursements** | - `refund.created` - `refund.failed` | | **Virements** | - `payout.created` - `payout.paid` - `payout.failed` | | **Intentions de paiement** | - `payment_intent.succeeded` - `payment_intent.payment_failed` - `payment_intent.canceled` | | **Litiges** | - `radar.early_fraud_warning.created` - `charge.dispute.created` - `charge.dispute.closed` | Utilisez les ressources suivantes pour mettre en place vos webhooks et vous assurer qu’ils ont été configurés correctement : - [Webhooks](https://docs.stripe.com/webhooks.md) - [Vérifier les signatures des webhooks](https://docs.stripe.com/webhooks.md#verify-events) - [Types d’événements](https://docs.stripe.com/api/events/types.md) - [Bonnes pratiques en matière d’utilisation des webhooks](https://docs.stripe.com/webhooks.md#best-practices) - [Vérifier la configuration de vos webhooks](https://dashboard.stripe.com/account/webhooks)