GuidesRéférence APIChangelog
Log In
Guides

Gestion des réponses

Vue d'ensemble

Durant le développement, Moneris fournit les systèmes de simulateur pour tester votre solution et s’assurer que vos applications et systèmes soient prêts à gérer les réponses de transaction. Gérer une réponse de l’API de Moneris comprend la confirmation de l’état de la requête et la création de la logique au sein de votre solution afin de prendre les mesures adéquates. Dans certains scénarios, il faut utiliser une valeur dans le corps de la réponse pour indiquer la prochaine transaction à effectuer. Pour les transactions échouées, cela peut vouloir dire d’incorporer les erreurs documentées afin de prévenir les transactions réessayées ou d’inviter les titulaires de carte à utiliser un autre mode de paiement.


Niveaux de réponses

Dans une transaction typique, le processus de communication passe à travers plusieurs systèmes. Le diagramme ci-dessous fournit un abrégé pour comprendre les points de défaillance possibles dans votre transaction afin d’aider au développement et au dépannage. Nous utiliserons le terme « Niveaux de réponses » pour nommer toutes les zones du diagramme et discuter des problèmes possibles de cette interface.


*Seulement disponible en anglais


📘

Systèmes tiers en tant que niveau 0.5 ou 1.5

Certaines intégrations de commerçant peuvent utiliser un fournisseur tiers ou d’intergiciels qui agit entre les niveaux du diagramme. Elles peuvent être entre :

  • le serveur du commerçant et Moneris, habituellement en tant qu’intégration de paiement préintégrée;

  • le titulaire de carte et le serveur du commerçant (notamment un module de panier d’achats préintégré pour un commerce électronique). Si votre solution comprend l’une de ces intégrations, gardez cette couche additionnelle en tête lors de la conception de votre gestion des réponses.


Niveau 1 : Du titulaire de carte au commerçant

Les erreurs générées à cette étape surviennent avant qu’une requête de l’API de Moneris ne soit envoyée et sont liées à votre ’implémentation commerçant. Elles peuvent être associées, ou non, au paiement, selon la validation des données effectuée par votre solution. Les messages d’erreur générés à ce niveau et le processus pour corriger les erreurs associées seront différents pour chaque système de commerçant et à l’extérieur de la portée de cette page, mais nous suggérons que tout message d’erreur produit soit convivial pour le titulaire de carte.


Niveau 2 : Du commerçant à Passerelle Moneris

Les erreurs générées à cette étape se produisent lorsque votre serveur envoie un message de requête et reçoit une réponse qui indique un échec ou aucune réponse.


Réponse échouée

La nature du traitement des transactions comprend la possibilité d’erreurs de formatage ou de contenu dans votre message de requête ou d’erreurs de communication en aval des endpoints (points de terminaison) de l’API de Moneris qui ne peuvent pas être évitées. Par conséquent, votre application de paiement doit gérer correctement toutes les réponses qui en découlent et qui indiquent une erreur.

L’API de Moneris utilise les codes d’état HTTP standards et un Problem JSON dans chaque erreur de réponse pour aider à réparer la nature de l’erreur. Les champs du corps de la réponse peuvent fournir des liens vers le contenu de l’erreur et des détails sur la nature de cette occurrence de l’erreur, en plus de faire la liste des champs liés à cette erreur.


{
"type": "https://developer.moneris.com/en/More/Testing/Response%20Codes",
"title": "FORBIDDEN_REQUEST",
"status": 403,
"detail": null,
"instance": null,
"category": "UNAUTHORIZED_ERROR",
"errors": [ ]
}

📘

Les codes d’état HTTP officiels sont définis conformément aux normes RFC et enregistrés dans :

le registre des codes d’état de l’IANA (disponible en anglais seulement)

Les principales normes RFC sont :

  • RFC7231 - HTTP/1.1: Semantics (or RFC7235 - HTTP/1.1: Authentication)
  • RFC 6585 - HTTP: Additional Status Codes

De plus, Moneris utilise des objets Problem JSON pour chaque RFC 7807 dans les réponses d’erreur pour les erreurs d’utilisation du client (codes d’état 4xx) et erreurs de traitement du côté du serveur (codes d’état 5xx).


No Response / Timed Out (Aucune réponse ou expiration du système)

