Gérer le défi 3DS
Remarque : En tant que partenaire ISV/Paysafe, vous devrez effectuer toutes les étapes « marchand » ci-dessous au nom de l’entité juridique mère des marchands (PMLE) sous laquelle vos marchands exerceront leurs activités.
Selon la spécification 3DS 2, l’utilisateur doit être mis au défi avant d’effectuer un paiement. C’est ce que l’on appelle également le « flux de défi ».
Il est toutefois possible qu’une banque considère le paiement comme un risque faible. Dans ce cas, aucun défi ne sera proposé à l’utilisateur. C’est ce que l’on appelle le « flux sans friction ». Votre application doit pouvoir gérer les deux flux 3DS.
Gérer le flux de défi
Lorsque vous appelez le point d’extrémité /authentications à partir des API REST de Paysafe, votre serveur recevra un sdkChallengePayload. Cela signifie que l’utilisateur doit relever un défi 3DS avant de procéder à l’authentification. Vous pouvez gérer le défi dans votre application Android comme suit :
- Transmettez le sdkChallengePayload à la SDK Android Paysafe.
threeDSecureService.challenge(<Your current app context>, sdkChallengePayLoad, new ThreeDSChallengeCallback {
@Override
public void onSuccess(ChallengeResolution challengeResolution) {
// Utilisez la résolution du défi pour lancer l’interface utilisateur appropriée
}
@Override
public void onError(ThreeDSecureError error) {
// Traitez l’erreur
}
})
- La méthode challenge() fournira un objet ChallengeResolution utilisé pour lancer une activité qui permettra à l’utilisateur de relever le défi 3DS obligatoire. Vous pouvez lancer l’écran du défi à partir d’une action ou d’un fragment, en appelant la méthode correspondante. Un code de requête doit être fourni et peut être utilisé ultérieurement pour récupérer le résultat du défi 3DS.
// Commencez par l’activité. Le résultat sera renvoyé dans onActivityResult() de l’activité fournie.
challengeResolution.startForResult(activity, <Your request code>);
// Commencez par le fragment. Le résultat sera renvoyé dans onActivityResult() du fragment fourni.
challengeResolution.startForResult(fragment, <Your request code>);
// Alternativement, vous pouvez obtenir une intention en attente et la gérer vous-même
challengeResolution.getResolutionIntent();
Lorsque l’utilisateur a relevé le défi, la SDK Paysafe renvoie le contrôle à votre application en appelant onActivityResult() sur l’activité ou le fragment que vous avez fourni à la méthode ChallengeResolution.startForResult(). Voici comment vous pouvez gérer le résultat du défi.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (<Your request code> == requestCode) {
final ChallengeResult challengeResult = ChallengeResult.fromIntent(data);
if (challengeResult.isSuccessful()) {
final String authenticationId = challengeResult.getAuthenticationId();
// Envoyez authentificationId à votre serveur pour vérifier l’état de l’authentification
} else {
final ThreeDSecureError error = challengeResult.getError();
// Traitez l’erreur pour obtenir plus d’informations
}
}
Une fois que l’utilisateur a relevé le défi 3DS, vous recevez l’identifiant de l’authentification en cours. Vous devez l’envoyer à votre serveur afin qu’il puisse appeler les API REST de Paysafe et vérifier si le paiement a été effectué ou non. Si vous recevez un autre sdkChallengePayload, répétez simplement l’étape en cours.
Si la SDK ne parvient pas à générer une empreinte digitale, vous recevrez un message d’erreur ThreeDSecureError contenant des informations utiles sur la cause de l’échec. Lors du dépannage, vous pouvez commencer par vérifier le code d’erreur et le message détaillé. Vous pouvez consulter ci-dessous les codes d’erreur actuellement pris en charge :
Code d’erreur | Valeur | Explication |
---|---|---|
ERROR_CODE_CONNECTION_FAILED | 9001 | L’opération a échoué en raison d’un délai d’inactivité ou d’un problème de connectivité. |
ERROR_CODE_INVALID_API_KEY | 9013 | Clé API ou secret API non valide fourni lors de la création d’une API Client Paysafe. |
ERROR_CODE_INTERNAL_SDK_ERROR | 9014 | Une erreur générale de la SDK. Le message détaillé doit fournir des informations supplémentaires. |
ERROR_CODE_INVALID_MERCHANT_CONFIGURATION | 9501 | La configuration du compte marchand fourni n’est pas valide. L’équipe de soutien de Paysafe doit être informée. |
Si vous ne parvenez pas à résoudre le problème par vous-même, vous pouvez contacter le service de soutien de Paysafe à integrations@paysafe.Com en leur fournissant l’identifiant de corrélation de l’erreur.
Gérer le flux sans friction
Lorsqu’il n’y a pas de sdkChallengePaylod dans le résultat /authentications, cela signifie que l’utilisateur a effectué un paiement « sans friction ». Dans ce cas, la SDK Android Paysafe n’a pas besoin de traitement supplémentaire et vous pouvez poursuivre le flux normal de votre application.