Enregistrer une carte sans authentification
Recueillez des informations de carte pour débiter votre client ultérieurement.
Stripe vous permet de recueillir les informations de la carte de votre client afin de la débiter ultérieurement. Dans certaines régions, les banques exigent souvent une deuxième forme d’authentification pour effectuer un paiement, par exemple en saisissant un code envoyé sur un téléphone. Cette étape supplémentaire tend à diminuer le taux de conversion. En effet, si votre client n’utilise pas activement votre site Web ou votre application il ne pourra pas authentifier l’achat.
If you primarily do business in the US and Canada, banks don’t require authentication, so you can follow this simpler integration. This integration will be non-compliant in countries that require authentication for saving cards (for example, India) so building this integration means that expanding to other countries or adding other payment methods will require significant changes. Learn how to save cards that require authentication.
Conformité
Vous êtes responsable du respect de toutes les lois, réglementations et règles du réseau applicables lorsque vous enregistrez les informations de paiement d’un client. Par exemple, si vous souhaitez enregistrer leur moyen de paiement pour une utilisation future, comme les facturer lorsqu’ils n’utilisent pas activement votre site Web ou votre application. Ajoutez des conditions à votre site Web ou à votre application qui indiquent comment vous prévoyez enregistrer les détails du moyen de paiement et permettez aux clients de donner leur consentement. Si vous souhaitez facturer vos clients lorsqu’ils sont hors ligne, assurez-vous que vos conditions comprennent les éléments suivants :
- Le consentement du client vous autorisant à prélever un paiement ou une série de paiements en son nom pour des transactions spécifiques.
- Le calendrier et la fréquence des paiements prévus (par exemple, si les frais concernent des versements planifiés, des paiements d’abonnement ou des recharges non planifiées).
- La façon dont vous déterminez le montant du paiement.
- Vos conditions d’annulation, si le moyen de paiement est un service d’abonnement.
Assurez-vous de conserver une trace de l’accord écrit de votre client à ces conditions.
Collectez les informations de carteCôté client
Avant d’utiliser ce guide, il vous faut un compte Stripe. Inscrivez-vous.
Créez une page de paiement pour recueillir les informations de carte du client. Utilisez Stripe Elements, une bibliothèque d’interfaces utilisateur qui vous aide à créer des formulaires de paiement personnalisés. Pour démarrer avec Elements, incluez la bibliothèque Stripe.js avec le script suivant dans votre page de paiement.
<script src="https://js.stripe.com/v3/"></script>
Chargez toujours Stripe.js directement à partir de js.stripe.com pour maintenir votre conformité PCI. Vous ne devez pas inclure le script dans un lot ni en héberger de copie vous-même.
Pour tirer le meilleur parti de la fonctionnalité avancée de lutte contre la fraude de Stripe, ajoutez ce script à chaque page de votre site, pas uniquement à la page de paiement. L’ajout du script à chaque page permet à Stripe de détecter les comportements suspects qui pourraient indiquer une fraude lorsque les utilisateurs consultent votre site Web.
Ajouter Elements à votre page
Afin de recueillir les informations de carte de vos clients en toute sécurité, Elements crée pour vous des composants d’interface hébergés par Stripe. Ils sont ensuite placés dans votre formulaire de paiement. Vous n’avez ainsi pas à le faire. Pour déterminer l’emplacement d’insertion de ces composants, créez des éléments DOM (contenants) vides associés à des identifiants uniques dans votre formulaire de paiement.
<input id="cardholder-name" type="text"> <!-- placeholder for Elements --> <div id="card-element"></div> <div id="card-result"></div> <button id="card-button">Save Card</button>
Créez ensuite une instance de l’objet Stripe en indiquant comme premier paramètre votre clé API publique. Puis, créez une instance de l’objet Elements et utilisez-la pour monter un élément card
dans le DOM.
L’élément card
simplifie le formulaire de paiement et réduit le nombre de champs requis en insérant un champ de saisie flexible et unique qui recueille toutes les informations de carte nécessaires de manière sécurisée.
Vous pouvez aussi combiner les composants Elements cardNumber
, cardExpiry
et cardCvc
pour créer un formulaire de carte multi-saisie flexible.
Remarques
Recueillez toujours un numéro de code postal afin d’améliorer vos taux d’acceptation des cartes bancaires et de réduire la fraude.
The single line Card Element automatically collects and sends the customer’s postal code to Stripe. If you build your payment form with split Elements (Card Number, Expiry, CVC), add a separate input field for the customer’s postal code.
const stripe = Stripe(
); const elements = stripe.elements(); const cardElement = elements.create('card'); cardElement.mount('#card-element');'pk_test_TYooMQauvdEDq54NiTphI7jx'
Un élément Stripe contient une balise iframe qui envoie de manière sécurisée les informations de paiement à Stripe par une connexion HTTPS. Pour que votre intégration fonctionne, l’adresse de votre page de paiement doit aussi commencer par https://
au lieu de http://
.
Vous pouvez tester votre intégration sans utiliser le protocole HTTPS. Activez-le lorsque vous êtes prêt(e) à accepter des paiements réels.
const cardholderName = document.getElementById('cardholder-name'); const cardButton = document.getElementById('card-button'); const resultContainer = document.getElementById('card-result'); cardButton.addEventListener('click', async (ev) => { const {paymentMethod, error} = await stripe.createPaymentMethod({ type: 'card', card: cardElement, billing_details: { name: cardholderName.value, }, } ); if (error) { // Display error.message in your UI. resultContainer.textContent = error.message; } else { // You have successfully created a new PaymentMethod resultContainer.textContent = "Created payment method: " + paymentMethod.id; } });
Envoyez l’identifiant de PaymentMethod qui en résulte à votre serveur.
Configurer StripeCôté serveur
Utilisez nos bibliothèques officielles pour accéder à l’API Stripe à partir de votre application :
Enregistrez la carteCôté serveur
Enregistrez la carte en associant le PaymentMethod à un objet Customer. Vous pouvez utiliser l’objet Customer pour sauvegarder d’autres informations concernant l’utilisateur, telles que des détails d’expédition et l’adresse courriel.
Si vous avez un objet Customer existant, vous pouvez joindre le PaymentMethod plutôt à cet objet.
À ce stade, associez l’identifiant du client et l’identifiant du PaymentMethod à votre propre représentation interne d’un client, si vous en avez une.
Débitez la carte enregistréeCôté serveur
Au moment de débiter le client, cherchez l’identifiant du PaymentMethod et celui du client à débiter. Vous pouvez le faire soit en sauvegardant les deux identifiants dans votre base de données, soit en utilisant l’identifiant du client pour rechercher tous les PaymentMethods disponibles du client.
Utilisez l’ID du PaymentMethod et celui de l’objet Customer pour créer un nouveau PaymentIntent. Définissez error_on_requires_action à « true » pour refuser les paiements qui nécessitent des actions de la part de l’utilisateur, comme l’authentification à deux facteurs.
Lorsqu’une tentative de paiement échoue, la requête échoue également avec un code d’état HTTP 402 et Stripe renvoie une erreur. Vous devez aviser l’utilisateur de retourner dans votre application (par exemple en lui envoyant un courriel) afin de terminer le paiement. Consultez le code d’erreur généré par la bibliothèque d’API de Stripe ou le paramètre last_payment_error.decline_code du PaymentIntent pour déterminer le motif du refus du paiement par l’émetteur de la carte.
Gérer les erreurs de carte
Notify your customer that the payment failed and direct them to the payment form you made in Step 1 where they can enter new card details. Send that new PaymentMethod ID to your server to attach to the Customer object and make the payment again.
Vous pouvez également créer un PaymentIntent et enregistrer une carte en un seul appel à l’API si vous avez déjà créé un client.
Setting setup_future_usage to on_
indicates to Stripe that you wish to save the card for later, without triggering unnecessary authentication.
Tester l'intégration
Stripe provides test cards you can use in test mode to simulate different cards’ behavior. Use these cards with any CVC, postal code, and expiry date in the future.
Numéro | Description |
---|---|
Transaction réussie et paiement effectué immédiatement. | |
Échoue toujours avec un code de refus de paiement insufficient_ . | |
Exige l’authentification, qui dans cette intégration échouera avec un code de refus de paiement authentication_ . |
Mettez à niveau votre intégration pour prendre en charge l’authentification des cartes bancaires
Cette intégration refuse les cartes qui nécessitent une authentification lors du paiement. Si vous commencez à voir de nombreux paiements être affichés comme Failed
dans le Dashboard, cela signifie qu’il est temps de mettre à niveau votre intégration. L’intégration complète de Stripe traite ces paiements plutôt que de les refuser automatiquement.