Si vous ne recevez pas une réponse, cela indique qu’il y a un problème de connexion réseau entre votre serveur de commerçant et Moneris.

  • Confirmez que l’URL utilisée pour la requête est valide dans notre matériel. Les erreurs dans le domaine peuvent causer des problèmes de délai d’attente.

  • Confirmez que l’URL utilisée pour la requête est valide dans notre matériel. Les erreurs dans le domaine peuvent causer des problèmes de délai d’attente.


Niveau 3 : De Moneris aux marques de carte et émetteurs

Certaines requêtes de l’API de Moneris peuvent revenir avec succès, mais nécessitent une gestion des réponses additionnelle qui va plus loin que le code d’état HTTP. Habituellement, des champs particuliers sont inclus dans le corps de la réponse afin d’indiquer l’état de l’entité ou d’éclairer les décisions d’affaires prises par votre application. Ces éléments sont à l’extérieur de la portée de l’état HTTP ou représentent des microservices en aval dans le processus de paiement, qui retournent leurs réponses dans le cadre de la transaction générale.


📘

Requête POST partielle de création de paiement

	"paymentStatus": "SUCCEEDED",
	"transactionDetails": {
	"transactionUniqueId": "string",
	"isoResponseCode": 1,
	"responseCode": 1,
	"message": "approved",
	"ecommerceIndicator": "AUTHENTICATED_ECOMMERCE"
},

Pour un exemple de base, nous pouvons regarder la réponse pour une entité de paiement :

  • La variable “paymentStatus” donne l’état actuel du paiement. Les états possibles sont dans la liste de Référence API, notamment :

    • la variable “DECLINED _RETRY” requête de retenter la transaction de paiement immédiatement;

    • la variable “DECLINED” avise que la transaction a été rejetée par notre serveur, la marque de carte ou la banque émettrice;

    • la variable “CANCELED” indique que le paiement a été annulé par l’entremise de l’endpoint (point de terminaison) POST d’annulation du paiement;

    • la variable “CANCELED” indique que le paiement a été annulé par l’entremise de l’endpoint (point de terminaison) POST d’annulation du paiement;

    • la variable “SUCCEEDED” est l’état d’un paiement approuvé, que ce soit avec la requête POST de conclusion du paiement OU pour un achat effectué par l’entremise de la requête POST de création de paiement avec la variable “automaticCapture” de “true”.

    • la variable “PROCESSING” revient dans toute réponse d'un processus asynchrone en cours.

  • La variable “transactionDetails” comprend des renseignements utiles pour dépanner les transactions refusées, comme le « message » du terminal pour la réponse, ainsi que les variables “isoResponseCode” et “responseCode”. Celles-ci offrent plus de contexte sur les refus des émetteurs lors des enquêtes sur les transactions refusées.


📘

Codes ISO et de réponse du serveur

Pour les endpoints (points de terminaison) de paiement, Moneris suggère l’utilisation des valeurs possibles de la variable “paymentStatus” en tant que scénarios de test habituels. Si vous avez besoin de plus de renseignements de la transaction, vous pouvez aussi reproduire les différentes valeurs “responseCode” du serveur au moyen de notre Simulateur de valeur des cents dans l’environnement de tests. Durant la phase de tests, la valeur de cents de votre transaction (1,xx $) détermine le succès ou l’échec de votre paiement. Consultez le tableau des valeurs des cents et les tableaux des codes du serveur et de réponse ISO pour en savoir plus.

Tableaux des codes de réponse


📘

Gestion des reçus

Après la gestion de la réponse, vous pourriez avoir à fournir des renseignements de la réponse afin de créer un reçu pour le client. Les reçus suivent obligatoirement les règles des associations de cartes en produisant des reçus pour les titulaires de carte.


Codes d’état HTTP

Codes de réussite

Ces codes sont renvoyés lorsque la requête est reçue avec succès, comprise et acceptée.

CodeDescription
200OK (OK) : Il s’agit de la réponse standard de réussite.
201Created (Créé) : Ce code est reçu lors d’une création d’entité réussie. Le retour est soit une réponse vide, soit la ressource créée.
202Accepted (Accepté) : notre serveur accepte la requête et pourrait la réussir ou l’échouer. Un traitement asynchrone est requis.
204No content (Aucun contenu) : il n’y a aucune réponse dans le corps.
207Multi-Status (États multiples) : Le corps de la réponse contient plusieurs états pour différentes parties d’une requête en lot ou en gros.

