Gestion des erreurs
Présentation
Les erreurs du SDK mobile sont renvoyées au travers de l'objet LyraException qui possède les paramètres suivants :
PARAMETRE | DESCRIPTION |
---|---|
errorCode | Il permet d'identifier l'erreur courante (au format [PREFIXE]_[CODE]). |
errorMessage | Explicite l'erreur correspondant au code. |
detailedErrorCode | Code de l'erreur sous-jacente à l'origine de l'exception (ou null). |
detailedErrorMessage | Message de l'erreur sous-jacente (ou null). |
Le champ detailedError indique la cause précise de l'erreur pour vous aider à identifier le problème.
Types d'erreurs
On doit différencier les erreurs qui se produisent pendant le développement, de celles qui peuvent se produire pendant l'exécution du SDK.
Erreurs de développement
Dans ce cas, le SDK lance une exception de type LyraException, qui doit être capturée par le développeur.
Voici les cas dans lesquels cela peut se produire.
Après l'appel à la méthode initialize() :
Si le format du paramètre publicKey est incorrect, une exception MOBP_001-INVALID_KEY sera levée.
Si le format du paramètre apiServerName est incorrect, une exception MOBP_012-UNKNOWN_API_SERVER_NAME sera levée.
Après l'appel à la méthode process() :
- Si le SDK n'a pas été initialisé au préalable, une exception MOBP-002-INITIALIZATION_REQUIRED sera levée.
Erreurs d'execution
Pour les autres erreurs, les informations seront transmises dans l'objet LyraException via la fonction de callback onError(), comme décrit dans le guide d'intégration.
Codes d'erreur
Un code d'erreur se présente sous la forme [PREFIXE]_[CODE] où :
[PREFIXE] | définit la couche applicative où l'erreur a eu lieu |
[CODE] | est le code numérique de l'erreur. |
Il existe différents préfixes :
PREFIXE | DESCRIPTION | EXEMPLE D'ERREUR |
---|---|---|
MOB | Erreur du SDK mobile | MOB_004 |
ACQ | Erreur du côté acquéreur | ACQ_001 |
AUTH | Erreur d'authentification | AUTH_149 |
INT | Erreur d'intégration (du côté du marchand) | INT_007 |
PSP | Erreur du côté de la plateforme de paiement | PSP_001 |
Attention, de nouveaux codes d'erreur peuvent être ajoutés dans le futur (même si vous ne mettez pas à jour votre SDK et votre application mobile). Votre implémentation doit donc en tenir compte, et intégrer un algorithme de gestion d'erreur générique.
Erreurs ACQ, AUTH, INT et PSP
Ces codes d'erreur concernent les communications avec les serveurs du paiement (vers la plateforme de paiement, votre serveur marchand, etc...). Merci de consulter Codes d'erreur pour les détails de ce type d'erreur.
Préconisation de gestion d'erreur
Quel que soit le cas d'erreur, nous vous recommandons de toujours afficher un message à l'utilisateur afin de l'informer que le paiement n'a pas eu lieu. Nous vous conseillons de bien tracer les errorCode, les detailedErrorCode et leurs messages associés afin de pouvoir analyser les incidents que vous pouvez rencontrer et les résoudre de manière autonome. En cas d'erreur, vous ne devez JAMAIS considérer que le paiement a été effectué.
Erreurs MOB
Ces erreurs ont lieu si une erreur s'est produit coté SDK mobile.
ERROR CODE | DEFINITION |
---|---|
MOB_001 | Invalid public key |
MOB_002 | SDK initialization is required before calling process |
MOB_003 | Invalid formToken |
MOB_004 | Invalid formToken version |
MOB_005 | Impossible to communicate with server |
MOB_006 | Network is not available |
MOB_007 | Invalid response of Lyra Rest API |
MOB_008 | Payment refused |
MOB_009 | Payment cancelled |
MOB_010 | Server timeout error, check IPN |
MOB_011 | Unknown API Server Name |
MOB_012 | Unknown Order Status |
MOB_013 | Payment cannot be cancelled |
MOB_999 | Unexpected error |
Détail des codes d'erreur
MOB_001
Code | MOB_001 |
Définition | Invalid public key |
La clé publique fournie à l'initialisation du SDK n'est pas bonne. Il est possible que vous essayiez d'effectuer une transaction de test avec un clé de production ou inversement. Se référer à Prérequis
MOB_002
Code | MOB_002 |
Définition | SDK initialization is required before calling process |
Vous tentez d'appeler la méthode process avant d'avoir appelé la méthode init. Se référer au Guide d'intégration Android et Guide d'integration iOS sur l'initialisation du SDK.
MOB_003
Code | MOB_003 |
Définition | Invalid formToken |
L'identifiant de formulaire ne semble pas correct. Assurez-vous d'avoir bien suivi les instructions données dans les guides d'intégration. Si rien n'est susceptible de provoquer une erreur, appelez le support*.
MOB_004
Code | MOB_004 |
Définition | Invalid formToken version |
La version de l'identifiant de formulaire n'est pas bonne. Pour s'assurer d'avoir la bonne version, appeler la méthode getFormTokenVersion du SDK et passer les résultats dans le paramètre formTokenVersion du createPayment.
MOB_005
Code | MOB_005 |
Définition | Impossible to communicate with server |
Merci de contacter le support*
MOB_006
Code | MOB_006 |
Définition | Network is not available |
Le périphérique ne semble pas être connecté à internet. Un message à l'utilisateur afin de s'assurer qu'il est bien connecté peut être utile dans ce cas.
MOB_007
Code | MOB_007 |
Définition | Invalid response of Lyra Rest API |
Merci de contacter le support*
MOB_008
Code | MOB_008 |
Définition | Payment refused |
Le paiement a été refusé après le nombre de tentatives supplémentaires atteint.
MOB_009
Code | MOB_009 |
Définition | Payment cancelled |
Le paiement a été volontairement annulé. L'acheteur a volontairement quitté l'écran de paiement ou le Lyra.cancelProcess() a été appelé.
MOB_010
Code | MOB_010 |
Définition | Server timeout error, check IPN |
Le serveur de paiement n'a pas répondu dans un délai de 60 secondes. Cela peut être dû simplement à un ralentissement temporel, donc il est fortement conseillé de vérifier à posteriori la notification IPN, et annuler la transaction pour garder la cohérence.
MOB_011
Code | MOB_011 |
Définition | Unknown API Server Name |
La valeur envoyée dans le champ apiServerName n'est pas reconnu, probablement suite à un erreur de frappe.
MOB_012
Code | MOB_012 |
Définition | Unknown Order Status |
Cette erreur est levée si la plateforme de paiement retourne un statut de paiement différent de RUNNING, PAID, PARTIALLY_PAID ou UNPAID.
MOB_013
Code | MOB_013 |
Définition | Payment cannot be cancelled |
Le paiement ne peut pas être annulé suite à l'appel au Lyra.cancelProcess().
MOB_999
Code | MOB_999 |
Définition | Unexpected error |
Une erreur inattendue s'est produite. Merci de contacter le support.
Lorsque vous contactez le support, merci de communiquer :
- Votre numéro de boutique à 8 chiffres
- OS et version du SDK
- Périphérique utilisé (Iphone 6S, PC, Ipad Pro …)
- Version de l'OS
- Date et Heure de l'erreur
- Le errorCode et detailedErrorCode que vous rencontrez si c'est le cas
Toutes ces informations amélioreront le temps d'analyse et de compréhension de votre problème.