# Importer les résultats 3D Secure Traiter les paiements lorsque 3D Secure est exécuté en dehors de Stripe. L’importation des résultats 3DS est un flux de paiement avancé qui vous permet d’intégrer vos authentifications 3DS externes à vos paiements Stripe en important le résultat de l’authentification. Vous devez importer les résultats 3DS si vous : - Opèrent dans le secteur du voyage et reçoivent des numéros de carte et des cryptogrammes d’un agrégateur de voyages, comme Expedia ou Sabre - faites appel à un fournisseur tiers pour effectuer l’authentification 3DS Dans ces situations, vous pouvez transmettre directement les informations de carte et le cryptogramme à l’API PaymentIntent au lieu d’utiliser Stripe Elements pour recueillir les informations de paiement et exécuter 3DS. L’importation de résultats 3DS est disponible dans les pays suivants : - AU - CA - CH - EU - GB - HK - MX - NZ - SG - US (Beta) Tous les autres pays dans lesquels Stripe prend en charge les paiements par carte bancaire. L’importation de résultats 3DS n’est pas disponible dans les pays suivants : - IN - MY - TH > Dans tous les exemples de code suivants, les paramètres définis dans l’objet `three_d_secure` doivent correspondre exactement aux valeurs renvoyées par votre fournisseur 3DS. ## Traiter un paiement avec des informations de carte Si vous gérez les informations de carte sur votre serveur : 1. Créez et *confirmez* (Confirming an intent indicates that the customer intends to use the current or provided payment method. Upon confirmation, the intent attempts to initiate the portions of the flow that have real-world side effects) un PaymentIntent avec les informations de carte bancaire et les informations 3DS en un seul appel à l’API. 1. Lors de la création du PaymentIntent, définissez le paramètre [confirm](https://docs.stripe.com/api/setup_intents/create.md#create_setup_intent-confirm) sur `true`. 1. Définissez le paramètre [error_on_requires_action](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-error_on_requires_action) sur `true` lorsque vous confirmez le PaymentIntent pour empêcher Stripe d’effectuer une requête 3DS lors d’un refus de paiement conditionnel. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=2000 \ -d currency=eur \ -d "payment_method_types[]=card" \ -d "payment_method_data[type]=card" \ -d "payment_method_data[card][number]=4000002760003184" \ -d "payment_method_data[card][exp_month]=12" \ -d "payment_method_data[card][exp_year]=23" \ -d "payment_method_data[card][cvc]=123" \ -d "payment_method_options[card][three_d_secure][version]=2.1.0" \ -d "payment_method_options[card][three_d_secure][electronic_commerce_indicator]=05" \ --data-urlencode "payment_method_options[card][three_d_secure][cryptogram]=CJSJbzXT6TRQlvZDX+ZdOG4QriE=" \ -d "payment_method_options[card][three_d_secure][transaction_id]=aaa65c7b-b0fc-4e71-bd6c-29c87acad489" \ -d confirm=true \ -d error_on_requires_action=true ``` ## Traiter un paiement avec une API PaymentMethod Si vous tokenisez les informations de carte avec l’[API Payment Methods](https://docs.stripe.com/api/payment_methods.md) : 1. Créez et confirmez un PaymentIntent avec l’ID du PaymentMethod et les informations 3DS en un seul appel à l’API. 1. Lors de la création du PaymentIntent, définissez le paramètre [confirm](https://docs.stripe.com/api/setup_intents/create.md#create_setup_intent-confirm) sur `true`. 1. Définissez le paramètre [error_on_requires_action](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-error_on_requires_action) sur `true` lorsque vous confirmez le PaymentIntent pour empêcher Stripe d’effectuer une requête 3DS lors d’un refus de paiement conditionnel. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=2000 \ -d currency=eur \ -d "payment_method_types[]=card" \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method={{PAYMENTMETHOD_ID}}" \ -d "payment_method_options[card][three_d_secure][version]=2.2.0" \ -d "payment_method_options[card][three_d_secure][electronic_commerce_indicator]=02" \ --data-urlencode "payment_method_options[card][three_d_secure][cryptogram]=M6+990I6FLD8Y6rZz9d5QbfrMNY=" \ -d "payment_method_options[card][three_d_secure][transaction_id]=f879ea1c-aa2c-4441-806d-e30406466d79" \ -d confirm=true \ -d error_on_requires_action=true ``` > Si vous avez l’intention de traiter un paiement avec un PaymentMethod peu de temps après la tokénisation des informations de carte, utilisez plutôt les données brutes de la carte. ## Configurer des paiements futurs Le protocole 3DS prend en charge deux catégories de messages : - L’**authentification des paiements** : qui permet d’authentifier les titulaires de carte bancaire lors des transactions. - L’**authentification sans paiement** : qui permet de vérifier des identités et des comptes. Si vous souhaitez inscrire des clients en vue de paiements futurs, incluez le cryptogramme d’authentification sans paiement ainsi que les informations de carte ou l’ID de PaymentMethod à la création et la confirmation d’un [SetupIntent](https://docs.stripe.com/api/setup_intents.md). ```curl curl https://api.stripe.com/v1/setup_intents \ -u "<>:" \ -d "payment_method_types[]=card" \ -d "customer={{CUSTOMER_ID}}" \ -d "payment_method={{PAYMENTMETHOD_ID}}" \ -d "payment_method_options[card][three_d_secure][version]=2.2.0" \ -d "payment_method_options[card][three_d_secure][electronic_commerce_indicator]=05" \ --data-urlencode "payment_method_options[card][three_d_secure][cryptogram]=4BQwsg4yuKt0S1LI1nDZTcO9vUM=" \ -d "payment_method_options[card][three_d_secure][transaction_id]=f879ea1c-aa2c-4441-806d-e30406466d79" \ -d confirm=true \ -d "expand[]=latest_attempt" ``` ## Importer des résultats exemptés de l’authentification 3DS Si vous obtenez un résultat 3DS en dehors de Stripe contenant une exemption de la *SCA* (Strong Customer Authentication (SCA) is a regulatory requirement in effect as of September 14, 2019, that impacts many European online payments. It requires customers to use two-factor authentication like 3D Secure to verify their purchase) de type ‘low-risk’, vous pouvez signaler à Stripe la nature fondée sur l’exemption du résultat 3DS en utilisant le paramètre [exemption_indicator](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-card-three_d_secure-exemption_indicator). Si l’analyse du risque de transaction en temps réel assurée par Stripe détermine que cela est approprié, Stripe demande l’[exemption pour les transactions à faible risque](https://stripe.com/guides/strong-customer-authentication#low-risk-transactions) à l’émetteur et vous communique cette action en renvoyant [exemption_indicator_applied](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card-three_d_secure-exemption_indicator_applied) dans la réponse à la requête d’autorisation. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=2000 \ -d currency=eur \ -d "payment_method_types[]=card" \ -d "payment_method={{PAYMENTMETHOD_ID}}" \ -d "payment_method_options[card][three_d_secure][version]=2.2.0" \ -d "payment_method_options[card][three_d_secure][electronic_commerce_indicator]=07" \ --data-urlencode "payment_method_options[card][three_d_secure][cryptogram]=CJSJbzXT6TRQlvZDX+ZdOG4QriE=" \ -d "payment_method_options[card][three_d_secure][transaction_id]=aaa65c7b-b0fc-4e71-bd6c-29c87acad489" \ -d "payment_method_options[card][three_d_secure][exemption_indicator]=low_risk" \ -d confirm=true \ -d error_on_requires_action=true \ -d "expand[]=latest_charge" ``` Pour vérifier si Stripe a demandé l’exemption pour les transactions à faible risque, [développez](https://docs.stripe.com/api/expanding_objects.md) `latest_charge` et inspectez l’attribut [three_d_secure](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card-three_d_secure). ```json { "id": "pi_3aTnU0Aif3fLhNTb0le1BSXI", "object": "payment_intent", // ... "latest_charge": { "id": "ch_3aTnU1AifffLhNTb0tUoEZcd", "object": "charge", // ... "payment_method_details": { "card": { // ... "three_d_secure": { "authentication_flow": "frictionless", "electronic_commerce_indicator": "07","exemption_indicator": "low_risk", "exemption_indicator_applied": true, "result": "exempted", "result_reason": null, "transaction_id": "aaa65c7b-b0fc-4e71-bd6c-29c87acad489", "version": "2.2.0" }, // ... }, // ... }, // ... }, // ... } ``` ## Importation des résultats Cartes Bancaires Afin d’utiliser l’importation 3DS pour les transactions traitées sur le réseau Cartes Bancaires, vous devez explicitement transmettre le réseau authentifié dans votre requête en utilisant le paramètre [network](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-card-network). Pour importer des cryptogrammes Cartes Bancaires, vous avez également besoin de données supplémentaires issues de votre serveur 3DS externe. Le tableau ci-dessous détaille ces champs supplémentaires obligatoires et recommandés. Ces recommandations s’appliquent lorsque vous importez des résultats 3DS en utilisant PaymentIntents et SetupIntents. | Champ | Description | Facultatif | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------ | | [electronic_commerce_indicator](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-card-three_d_secure-electronic_commerce_indicator) | L’indicateur ECI (Electronic Commerce Indicator) est renvoyé par votre fournisseur 3DS et indique le niveau de l’authentification effectuée. | Facultatif. À inclure si disponible. | | [cb_avalgo](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-card-three_d_secure-network_options-cartes_bancaires-cb_avalgo) | L’algorithme de calcul du cryptogramme utilisé par l’ACS de l’émetteur de la carte pour calculer le cryptogramme d’authentification. Également appelé cavvAlgorithm. Extension du message ARes/RReq : `CB-AVALGO` | Obligatoire | | [cb_exemption](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-card-three_d_secure-network_options-cartes_bancaires-cb_exemption) | L’indicateur d’exemption renvoyé par Cartes Bancaires dans l’ARes. Il s’agit d’un bitmap de 3 octets (octet de poids faible en premier et bit de poids fort en premier) codé en Base64. Chaîne (4 caractères). Extension du message ARes : `CB-EXEMPTION` | Facultatif. À inclure si disponible. | | [cb_score](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-card-three_d_secure-network_options-cartes_bancaires-cb_score) | Score de risque renvoyé par Cartes bancaires dans l’ARes. Valeur numérique entre 0 et 99. Extension du message ARes/RReq : `CB-SCORE` | Facultatif. À inclure si disponible. | | [ares_trans_status](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-card-three_d_secure-ares_trans_status) | Le `transStatus` renvoyé par l’ACS de l’émetteur de la carte dans l’ARes. | Facultatif. À inclure si disponible. | | [requestor_challenge_indicator](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-card-three_d_secure-requestor_challenge_indicator) | L’indicateur de challenge (`threeDSRequestorChallengeInd`) demandé dans l’AReq envoyée à l’ACS de l’émetteur de la carte. Chaîne contenant 2 chiffres de 01 à 99. | Facultatif. À inclure si disponible. | Fournissez le plus grand nombre possible de ces champs supplémentaires afin d’augmenter vos chances de voir l’autorisation aboutir. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=2000 \ -d currency=eur \ -d "payment_method_types[]=card" \ -d "payment_method={{PAYMENTMETHOD_ID}}" \ -d "payment_method_options[card][network]=cartes_bancaires" \ -d "payment_method_options[card][three_d_secure][version]=2.2.0" \ -d "payment_method_options[card][three_d_secure][electronic_commerce_indicator]=05" \ --data-urlencode "payment_method_options[card][three_d_secure][cryptogram]=CJSJbzXT6TRQlvZDX+ZdOG4QriE=" \ -d "payment_method_options[card][three_d_secure][transaction_id]=aaa65c7b-b0fc-4e71-bd6c-29c87acad489" \ -d "payment_method_options[card][three_d_secure][requestor_challenge_indicator]=02" \ -d "payment_method_options[card][three_d_secure][ares_trans_status]=Y" \ -d "payment_method_options[card][three_d_secure][network_options][cartes_bancaires][cb_avalgo]=1" \ -d "payment_method_options[card][three_d_secure][network_options][cartes_bancaires][cb_score]=9" \ -d "payment_method_options[card][three_d_secure][network_options][cartes_bancaires][cb_exemption]=BAAA" \ -d confirm=true \ -d error_on_requires_action=true ``` ### Exemptions avec le réseau Cartes Bancaires Si une exemption *SCA* (Strong Customer Authentication (SCA) is a regulatory requirement in effect as of September 14, 2019, that impacts many European online payments. It requires customers to use two-factor authentication like 3D Secure to verify their purchase) vous a été accordée via 3DS, vous devez transmettre soit le paramètre `cb_exemption`, soit le paramètre `exemption_indicator`, soit les deux. Si l’un de ces paramètres indique que l’exemption est liée à un faible niveau de risque selon l’analyse du risque de transaction de l’acquéreur, Stripe réévalue la transaction, comme décrit dans [Importer les résultats 3DS exemptés](https://docs.stripe.com/payments/payment-intents/three-d-secure-import.md#import-exempted-outcomes). - Si vous avez accès à `cb_exemption`, transmettez cette valeur sans renseigner `exemption_indicator`. Stripe déduit l’indicateur d’exemption approprié en fonction de `cb_exemption`. - Si vous transmettez à la fois les paramètres `cb_exemption` et `exemption_indicator`, assurez-vous qu’ils indiquent tous les deux correctement l’état d’exemption. - En cas de non-concordance pour laquelle `exemption_indicator=none` et le bitmap dans `cb_exemption` indiquent que l’exemption appliquée est une exemption à faible risque, Stripe rejette la requête. ## Tests Vous pouvez valider votre intégration dans un environnement de test à l’aide de l’une ou l’autre des cartes de test d’authentification requises : `4000 0027 6000 3184` ou `pm_card_authenticationRequired`. La simulation accepte tout résultat 3DS correctement formaté. Par exemple : - Version : `2.1.0` - Indicateur de commerce électronique : `02` - Cryptogramme : `M6+990I6FLD8Y6rZz9d5QbfrMNY=` - ID de transaction : `5f5d08f2-8c36-4f72-99d1-57b4fb70b7d5` Ou : - Version : `2.2.0` - Indicateur de commerce électronique : `05` - Cryptogramme : `4BQwsg4yuKt0S1LI1nDZTcO9vUM=` - ID de transaction : `f879ea1c-aa2c-4441-806d-e30406466d79` ### Exemptions accordées via 3DS Dans un environnement de test, toutes les cartes contenant l’indicateur `exemption_indicator` renvoient la valeur `exemption_indicator_applied` définie sur « true ». Pour tester une création de PaymentIntent qui ne passe pas le contrôle TRA interne et qui renvoie la valeur « false », utilisez le numéro de carte bancaire `4000 0000 0001 6123` et définissez l’indicateur sur `exemption_indicator=low_risk`. ### Cartes Bancaires Vous pouvez utiliser les cartes co-badgées suivantes pour tester l’importation des résultats Cartes bancaires : #### Numéros de cartes bancaires | Numéro | Marque | CVC | Date | | ------------------- | ----------------------------- | -------------------------- | ---------------------------------------- | | 4000 0025 0000 1001 | Cartes bancaires / Visa | 3 chiffres aléatoires | Toute date postérieure à la date du jour | | 5555 5525 0000 1001 | Cartes bancaires / Mastercard | 3 chiffres aléatoires | Toute date postérieure à la date du jour | | 4000 0000 0001 6123 | Cartes bancaires / Visa | 3 chiffres aléatoires | Toute date postérieure à la date du jour | #### Tokens | Token | Marque | | ---------------------------------------------------- | ----------------------------- | | `tok_visa_cartesBancaires` | Cartes bancaires / Visa | | `tok_mastercard_cartesBancaires` | Cartes bancaires / Mastercard | | `tok_threeDSecureImportExemptionIndicatorNotApplied` | Cartes bancaires / Visa | #### PaymentMethods | Moyen de paiement | Marque | | -------------------------------------------------------- | ----------------------------- | | `pm_card_visa_credit_fr_cartesBancaires` | Cartes bancaires / Visa | | `pm_card_mastercard_credit_fr_cartesBancaires` | Cartes bancaires / Mastercard | | `pm_card_threeDSecureImportExemptionIndicatorNotApplied` | Cartes bancaires / Visa | Vous pouvez utiliser n’importe quelle valeur `cb_exemption` valide dans vos tests. Par exemple : - `AAAA` - Aucune exemption accordée - `BAAA` - Exemption pour faible risque accordée Comme pour le [flux d’exemptions standard](https://docs.stripe.com/payments/payment-intents/three-d-secure-import.md#exemptions-granted-through-3ds), lorsque la valeur de `cb_exemption` correspond à un risque faible, seule la carte de test `4000 0000 0001 6123` renvoie la valeur « false » pour l’attribut [exemption_indicator_applied](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card-three_d_secure-exemption_indicator_applied). ## Utilisation du PAN brut Stripe demande aux utilisateurs de valider que les données du titulaire de la carte soient traitées de manière sécurisée et en conformité avec la norme PCI DSS (Payment Card Industry Data Security Standard) avant d’accorder l’accès aux API de données de cartes bancaires brutes. Pour les entreprises qui ont besoin de cette fonctionnalité, Stripe impose des exigences strictes, notamment : - Validation de la conformité à la norme PCI DSS - Soumission au processus d’examen Stripe - Consentement au maintien de contrôles supplémentaires en plus des paramètres de sécurité par défaut de Stripe Consultez l’article de support intitulé [Activer l’accès aux API de données brutes de carte](https://support.stripe.com/questions/enabling-access-to-raw-card-data-apis) pour en savoir plus sur l’activation. > Pour les comptes bénéficiant d’une tarification personnalisée, si vous indiquez Stripe comme acquéreur dans la requête 3DS, Stripe répercutera les coûts de réseau applicables à 3DS, conformément au contrat que vous avez passé avec Stripe. ## See also - [Options 3D Secure dans les PaymentIntents](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-card-three_d_secure)