Codes de redirection

Ces codes sont renvoyés lorsque votre requête échoue et que votre client doit prendre d’autres mesures pour conclure la requête.

CodeDescription
301Moved (Déplacé de façon permanente) : cette requête et toutes les requêtes suivantes doivent être envoyées à l’URI.
303See Other (Voir autre) : la réponse de la requête se trouve sous un autre URI utilisant la méthode GET.
304Not Modified (Non modifié) : ce code indique qu’une requête GET ou HEAD conditionnelle aurait donné 200 réponses si la condition n’avait pas été évaluée comme fausse (false), c.-à-d. la ressource n’a pas été modifiée depuis la date ou la version envoyée par l’entremise des en-têtes de la requête s’il y a eu une modification depuis ou s’il n’y a aucune correspondance.

Codes d’erreur du client

Ces codes sont renvoyés lorsque votre requête échoue en raison d’erreurs possibles dans le message de la requête.

CodeDescription
400Bad request (Mauvaise requête) : une erreur du client non précisée qui indique que le serveur ne peut pas traiter la requête en raison d’une erreur potentielle du client (p. ex. la mauvaise syntaxe de la requête ou une requête non valide). Ce code devrait également s’afficher lors d’un échec de saisie de données de logique d’affaires ou de validation sémantique (au lieu d’utiliser le code d’état 422).
401Unauthorized (Non autorisé) : les identifiants non authentifiés ne sont pas valides pour la ressource cible.
403Forbidden (Interdit) : l’utilisateur n’est pas autorisé à utiliser cette ressource.
404Not found (Non trouvée) : la ressource n’a pas été trouvée.
405Method Not Allowed (Méthode non permise) : la méthode n’est pas acceptée. Consultez OPTIONS.
406Not Acceptable (Non acceptable) : la ressource ne génère que du contenu non acceptable selon les en-têtes Accept envoyés dans la requête.
408Request timeout (Délai d’attente de la requête dépassé) : le délai d’inactivité du serveur s’est écoulé en attendant la ressource.
409Conflict (Conflit) : la requête ne peut pas être effectuée en raison d’un conflit dans l’état actuel de la ressource cible. Par exemple, deux clients tentent de créer la même ressource ou des modifications ont lieu simultanément et entrent en conflit.
410Gone (Absente) : la ressource n’existe plus. Il s’agit, par exemple, d’une ressource supprimée intentionnellement.
412Precondition Failed (Échec du préalable ): un retour a été effectué pour les requêtes conditionnelles (la condition a échoué). Ce code est utilisé pour le verrouillage optimiste.
415Unsupported Media Type (Type de média non accepté) : les clients envoient le corps de la requête, mais n’ajoutent pas le type de contenu.
422Unprocessable Content (Contenu non traitable) - La syntaxe du contenu de la demande est correcte, mais le serveur Moneris n'a pas pu traiter les instructions contenues. Moneris utilise 422 dans les scénarios où la syntaxe de la demande est valide mais où la demande échoue à la validation de la logique métier/des règles. Cela inclut la plupart des cas de refus de la part des associations de cartes et des émetteurs de cartes.
423Locked (Verrouillé) : il s’agit du verrouillage pessimiste, notamment les états de traitement.
428Precondition Required (Préalable requis) : le serveur requiert une requête conditionnelle afin d’éviter le « lost update problem ».
429Too many requests (Trop de requêtes) : le client ne considère pas la limite et a envoyé trop de requêtes dans une courte période.

Codes d’erreur du serveur

Ces codes sont renvoyés lorsque votre requête échoue en raison de problèmes ou d’erreurs du serveur.

CodeDescription
500Internal Server Error (Erreur du serveur interne) : cette erreur générique indique un problème d’exécution inattendue du serveur (ici, une nouvelle tentative par le client serait recommandée).
501Not Implemented - (Implémentation échouée) : le serveur ne peut pas accomplir la requête (cela signifie habituellement une disponibilité future, comme une nouvelle fonctionnalité).
503Service Unavailable (Service non disponible) : le service n’est (temporairement) pas disponible (lorsqu’une composante requise ou un service en aval n’est pas disponible). Une nouvelle tentative par le client serait recommandée. Si possible, le service devrait indiquer la durée d’attente requise par le client avant d’établir l’en-tête Retry-After.