Authentification 3-D Secure
L'authentification 3-D Secure (3DS) est conçue pour protéger les achats en ligne contre la fraude par carte de crédit en vous permettant d'authentifier le payeur avant de soumettre une transaction AUTHORIZE (Autoriser) ou PAY (Payer). La fonctionnalité 3DS de la passerelle et l'authentification au sein de Mobile App solutions sont limitées à 3DS2 uniquement. Si l'authentification 3DS n'est pas disponible, l'authentification ne se poursuit pas. Cependant, vous pouvez toujours procéder au paiement si la passerelle vous le recommande. Pour plus d'informations sur la fonctionnalité 3DS de la passerelle en général, voir Authentification 3-D Secure.
- Pour authentifier le payeur :
- Utilisez votre serveur pour mettre à jour la session avec tous les détails pertinents qui peuvent aider l'authentification à se dérouler plus facilement.
- Demandez au SDK d'effectuer l'authentification.
- Interprétez les résultats renvoyés par le SDK.
Mise à jour de la session avec les détails de l'authentification
Lorsque vous effectuez une authentification Mobile App solutions (vérifier l'identité d'un titulaire de carte dans une application mobile), Mobile App solutions collecte les métriques de l'appareil à envoyer à la passerelle avec vos informations de transaction.
Fournissez autant d'informations que possible sur le payeur et la transaction afin d'augmenter les chances de réussite de l'authentification. Vous pouvez ajouter les champs de la table suivante dans votre session à l'aide d'une demande UPDATE SESSION (Mettre à jour la session).
Champs facultatifs pour la demande UPDATE SESSION (Mettre à jour la session)
Champ | Description |
---|---|
order.merchantCategoryCode | Code de catégorie de commerçant. Cette valeur n'est nécessaire que si elle est différente du code défini pour le lien acquéreur dans votre profil de commerçant. |
Objet billing.address | Adresse de facturation du payeur. Il est fortement recommandé de l'inclure dans votre demande chaque fois que cela est possible. |
Objet shipping.address | Adresse où cette commande sera expédiée. Il est fortement recommandé de l'inclure dans votre demande chaque fois que cela est possible. |
Objet customer | Informations associées au compte du payeur. Il est fortement recommandé de l'inclure dans votre demande chaque fois que cela est possible. |
device
défini dans la référence de l'API n'est pertinent que pour les paiements en ligne. Ne l'utilisez pas pour l'authentification du payeur sur mobile.Les champs ci-dessus aident le système à déterminer comment ou si le titulaire de la carte doit être authentifié. Lors de l'authentification, l'utilisateur passe par l'un des flux d'authentification suivants :
- Flux sans friction :
le serveur de contrôle d'accès (ACS) a collecté suffisamment d'informations sur le titulaire de la carte pour l'authentifier. Aucune autre action n'est requise de la part de l'utilisateur.
- Flux d'authentification :
le serveur ACS exige que le titulaire de la carte effectue une étape d'authentification supplémentaire qui consiste à saisir un mot de passe à usage unique, à se connecter à sa banque émettrice, ou quelque chose de similaire. Mobile App solutions intégré gère l'affichage d'une interface native pour cette authentification. L'interface utilisateur de ces écrans peut être personnalisée en transmettant des paramètres au Mobile App solutions lors de l'initialisation.
Pour plus d'informations, voir Flux d'authentification 3DS.
Effectuer l'authentification
L'authentification du payeur est considérée comme une transaction à part entière sur la passerelle, et nécessite donc un ID de transaction unique.
Si vous encaissez le paiement d'une commande :
- Vous pouvez corréler un paiement et une transaction d'authentification en utilisant le même ID de commande pour chaque transaction (par exemple, UUID).
- Chaque transaction est affichée comme une transaction distincte dans Merchant Administration.
Pour démarrer le processus d'authentification dans le SDK, appelez la fonction authenticate().
Exemple de code pour iOS
let request = AuthenticationRequest (navController: navController, apiVersion: apiVersion, sessionId: sessionId, orderId: orderId, transactionId: authenticationTxnId) AuthenticationHandler.shared.authenticate(request) { (response) in // handle response }
authenticationTxnId
est un identifiant unique pour cette transaction qui la distingue de toutes les autres transactions au sein de la même commande. Lorsque vous envoyez la demande d'opération de paiement proprement dite (telle que PAY [Payer]), la passerelle utilise cet identifiant pour rechercher les résultats de l'authentification qui sont stockés lorsque vous demandez au SDK d'authentifier le payeur. La passerelle transmet les résultats de l'authentification à l'acquéreur avec la demande de transaction de paiement.Exemple de code pour Android
AuthenticationHandler.authenticate(activityContext, session, "your-auth- transaction-id", callback)
your-auth-transaction-id
est un identifiant unique pour cette transaction qui la distingue de toutes les autres transactions au sein de la même commande. Lorsque vous envoyez la demande d'opération de paiement proprement dite (telle que PAY [Payer]), la passerelle utilise cet identifiant pour rechercher les résultats de l'authentification qui sont stockés lorsque vous demandez au SDK d'authentifier le payeur. La passerelle transmet les résultats de l'authentification à l'acquéreur avec la demande de transaction de paiement.Interpréter la réponse
La fonction authenticate
renvoie un objet AuthenticationResponse
qui contient :
- des informations importantes sur le résultat,
- les actions réalisées au cours de l'opération.
Le champ le plus important à vérifier est response.recommendation
. Il peut contenir les valeurs suivantes :
- PROCEED : vous pouvez continuer avec un paiement ou une autorisation.
- DO_NOT_PROCEED : quelque chose a échoué lors de l'opération d'authentification. Utilisez l'objet
AuthenticationError
pour en savoir plus.
À compter de la version 70 de l'API de la passerelle, vous pouvez recevoir les erreurs suivantes :
AuthenticationError.recommendation_ResubmitWithAlternativePaymentDetails
: Vous devez demander au payeur d'autres détails de paiement, par exemple, une nouvelle carte ou un autre mode de paiement, et soumettre à nouveau la demande avec les nouveaux détails.AuthenticationError.recommendation_AbandonOrder
: Le prestataire de services de paiement, le système ou l'émetteur vous demande d'abandonner la commande.AuthenticationError.recommendation_DoNotProceed
: La passerelle a échoué à traiter la demande et il n'y a aucun moyen pour que cette transaction réussisse.
Si l'authentification échoue, vous pouvez également examiner response.error pour plus d'informations sur toute autre erreur envoyée par la passerelle.
Exemple de code pour iOS
AuthenticationHandler.shared.authenticate(request) { (response) in DispatchQueue.main.async { switch response.recommendation { case .doNotProceed: if let error = response.error { print ("SDK Error:\(error.localizedDescription)") if let authError = error as? AuthenticationError, authError == .recommendation_ResubmitWithAlternativePaymentDetails { //"Authentication not successful, re-enter card details" } } // "Authentication not successful" case .proceed: // Proceed to submit the payment, authorization etc } } }
Exemple de code pour Android
AuthenticationHandler.authenticate(activityContext, session, "your-auth-transaction-id") { response -> when(response.recommendation) { AuthenticationRecommendation.PROCEED -> { // continue to payment/authorization } AuthenticationRecommendation.DO_NOT_PROCEED -> { if (response.error !=null) { if (response.error is AuthenticationError.RecommendationResubmitWithAlternativePaymentDetails) { // "Authentication not successful, re-enter card details } } else { // "Authentication not successful" } } } }