Définition des Webservices V4 Plateforme Systempay v1.27.10. Version 1.4b



Documents pareils
Définition des Webservices V4

Définition des Webservices Standards Systempay Version 2.7c

Définition des Webservices Ordre de paiement par . Version 1.0

Plateforme PAYZEN. Définition de Web-services

Ajouter le moyen de paiement e-chèque-vacances (ANCV) Systempay 2.3

Guide d implémentation. Réussir l intégration de Systempay

Plateforme Systempay. Correspondance entre SP PLUS et SYSTEMPAY Paiement Simple et en plusieurs fois

Guide d implémentation

Plateforme Systempay Descriptif de l interface avec la page de paiement

Guide d implémentation. Gestion des paiements par identifiant Gestion des paiements par abonnement

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.

CYCLE DE VIE DES TRANSACTIONS

DESCRIPTION DES JOURNAUX DE REPORTING

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento 1.4 et supérieur. Version 1.5.1

Guide d implémentation Interface avec la plateforme de paiement

Guide utilisateur du prélèvement bancaire SEPA

E-TRANSACTIONS. Guide du programmeur API Plug-in. Version 1.1

Faites confiance à la première solution française de paiement sur Internet.

Erreurs les plus fréquentes Guide de dépannage

Paiement sécurisé sur Internet

FOIRE AUX QUESTIONS PAIEMENT PAR INTERNET. Nom de fichier : Monetico_Paiement_Foire_aux_Questions_v1.7 Numéro de version : 1.7 Date :

CONTRAT D ADHESION AU SYSTEME DE PAIEMENT PAR CARTES BANCAIRES CB

Le e-commerce en France

Guide d utilisation de PayPal e-terminal. Informations à usage professionnel uniquement

Paiement sécurisé sur Internet. Pack Factures Documentation générale sur le paiement de factures par carte bancaire sur apayer.fr

Secure Card Data. Spécifications. Version SIX Payment Services

Guide d implémentation. Paiement par identifiant Fichier des cartes arrivant à expiration

TFC. (Téléphone, Fax, Courrier)

CONDITIONS GENERALES DU SERVICE BANQUE EN LIGNE ECOBANK

Paiement sécurisé sur Internet. Documentation Technique

2.1 Les présentes conditions générales régissent les conditions de vente et d utilisation de Ticket Premium.

API HTTP DOCUMENTATION TECHNIQUE PLATEFORME SAAS D'ENVOI DE SMS. Version Mise à jour : 3 juillet 2015

Manuel d intégration API SOAP SMS ALLMYSMS.COM

ADHESION AU SYSTEME DE PAIEMENT PAR CARTES BANCAIRES CB CONDITIONS GENERALES D'ADHESION AU SYSTEME DE PAIEMENT A DISTANCE PAR CARTES BANCAIRES CB

Manuel fournisseur : procédure pour prendre connaissance d une consultation en ligne et soumettre une offre. Version de février 2014 SNCF

Mieux comprendre les certificats SSL THAWTE EST L UN DES PRINCIPAUX FOURNISSEURS DE CERTIFICATS SSL DANS LE MONDE

Guide d utilisation. Gamme Telium. Application AMEX EMV x

Achetez en toute sécurité sur Internet sans communiquer votre numéro de carte bancaire!

Paiement sécurisé sur Internet. Tableau de bord Commerçant

Xi Ingénierie. La performance technologique au service de votre e-commerce. Comment exploiter les cookies sur vos applications web en toute légalité?

CONTRAT PORTEUR CARTES BANCAIRES

Intégration e-commerce. Version 0.5

CARTES BANCAIRES ASSURANCES - ASSISTANCE

Conditions Générales d Utilisation des cartes cadeaux CA DO CARTE au 12/09/2013 (Applicables aux Cartes d un montant inférieur ou égal à 150 )

CONTRAT PORTEUR DISPOSITIF DE SÉCURITÉ PERSONNALISÉ OU CODE CONFIDENTIEL... 3 FORME DU CONSENTEMENT ET IRRÉVOCABILITÉ... 4

Documentation API Octopush

e)services - Guide de l utilisateur e)carpa

Génération de scripts automatiques pour la sécurité des cartes bancaires nouvelle génération (EMV)

Module pour la solution e-commerce Magento

CONDITIONS GÉNÉRALES DES CARTES BANCAIRES

pour vos ventes à distance

Plateforme de vente aux enchères et de vente de gré à gré du ministre. Guide de l utilisateur

Copyright Point / Paybox - Document non contractuel SOLUTIONS DE PAIEMENT E-COMMERCE

Traitement de Visa Débit

Copyright Verifone - Paybox e-commerce - Document non contractuel SOLUTIONS DE PAIEMENT E-COMMERCE

CONDITIONS GENERALES D UTILISATION DU SERVICE DE BANQUE EN LIGNE

plateforme de paiements sécurisés sur internet Groupe Crédit Mutuel-CIC La carte d identité 2009

Sécurisation des paiements en lignes et méthodes alternatives de paiement

Proposer le paiement par carte a mes clients

Intégration du moteur d envoi de SMS pour : Prestashop

Payline. Manuel Utilisateur du Moyen de Paiement PAYPAL. Version 3.E. Monext Propriétaire Page 1 / 24

Paiements, les paiements échelonnés, le calcul des intérêts et la facturation mensuelle

Traitement des cartes retenues ou oubliées et de l argent non retiré ou oublié au Bancomat

Nouveau Programme Formation Monétique

Retek Invoice Matching 11.0 Notes de mise à jour

Sommaire. Vos opérations avec l étranger Vos opérations de change Les incidents de fonctionnement

CONDITIONS GENERALES DE VENTE

Avec une Carte Bancaire*

AIDE MEMOIRE. Forprev. De l habilitation à la gestion de sessions. Page 1 sur 55

Conditions de fonctionnement de la Carte PROVISIO MASTERCARD

Keyyo Guide de mise en service CTI / API / TAPI Keyyo

Camping-car Park est un concept novateur de gestion d aires d étapes de camping-cars en France et à l Etranger, ouvertes 24 H/24, toute l année.

Application des Spécifications détaillées pour la Retraite, architecture portail à portail

Projet de Java Enterprise Edition

Ces conditions de vente prévaudront sur toutes autres conditions générales ou particulières non expressément agréées par SUD LOGICIEL GESTION.

Guide d implémentation de la solution de paiement CITELIS

CONDITIONS GENERALES DE VENTE EN LIGNE SUR LE SITE INTERNET Applicables au 25 février 2013.

Cartes Bancaires. Assurances - Assistance

CONTRAT D ADHESION AU SYSTEME DE PAIEMENT PAR CARTE ecommerce

MON COMPTE AU QUOTIDIEN

GLOSSAIRE des opérations bancaires courantes

Petites entreprises, votre compte au quotidien


Guide d implémentation de la solution de paiement Payline

CONDITIONS PARTICULIERES D UTILISATION DU COMPTE EN LIGNE

Les messages d erreur d'applidis Client

Aide. Réservez votre séjour pour Disneyland Resort Paris en quelques clics!

Manuel de référence des commandes SMS Advisor Advanced

Présentation commerciale et fonctionnelle

Annexe 5. CONTRAT CYBERPLUS PRO Souscrit dans le cadre du Titre 1Conditions Particulières

FICHE PRODUIT COREYE CACHE Architecture technique En bref Plateforme Clients Web Coreye Cache applicative Références Principe de fonctionnement

One Page Checkout / Alias Gateway

INTRODUCTION. Intégration d un système de paiement en ligne dans votre site internet

CONDITIONS GENERALES DE VENTE

DOSSIER D INSCRIPTION au service de paiement sécurisé sur Internet PAYBOX SYSTEM

Messagerie sécurisée, fiable et économique

Module http MMS AllMySMS.com Manuel d intégration

LE COMPTE COURANT ING DIRECT TARIFS

Transcription:

Définition des Webservices V4 Plateforme Systempay v1.27.10 Version 1.4b

Historique du document Version Auteur Date Commentaires 1.4b Lyra-Network 21/04/2015 1.4a Lyra-Network 24/01/2014 1.4 Lyra-Network 06/12/2013 1.3 Lyra-Network 01/08/2013 1.2 Lyra-Network 10/07/2013 Ajout de la méthode create Correction d'une erreur dans la documentation : Inversion des champs createcardinfo.cardbirthday et createcardinfo.cardident dans le calcul de la signature de createcardinfo. Correction d une erreur dans le calcul de signature du champ verespareqinfo Ajout d une précision dans le calcul de signature du type createcardinfo Précisions apportées sur le champ newtransactionid Modification du champ threedsresult. Précision apportée quant à l utilisation de ce champ dans le cas d une carte non enrôlée. Ajout du code d erreur 27 Montant non autorisé. Détails ajoutés sur le code erreur 9 Erreur technique. Ajout de précision sur les champs validationmode, et sequencenb Ajout de précision sur le champ présentationdate dans le cas d une carte MAESTRO Ajout des méthodes cancel, force, refund, duplicate, getinfo et validate. 1.1b Lyra-Network 05/07/2013 Précisions apportées sur l utilisation du champ paymentsource. 1.1a Lyra-Network 20/06/2013 Mise à jour de la liste des codes retour autorisation 1.1 Lyra-Network 14/05/2013 1.0c Lyra-Network 21/03/2013 Passage du wsdl en version 4.3 Ajout du service modify Modification du type transactioninfo : ajout du champ transactionstatuslabel Modification du type transactionpaymentgeneralinfo : ajout du champ effectivecreationdate Modification du type transactioncardinfo : ajout des champs cardproductcode et cardbankcode Ajout du chapitre Notions de timeout Ajout d exemple de cinématiques de paiement avec gestion des timeout 1.0b Lyra-Network 13/03/2013 Ajout des numéros de cartes de test en annexe. 1.0a Lyra-Network 21/01/2013 Passage du wsdl en version 4.1 Mise à jour du calcul de signature de l objet createcustomerinfo. Ajout des codes renvoyés pour le champ authresult Mise à jour des valeurs pour le champ localcontrol Ajout de l errorcode 26 Précision apportées sur le champ cvv 1.0 Lyra-Network 20/06/2012 Version initiale. Confidentialité

Toutes les informations contenues dans ce document sont considérées comme confidentielles. L utilisation de celles-ci en dehors du cadre de cette consultation ou la divulgation à des personnes extérieures est soumise à l approbation préalable de Lyra Network.

1. Présentation... 1 2. Notions de timeout... 1 3. Description des codes erreur... 3 4. Description des types... 5 4.1. createpaymentinfo... 5 4.2. createpaymentgeneralinfo... 6 4.3. createcardinfo... 7 4.4. createsubpaymentinfo... 8 4.5. createcustomerinfo... 8 4.6. createshippinginfo... 9 4.7. createextrainfo... 9 4.8. custstatus... 10 4.9. deliveryspeed... 10 4.10. deliverytype... 10 4.11. extinfo... 10 4.12. createwiththreedsresponse... 11 4.13. verespareqinfo... 11 4.14. transactioninfo... 12 4.15. transactionpaymentgeneralinfo... 13 4.16. transactioncardinfo... 14 4.17. transactionthreedsinfo... 15 4.18. transactionauthorizationinfo... 16 4.19. transactionmarkinfo... 18 4.20. transactionwarrantydetailsinfo... 18 4.21. localcontrol... 19 4.22. transactioncaptureinfo... 20 4.23. transactioncustomerinfo... 20 4.24. transactionshippinginfo... 21 4.25. transactionextrainfo... 21 4.26. paymentcreationinfo... 22 4.27. threedsresult... 22 4.28. standardresponse... 23 5. Signature... 24 6. Statut d une transaction... 25 7. Description des méthodes... 26 7.1. Maintien de la session HTTP entre chaque requête... 26 7.2. Création d un paiement avec authentification 3D-Secure (createwiththreeds)... 27 7.2.1: Cinématique du paiement... 27 7.2.2: Détails de la méthode createwiththreeds... 28 7.2.3: Redirection vers l ACS... 31 7.2.4: Récupération de la réponse de l ACS... 33 7.2.5: Analyse de l authentification 3DS et finalisation du paiement (finalizewiththreeds)... 34 7.3. Modification d une transaction (modify)... 35 7.4. Création d un paiement avec 3D-Secure intégrateur ou sans 3D-Secure (create)... 38 7.5. Annulation d une transaction (cancel)... 42 7.6. Forçage d une transaction (force)... 43 7.7. Remboursement d une transaction (refund)... 44 7.8. Duplication d une transaction (duplicate)... 45 7.9. Recherche des détails d une transaction (getinfo)... 46 7.10. Validation d une transaction (validate)... 47 8. Annexes... 48 Cartes de test... 48 Exemple d implémentation en PHP : calcul de signature (méthode create)... 49 Exemples de cinématique de paiement avec gestion des cas d échec... 54

1. Présentation Ce document présente les webservices qui permettent de créer des transactions (avec ou sans authentification 3D-Secure) et d automatiser les opérations réalisables depuis le back office. Ces webservices ont été développés suivant le protocole SOAP (Simple Object Access Protocol) et sont décrits par le fichier wsdl suivant : https://paiement.systempay.fr/vads-ws/v4.3?wsdl Afin de sécuriser les échanges, les webservices (SOAP) sont cryptés grâce au protocole HTTPS. De plus un mécanisme de signature a été mis en place afin de valider et d authentifier l échange des données. (cf. chapitre Signature) 2. Notions de timeout Le traitement d une requête webservices s articule autour d un enchainement d événements asynchrones comme l envoi de la requête via le réseau du site marchand, le transport des informations sur le réseau internet, le traitement du paiement par la plateforme, l interrogation des serveurs bancaires, etc. Un incident peut survenir à chaque étape et augmenter le temps du traitement (et donc implicitement le temps d attente pour l acheteur). Une requête peut voir sa réponse retardée pour de multiples raisons comme par exemple : Un temps de réponse long de la part de l émetteur du porteur de la carte, (cas des cartes étrangères, cas de période de forte charge comme les soldes,..) Un temps de réponse long de la part de l acquéreur lors de la transmission et de la réception de la demande d autorisation Un temps de réponse long du côté de votre application suite à une charge importante Un temps de réponse long de la plateforme de paiement. Un problème de peering sur Internet qui peut entrainer des pertes de messages, etc Ce qui veut dire que suivant le timeout que vous positionnez dans votre application, vous pouvez ne pas recevoir de réponse alors que le traitement asynchrone continue à s exécuter côté plateforme de paiement. Vous devez donc gérer les cas de timeout qui mal traités peuvent donner un mauvais résultat à l acheteur. Afin d être le plus réactif possible vis-à-vis de l acheteur, il est conseillé de mettre en place un timeout sur non réponse et d adapter le traitement pour informer l acheteur. Le marchand veillera à bien configurer la valeur du timeout, car plus ce délai sera court, plus le nombre de requêtes en timeout sur le site marchand augmentera. Le temps moyen de traitement par la plateforme étant inférieur à 5 secondes, un timeout de 20s à 30s est tout à fait acceptable. @Lyra Network- 1/55

ATTENTION Un temps de traitement plus long ne doit pas être confondu avec un paiement refusé. Le paiement peut être accepté même si votre requête échoue en timeout. Car la demande de paiement dépend d évènements asynchrones non stoppés par le déclenchement du timeout. Le marchand devra donc mettre en place un traitement particulier pour les requêtes en timeout. Si vous n avez pas récupéré la réponse à votre requête WS à la fin de votre timeout, il ne faut pas forcément informer l utilisateur que son paiement a été refusé. Car il risque de tenter un nouveau paiement alors qu entre-temps son paiement a réellement abouti après la fin de votre timeout (traitement asynchrone). Vous devez plutôt suivant vos contraintes: Soit l informer que son règlement est en cours et revenir vers lui une fois que vous connaissez le statut final de votre paiement. Car le risque est que l acheteur tente de multiples paiements. Soit le notifier du refus parce que vous savez que vous ne validerez pas son paiement Deux cinématiques sont données à titre d exemple en annexes. @Lyra Network- 2/ 55

3. Description des codes erreur TransactionInfo : Error Description Error Description Code Code 0 Action réalisée avec succès 61 Paramètre orderinfo1 invalide 1 Action non autorisée.. 62 Paramètre orderinfo2 invalide 2 Transaction non trouvée 63 Paramètre orderinfo3 invalide 3 Transaction pas dans le bon état 64 Paramètre PaymentMethod invalide 4 Transaction existe déjà 65 Paramètre CardNumber invalide 5 Mauvaise signature 66 Paramètre ContractNumber invalide 6 Mauvaise date 67 Paramètre customerid invalide 10 Mauvais montant 68 Paramètre customertitle invalide 11 Mauvaise devise 69 Paramètre customername invalide 12 Type de carte inconnu 70 Paramètre customerphone invalide 13 Paramètre date d expiration invalide 71 Paramètre customermail invalide 14 Paramètre cvv invalide 72 Paramètre customeraddress invalide 15 Contrat inconnu 73 Paramètre customerzipcode invalide 16 Paramètre Numéro de carte invalide 74 Paramètre customercity invalide 17 Identifiant non trouvé 75 Paramètre customercountry invalide 18 Identifiant non valide (Résilié, ) 76 Paramètre customerlanguage invalide 19 Subscription non trouvée 77 Paramètre customerip invalide 20 Subscription non valide 78 Paramètre customersendmail invalide 21 Identifiant déjà existant 79 Paramètre customermobilephone invalide 22 Création d identifiant refusé 80 Paramètre subpaiementtype invalide 23 Identifiant purgé 81 Paramètre subreference invalide 26 Pas de changement 82 Paramètre initialamount invalide 27 Montant non autorisé 83 Paramètre occinitialamount invalide 40 Plage non trouvée 84 Paramètre effectdate invalide 50 Paramètre shopid invalide 85 Paramètre state invalide 51 Paramètre transmissiondate invalide 90 Paramètre enrolled invalide 52 Paramètre transactionid invalide 91 Paramètre authstatus invalide 53 Paramètre ctxmode invalide 92 Paramètre eci invalide 54 Paramètre comment invalide 93 Paramètre xid invalide 55 Paramètre AutoNb invalide 94 Paramètre cavv invalide 56 Paramètre AutoDate invalide 95 Paramètre cavvalgo invalide 57 Paramètre presentationdate invalide 96 Paramètre brand invalide 58 Paramètre newtransactionid invalide 98 Paramètre requestid invalide 59 Paramètre validationmode invalide 99 Autre erreur 60 Paramètre orderid invalide verespareqinfo : Error Code Description Error Code 0 Action réalisée avec succès 9 Erreur technique 1 Action non autorisée 10 Mauvais paramètres 2 Mauvaise signature 11 Format de date incorrect 3 Aucune brand localisée 12 3D Secure désactivé 4 Erreur lors de la détermination de la 13 Identifiant non trouvé plage de la carte 5 Aucun contrat adéquat trouvé 14 PAN non trouvé 6 Spécification du contrat ambigüe, 98 Erreur de traitement sur l ACS plusieurs sont disponibles 7 Marchand non enrôlé 99 Erreur inconnue 8 Signature de l ACS invalide @Lyra Network- 3/ 55

Précisions sur les codes d erreurs TransactionInfo ErrorCode 0 : Indique que l action demandée a été réalisée avec succès, traduisant ainsi que le format de la requête est correct. Remarque : Dans le cas d une création de paiement (méthode create) ce code d erreur ne doit pas être confondu avec le champ transactionstatus qui est le seul à donner le résultat du paiement. Ainsi on pourra avoir un errorcode à 0 et un transactionstatus à 8, correspondant à la création d une transaction dont la demande d autorisation a été refusée. ErrorCode 1 : Indique que vous n avez pas souscrit une offre Systempay permettant d utiliser les webservices. Vous devez vous rapprocher de votre chargé de clientèle pour souscrire à cette offre. ErrorCode 15 : Indique un défaut au niveau du contrat commerçant. Plusieurs cas possibles : La valeur transmise dans la requête ne correspond à aucun contrat enregistré sur la boutique (shopid), Il n y a pas de contrat enregistré sur la boutique, Le contrat spécifié est clôturé, Aucun contrat ne correspond au type de contrat nécessaire pour effectuer le paiement. C est le cas si vous ne possédez pas de contrat VAD (ERT 20) et que paymentmethod est valorisé à MOTO, CC ou OTHER dans votre requête. ErrorCode 27 : Indique que le montant de votre requête de création ou de remboursement de paiement n est pas conforme aux montants minimum/ maximum définis sur votre contrat commerçant. Vous pouvez vous rapprocher du service client pour connaitre les détails de votre contrat. verespareqinfo ErrorCode 9 : Ce code erreur correspond à une erreur technique qui peut avoir plusieurs causes. La plus fréquente étant l envoi d un mauvais numéro de contrat commerçant (createcardinfo.contractnumber) dans la requête. @Lyra Network- 4/ 55

4. Description des types 4.1. createpaymentinfo Ce champ décrit les paramètres nécessaires à la création de la transaction ainsi qu à la vérification de l enrôlement de la carte. Nom du champ Type Description Obligatoire paymentgeneralinfo createpaymentgeneralinfo Cf. 4.2 cardinfo createcardinfo Cf. 4.3 subpaymentinfo createsubpaymentinfo Cf. 4.4 customerinfo createcustomerinfo Cf. 4.5 shippinginfo createshippinginfo Cf. 4.6 extrainfo createextrainfo Cf. 4.7 paymentgeneralinfo, cardinfo, subpaymentinfo, customerinfo, shippinginfo, extrainfo @Lyra Network- 5/ 55

4.2. createpaymentgeneralinfo Ce champ décrit les paramètres relatifs à la transaction. Nom du champ Type Description Obligatoire siteid string Identifiant de la boutique Date et heure UTC de la transaction exprimée au format W3C (2012- transmissiondate datetime 06-08T08:16:43+00:00). Représente la date et l heure de la requête. Si la valeur de ce champ est trop éloignée de l heure actuelle, la requête sera rejetée (errorcode 6) Identifiant de la transaction sur 6 chiffres. Cet identifiant doit être transactionid string unique sur une même journée (de 00:00:00UTC à 23:59:59UTC). Source du paiement: - EC: Commerce Électronique - MOTO : commande par mail ou téléphone - CC : Centre d appel - OTHER : autre canal de vente paymentsource string ATTENTION : Seule la valeur EC permet de créer une transaction avec 3DS. Les autres valeurs sont ne doivent être utilisées que pour de la vente à distance, pour laquelle le 3D-Secure n est pas applicable. orderid string Référence de la commande orderinfo string orderinfo2 string Description libre de la commande. orderinfo3 string amount long Montant de la transaction exprimé dans la plus petite unité monétaire (en centimes pour Euro) currency int Code de la devise suivant la norme ISO 4217, (978 pour EURO) Ce champ permet de définir la date de remise de la transaction, exprimée au format W3C (Ex : 2012-06-08T08:16:43+00:00) presentationdate validationmode datetime int Si le nombre de jours entre la date de remise demandée et la date actuelle est supérieur à 7 jours, une autorisation d 1 euro sera réalisée le jour de la transaction. Ceci afin de vérifier la validité de la carte. L autorisation pour le montant total sera effectuée entre 7 jours et 0 jour avant la date de remise, en fonction du paramétrage de votre boutique (Avec ou Sans autorisations anticipées). Si vous souhaitez être notifié du résultat de cette demande d autorisation, vous devez configurer la règle de notification «URL serveur sur autorisation par Batch» dans l outil de gestion de caisse (Paramétrage/Règles de notifications/) Remarque : Si la carte de crédit utilisée pour le paiement est de type MAESTRO, la règle précédente, basée sur un délai de 7 jours, ne s applique pas. La demande d autorisation est valable 30 jours pour ces cartes. Mode de validation des paiements : 0= Automatique ; 1= Manuelle createpaymentgeneralinfo.siteid, createpaymentgeneralinfo.transactionid, createpaymentgeneralinfo.paymentsource, createpaymentgeneralinfo.orderid, createpaymentgeneralinfo.orderinfo, createpaymentgeneralinfo.orderinfo2, createpaymentgeneralinfo.orderinfo3, createpaymentgeneralinfo.amount, createpaymentgeneralinfo.currency, createpaymentgeneralinfo.validationmode @Lyra Network- 6/ 55

4.3. createcardinfo Ce type décrit les détails de la carte de crédit : Nom du champ Type Description Obligatoire cardnumber string Numéro de carte Réseau de la carte ("AMEX", "CB", "MASTERCARD", "VISA", cardnetwork string "MAESTRO", "E-CARTEBLEUE", "JCB") expirymonth int Mois d expiration de la carte, entre 1 et 12 expiryyear int Année d expiration de la carte sur 4 digits ex : 2012 cvv string Cryptogramme visuel à 3 chiffres (ou 4 pour Amex : 4DBC) Ce champ est obligatoire lorsque la carte dispose d un cryptogramme visuel et que l internaute l a saisi. Remarque : Certaines cartes ne possédant pas de CVV, le champ cvv est optionnel dans la méthode createwiththreeds. cardident cardbirthday cardident contractnumber paymentoptioncode string datetime String string string Identifiant du compte acheteur (paiement par identifiant) Ce champ ne doit pas être envoyé à vide (errorcode 17) Ce champ ne doit pas être valorisé si le champ cardnumber l est déjà (errorcode 22) Date de naissance du porteur au format W3C, dans le fuseau UTC. L heure étant obligatoire dans ce format, nous conseillons de fixer arbitrairement l heure à 15h00 UTC. (Ex : 19790101T15:00:00+00:00) Identifiant du compte acheteur (paiement par identifiant) Numéro de contrat commerçant. Si ce champ est renseigné, veillez à utiliser le bon contrat en fonction du réseau de la carte. Par exemple, le contrat CB ne peut être utilisé pour une transaction AMEX. Réservé à un usage spécifique. Ne pas renseigner createcardinfo.cardnumber, createcardinfo.cardnetwork, createcardinfo.expirymonth, createcardinfo.expiryyear, createcardinfo.cvv, createcardinfo.cardident, createcardinfo.cardbirthday, createcardinfo.contractnumber, createcardinfo.paymentoptioncode Remarque importante Attention dans le calcul de signature du type createcardinfo, le champ cardbirthday doit être pris en compte malgré qu il soit de type datetime. Sa valeur dans le calcul de signature doit être formatée de la manière suivante : YYYYMMDD en UTC soit pour le 1 er Février 2009 : 20090201. ATTENTION aux heures, par exemple le 23/02/2010 00:30:00 heure française (GMT+1 ou GMT+2) donne 20100222 (c est pour cela que nous conseillons de fixer l heure à 15:00:00 UTC dans ce champ). @Lyra Network- 7/ 55

4.4. createsubpaymentinfo Ce type est réservé à un usage futur. Il ne doit pas être valorisé. Nom du champ Type Description Obligatoire subpaymenttype int subreference string Ne pas renseigner subpaymentnumber int createsubpaymentinfo.subpaymenttype, createsubpaymentinfo.subreference, createsubpaymentinfo.subpaymentnumber 4.5. createcustomerinfo Ce type décrit les détails concernant le porteur de la carte. Nom du champ Type Description Obligatoire customerid string Référence client customertitle string Civilité customerstatus custstatus Cf. 4.8 customername string Nom du client customerphone string Numéro de téléphone customeremail string Adresse de courrier électronique customeraddressnumber string Numéro de rue customeraddress string Adresse customerdistrict string Quartier customerzip string Code postal customercity string Ville customercountry string Pays language string Langue du client (norme ISO 639-1 sur 2 caractères). customerip string Adresse IP du lient customersendemail boolean Envoi d un email de confirmation de paiement à l internaute. 0= Non ; 1=Oui. customercellphone string Téléphone mobile du client extinfo Array extinfo Paramètres génériques exprimés sous la forme nom, valeur. Cf.4.11 createcustomerinfo.customerid, createcustomerinfo.customertitle, createcustomerinfo.customerstatus, createcustomerinfo.customername, createcustomerinfo.customerphone, createcustomerinfo.customeremail, createcustomerinfo.customeraddressnumber, createcustomerinfo.customeraddress, createcustomerinfo.customerdistrict, createcustomerinfo.customerzip, createcustomerinfo.customercity, createcustomerinfo.customercountry, createcustomerinfo.language, createcustomerinfo.customerip, createcustomerinfo.customersendemail, createcustomerinfo.customercellphone, createcustomerinfo.extinfo @Lyra Network- 8/ 55

4.6. createshippinginfo Ce type décrit les informations de livraison. Nom du champ Type Description Obligatoire shippingstatus custstatus Cf.4.8 shippingname string Nom shippingphone string Numéro de téléphone shippingstreetnumber string Numéro de la rue shippingstreet string Adresse de livraison shippingstreet2 string Deuxième ligne d adresse de livraison shippingdistrict string Quartier shippingzipcode string Code postal shippingcity string Ville de livraison shippingstate string Etat de livraison shippingcountry string Pays de livraison shippingdeliverycompanyname string Informations sur le transporteur shippingspeed deliveryspeed Mode de livraison (cf.4.9) shippingtype deliverytype Méthode de livraison (cf. 4.10) createshippinginfo.shippingcity, createshippinginfo.shippingcountry, createshippinginfo.shippingdeliverycompanyname, createshippinginfo.shippingname, createshippinginfo.shippingphone, createshippinginfo.shippingspeed, createshippinginfo.shippingstate, createshippinginfo.shippingstatus, createshippinginfo.shippingstreetnumber, createshippinginfo.shippingstreet, createshippinginfo.shippingstreet2, createshippinginfo.shippingdistrict, createshippinginfo.shippingtype, createshippinginfo.shippingzipcode 4.7. createextrainfo Nom du champ Type Description Obligatoire Contexte de sollicitation de la plateforme de ctxmode string paiement. ("TEST", "PRODUCTION") browseruseragent string Header «User-Agent» du navigateur du client browseraccept string Header «Accept» du navigateur du client createextrainfo.ctxmode, createextrainfo.browseruseragent, createextrainfo.browseraccept @Lyra Network- 9/ 55

4.8. custstatus Ce type décrit le type de client. Les valeurs possibles sont définies ci-dessous : PRIVATE COMPANY Valeur Particulier Entreprise Description 4.9. deliveryspeed Ce type décrit le mode de livraison. Les valeurs possibles sont définies ci-dessous : STANDARD EXPRESS Valeur Livraison Standard Livraison Express Description 4.10. deliverytype Ce type décrit la méthode de livraison. Les valeurs possibles sont définies ci-dessous : Valeur RECLAIM_IN_SHOP RELAY_POINT RECLAIM_IN_STATION PACKAGE_DELIVERY_COMPANY ETICKET Description Retrait de la marchandise en magasin Utilisation d'un réseau de points-retrait tiers (type Kiala, Alveol, etc.) Retrait dans un aéroport, une gare ou une agence de voyage Transporteur (La poste, Colissimo, UPS, DHL ) Emission d un billet électronique, téléchargements 4.11. extinfo Ce type décrit un champ supplémentaire qui sera persisté dans la transaction et sera retourné dans la réponse. Nom du champ Type Description key string Nom de la donnée value string Valeur de la donnée extinfo.key, extinfo.value @Lyra Network- 10/ 55

4.12. createwiththreedsresponse Ce type décrit la réponse envoyée lors d un appel à la méthode createwiththreeds. Nom du champ Type Description errorcode int Code d erreur cf.3. extendederrorcode string Détail de l erreur si le champ errorcode est différent de 0 timestamp long Timestamp permettant la génération de signature unique signature string Signature de la Réponse (cf. ci-dessous) verespareqinfo verespareqinfo Contient le résultat de la demande d enrôlement ainsi que le message PAReq codé dans le cas où le champ threedsenrolled est valorisé à «Y». Cf.4.13) Ce champ ne sera renvoyé que si la carte est enrôlée. Dans ce cas, le champ transactioninfo ne sera pas envoyé. transactioninfo transactioninfo Descriptif de la transaction. Cf. 4.14 Ne sera pas envoyé si la carte est enrôlée. errorcode, extendederrorcode, timestamp, verespareqinfo, transactioninfo Le code d erreur de la réponse correspondra au code d erreur retourné : soit lors de la création du paiement (transactioninfo) soit le lors de la demande de vérification d enrôlement (verespareqinfo). 4.13. verespareqinfo Ce type décrit le résultat de la demande d enrôlement ainsi que le message encodé qui sera transmis par le navigateur client à l ACS. Nom du champ Type Description errorcode int Code d erreur cf. errordetail string Détail de l erreur si le champ errorcode est différent de 0 signature string Signature de la Réponse (cf. ci-dessous) timestamp long Timestamp permettant la génération de signature unique threedsacctid String certificat renvoyé par le Directory Server threedsacsurl String Url de l ACS à contacter threedsbrand String Réseau de carte threedsencodedpareq String message PAReq encodé, prêt à envoyer à l ACS threedsenrolled String Statut d enrôlement du porteur : «Y» : Enrôlé threedsrequestid String numéro de requête, à rappeler dans l appel finalizewiththreeds errorcode, errordetail, timestamp, threedsacctid, threedsacsurl, threedsbrand, threedsencodedpareq, threedsenrolled, threedsrequestid @Lyra Network- 11/ 55

4.14. transactioninfo Ce type décrit une transaction: Nom du champ Type Description errorcode int Code d erreur (cf. 3) extendederrorcode string Détail de l erreur si le champ errorcode est différent de 0 transactionstatus int Code du statut de la transaction (cf.6) timestamp long Timestamp permettant la génération de signature unique signature string Signature de la transaction transactionstatuslabel String Libellé su statut de la transaction (cf.6) paymentgeneralinfo transactionpaymentgeneralinfo Cf. 4.15 cardinfo transactioncardinfo Cf. 4.16 threedsinfo transactionthreedsinfo Cf. 4.17 authorizationinfo transactionauthorizationinfo Cf. 4.18 markinfo transactionmarkinfo Cf. 4.19 warrantydetailsinfo transactionwarrantydetailsinfo Cf. 4.20 captureinfo transactioncaptureinfo Cf. 4.22 customerinfo transactioncustomerinfo Cf. 4.23 shippinginfo transactionshippinginfo Cf. 4.24 extrainfo transactionextrainfo Cf. 4.25 paymentoptioninfo transactionpaymentoptioninfo Réservé à un usage spécifique boletoinfo transactionboletoextrainfo Réserve à un usage spécifique Le calcul de la signature se fait en prenant les paramètres dans l ordre suivant: transactioninfo.errorcode, transactioninfo.extendederrorcode, transactioninfo.transactionstatus, transactioninfo.timestamp, transactioninfo.paymentgeneralinfo, transactioninfo.cardinfo, transactioninfo.threedsinfo, transactioninfo.authorizationinfo, transactioninfo.markinfo, transactioninfo.warrantydetailsinfo, transactioninfo.captureinfo, transactioninfo.customerinfo, transactioninfo.shippinginfo, transactioninfo.extrainfo, transactioninfo.transactionstatuslabel @Lyra Network- 12/ 55

4.15. transactionpaymentgeneralinfo Ce type décrit les informations générales d une transaction : Nom du champ Type Description siteid string Identifiant de la boutique paymentsource string Source du paiement : - "E_COMMERCE" : e-commerce - "MAIL_OR_TELEPHONE" : mail ou téléphone - "CALL_CENTER" : centre d appel - "OTHER" : autres orderid string Référence de la commande orderinfo string Description libre de la commande orderinfo2 string Description libre de la commande orderinfo3 string Description libre de la commande transmissiondate datetime Date et heure de la transaction transactionid string Identifiant de transaction sequencenumber int Numéro de séquence de la transaction amount string Montant actuel de la transaction en plus petite unité monétaire initialamount string Montant initial (avant modification éventuelle) en plus petite unité monétaire currency int Code de la devise (Code monnaie ISO 4217, Euro : 978) effectiveamount string Montant en contre-valeur en plus petite unité monétaire effectivecurrency int Devise en contre-valeur (Code monnaie ISO 4217, Euro : 978) presentationdate datetime Date de remise demandée type int 0 = DEBIT, 1 = CREDIT multiplepayment int Paiement en plusieurs fois (Non = 0, Oui = 1) effectivecreationdate datetime Date réelle d enregistrement de la transaction transactionpaymentgeneralinfo.siteid, transactionpaymentgeneralinfo.paymentsource, transactionpaymentgeneralinfo.orderid, transactionpaymentgeneralinfo.orderinfo, transactionpaymentgeneralinfo.orderinfo2, transactionpaymentgeneralinfo.orderinfo3, transactionpaymentgeneralinfo.transactionid, transactionpaymentgeneralinfo.sequencenumber, transactionpaymentgeneralinfo.amount, transactionpaymentgeneralinfo.initialamount, transactionpaymentgeneralinfo.currency, transactionpaymentgeneralinfo.effectiveamount, transactionpaymentgeneralinfo.effectivecurrency, transactionpaymentgeneralinfo.type, transactionpaymentgeneralinfo.multiplepayment @Lyra Network- 13/ 55

4.16. transactioncardinfo Ce type décrit le détail de la carte. Nom du champ Type Description cardnumber string Numéro de carte masqué cardnetwork string Réseau de la carte cardbrand string Brand de la carte cardcountry long Code Pays du pays d émission de la carte (Code numérique ISO 3166-1 ex : France=250) cardproductcode string Code produit de la carte cardbankcode string Code banque de la banque émettrice expirymonth int Mois d expiration entre 1 et 12 expiryyear int Année d expiration contractnumber string Numéro du contrat commerçant utilisé transactioncardinfo.cardnumber, transactioncardinfo.cardnetwork, transactioncardinfo.cardbrand, transactioncardinfo.cardcountry, transactioncardinfo.expirymonth, transactioncardinfo.expiryyear, transactioncardinfo.contractnumber, transactioncardinfo.cardbankcode, transactioncardinfo.cardproductcode @Lyra Network- 14/ 55

4.17. transactionthreedsinfo Ce champ décrit les détails de l authentification 3D-Secure : Nom du champ Type Description "COND_3D_SUCCESS", "COND_3D_FAILURE", "COND_3D_ERROR", "COND_3D_NOTENROLLED", threedstransactioncondition string "COND_3D_ATTEMPT", "COND_SSL" Voir détails ci-dessous Statut enrôlement porteur : "Y" : Enrôlé threedsenrolled string "N" : Non enrôlé "U" : Inconnu Statut authentification du porteur: "Y" : Authentifié 3DS threedsstatus string "N" : Erreur Authentification "U" : Authentification impossible "A" : Essai d authentification threedseci string Indicateur de commerce Electronique threedsxid string Numéro de transaction 3DS Algorithme de vérification de l authentification du porteur (CAVV) : "0" : HMAC threedscavvalgorithm string "1" : CVV "2" : CVV_ATN "3" : Mastercard SPA threedscavv string Certificat de l ACS threedssignvalid string Signature de l authentification 3DS threedsbrand string Brand de la carte ("VISA" ou "MASTERCARD") Détails threedstransactioncondition: Valeur "COND_3D_SUCCESS" " COND_3D_FAILURE" " COND_3D_ERROR" " COND_3D_NOTENROLLED" " COND_3D_ATTEMPT" "COND_SSL" Description Le commerçant et le porteur de la carte sont inscrits au programme 3-D Secure et le porteur s est authentifié correctement. Le commerçant et le porteur de la carte sont inscrits au programme 3-D Secure mais l acheteur n a pas réussi à s authentifier (mauvais mot de passe) Le commerçant participe au programme 3-D Secure mais le serveur Systempay a rencontré un problème technique durant le processus d authentification (lors de la vérification de l inscription de la carte au programme 3D ou de l authentification du porteur). Le commerçant participe au programme 3-D Secure mais la carte du porteur n est pas enrôlée. Le commerçant et le porteur de la carte sont inscrits au programme 3-D Secure mais l acheteur n a pas eu à s authentifier (le serveur de contrôle d accès de la banque qui a émis la carte n implémente que la génération d une preuve de tentative d authentification). Le commerçant n est pas enrôlé à 3D-Secure ou le canal de vente n est pas couvert par cette garantie. transactionthreedsinfo.threedstransactioncondition, transactionthreedsinfo.threedsenrolled, transactionthreedsinfo.threedsstatus, transactionthreedsinfo.threedseci, transactionthreedsinfo.threedsxid, transactionthreedsinfo.threedscavvalgorithm, transactionthreedsinfo.threedscavv, transactionthreedsinfo.threedssignvalid, transactionthreedsinfo.threedsbrand @Lyra Network- 15/ 55

4.18. transactionauthorizationinfo Ce type décrit le détail de la demande d autorisation : Nom du champ Type Description authmode string "MARK": Une autorisation d un euro a été réalisée afin de vérifier la validité de la carte. Ce cas se présente lorsque la date de remise dépasse la période de validité d une autorisation (7 jours pour VISA/MasterCard/CB/AMEX en France par exemple). authamount authcurrency authdate authnumber authresult authcvv2_cvc2 string string string string int string "FULL" : autorisation pour le montant total demandé dans la requête Montant de l autorisation dans la plus petite unité monétaire (en centimes pour Euro) dans le cas où authmode vaut FULL Code de la monnaie utilisée lors de la demande d autorisation (suivant la norme ISO 4217) dans le cas où authmode vaut FULL. Date et heure de la demande d autorisation dans le cas où authmode vaut FULL. Numéro de la demande d autorisation dans le cas où authmode vaut FULL Résultat de la demande d autorisation dans le cas où authmode vaut FULL. (voir liste des valeurs possibles ci-après) Information relative au traitement du cryptogramme visuel de l autorisation transactionauthorizationinfo.authmode, transactionauthorizationinfo.authamount, transactionauthorizationinfo.authcurrency, transactionauthorizationinfo.authnumber, transactionauthorizationinfo.authresult, transactionauthorizationinfo.authcvv2_cvc2 @Lyra Network- 16/ 55

Liste des valeurs possibles pour les champs authresult et markresult. Valeur Description 00 transaction approuvée ou traitée avec succès 02 contacter l émetteur de carte 03 accepteur invalide 04 conserver la carte 05 ne pas honorer 07 conserver la carte, conditions spéciales 08 approuver après identification 12 transaction invalide 13 montant invalide 14 numéro de porteur invalide 15 Emetteur de carte inconnu 17 Annulation client 19 Répéter la transaction ultérieurement 20 Réponse erronée (erreur dans le domaine serveur) 24 Mise à jour de fichier non supportée 25 Impossible de localiser l enregistrement dans le fichier 26 Enregistrement dupliqué, ancien enregistrement remplacé 27 Erreur en «edit» sur champ de lise à jour fichier 28 Accès interdit au fichier 29 Mise à jour impossible 30 erreur de format 31 identifiant de l organisme acquéreur inconnu 33 date de validité de la carte dépassée 34 suspicion de fraude 38 Date de validité de la carte dépassée 41 carte perdue 43 carte volée 51 provision insuffisante ou crédit dépassé 54 date de validité de la carte dépassée 55 Code confidentiel erroné 56 carte absente du fichier 57 transaction non permise à ce porteur 58 transaction interdite au terminal 59 suspicion de fraude 60 l accepteur de carte doit contacter l acquéreur 61 montant de retrait hors limite 63 règles de sécurité non respectées 68 réponse non parvenue ou reçue trop tard 75 Nombre d essais code confidentiel dépassé 76 Porteur déjà en opposition, ancien enregistrement conservé 90 arrêt momentané du système 91 émetteur de cartes inaccessible 94 transaction dupliquée 96 mauvais fonctionnement du système 97 échéance de la temporisation de surveillance globale 98 serveur indisponible routage réseau demandé à nouveau 99 incident domaine initiateur @Lyra Network- 17/ 55

4.19. transactionmarkinfo Ce type décrit le détail de la demande d empreinte : Nom du champ Type Description markamount long Montant utilisé pour vérifier la validité de la carte, dans la plus petite unité monétaire (en centimes pour l euro). Sa valeur est 100. markcurrency int Code de la monnaie utilisée pour vérifier la validité de la carte (suivant la norme ISO 4217). Sa valeur est 100. markdate datetime Date et heure de la demande d autorisation réalisée dans le cas où transactionauthorizationinfo.authmode vaut MARK marknb string Numéro d autorisation de la demande d autorisation dans le cas où transactionauthorizationinfo.authmode vaut MARK markresult int Résultat de la demande d autorisation réalisée l dans le cas où transactionauthorizationinfo.authmode vaut MARK. (voir liste des valeurs possibles au ch. 3.18) markcvv2_cvc2 string Information relative au traitement du cryptogramme visuel. transactionmarkinfo.markamount, transactionmarkinfo.markcurrency, transactionmarkinfo.marknb, transactionmarkinfo.markresult, transactionmarkinfo.markcvv2_cvc2 4.20. transactionwarrantydetailsinfo Ce type décrit le détail de la garantie du paiement et des contrôles locaux: Nom du champ Type Description paymenterror int Complément d information en cas d erreur technique. warrantlyresult string Garantie de paiement (YES / NO) localcontrol Array localcontrol Tableau des résultats des différents contrôles locaux litige boolean Litige transactionwarrantydetailsinfo.paymenterror, transactionwarrantydetailsinfo.warrantlyresult, transactionwarrantydetailsinfo.localcontrol, transactionwarrantydetailsinfo.litige @Lyra Network- 18/ 55

4.21. localcontrol Ce type décrit un contrôle local (nom du contrôle et résultat). Nom du champ Type Description name string Nom du contrôle result boolean Résultat du contrôle localcontrol.name, localcontrol.result Les différentes valeurs possibles pour name sont : Valeur Description "CARD" Carte située dans une liste grise "COUNTRY" Pays inclus dans la liste grise de la boutique ou absent de la liste blanche "IPADDR" Adresse IP située dans une liste grise "AMOUNT" Encours atteint "BIN" Le code BIN appartient à la liste grise du commerçant " ECB" Détection d une e-carte bleue "CARD_COMMERCIAL_NATIONAL" Détection d une carte commerciale nationale "CARD_COMMERCIAL_FOREIGN" Détection d une carte commerciale étrangère "CAS" Détection d une carte à autorisation systématique "COUNTRY_CONSISTENCY" Aucun pays ne correspond (pays IP, pays carte, pays client) "NON_GUARANTEED_PAYMENT" Détection d un paiement sans garantie "IPADDR_COUNTRY" Le pays de l adresse IP appartient à la liste grise Cette liste est susceptible de s allonger, veuillez bien en tenir compte dans votre implémentation. Les différentes valeurs possibles pour result sont : Valeur Description "0" Indique que le contrôle est correct "1" Indique que le contrôle est en erreur @Lyra Network- 19/ 55

4.22. transactioncaptureinfo Ce type décrit le détail de la remise dans le cas où la transaction est remisée. Nom du champ Type Description capturedate datetime Date et heure de remise capturenumber int Numéro de remise rapprochementstatut int Statut de rapprochement bancaire de la transaction. refundamount long Montant ayant déjà fait l objet d un remboursement en plus petite unité monétaire refundcurrency int Devise du montant ayant déjà fait l objet d un remboursement (Code monnaie ISO 4217, Euro : 978) transactioncaptureinfo.capturenumber, transactioncaptureinfo.rapprochementstatut, transactioncaptureinfo.refundamount, transactioncaptureinfo.refundcurrency 4.23. transactioncustomerinfo Ce type décrit les détails concernant le porteur de la carte : Nom du champ Type Description customerid string Référence client customertitle string Civilité customerstatus custstatus Cf.4.8 customername string Nom du client customerphone string Numéro de téléphone customeremail string Adresse de courrier électronique customeraddressnumber string Numéro de la rue customeraddress string Numéro de rue customerdistrict string Quartier customerzip string Code postal customercity string Ville customercountry string Pays language string Langue du client (norme ISO 639-1 sur 2 caractères). customerip string Adresse IP du lient customercellphone string Téléphone mobile du client extinfo Array extinfo Cf. 4.11 transactioncustomerinfo.customerid, transactioncustomerinfo.customertitle, transactioncustomerinfo.customerstatus, transactioncustomerinfo.customername, transactioncustomerinfo.customerphone, transactioncustomerinfo.customeremail, transactioncustomerinfo.customeraddressnumber, transactioncustomerinfo.customeraddress, transactioncustomerinfo.customerdistrict, transactioncustomerinfo.customerzip, transactioncustomerinfo.customercity, transactioncustomerinfo.customercountry, transactioncustomerinfo.language, transactioncustomerinfo.customerip, transactioncustomerinfo.customercellphone, transactioncustomerinfo.extinfo @Lyra Network- 20/ 55

4.24. transactionshippinginfo Ce type décrit les informations de livraison : Nom du champ Type Description shippingcity string Ville de livraison shippingcountry string Pays de livraison shippingdeliverycompanyname string Informations sur le transporteur shippingname string Nom shippingphone string Numéro de téléphone shippingspeed deliveryspeed Mode de livraison (cf. 4.9) shippingstate string Etat de livraison shippingstatus custstatus Cf. 4.8 shippingstreetnumber string Numéro de la rue shippingstreet string Adresse de livraison shippingstreet2 string Deuxième ligne d adresse de livraison shippingdistrict string Quartier shippingtype deliverytype Méthode de livraison (cf. 4.10) shippingzipcode string Code postal transactionshippinginfo.shippingcity, transactionshippinginfo.shippingcountry, transactionshippinginfo.shippingdeliverycompanyname, transactionshippinginfo.shippingname, transactionshippinginfo.shippingphone, transactionshippinginfo.shippingspeed, transactionshippinginfo.shippingstate, transactionshippinginfo.shippingstatus, transactionshippinginfo.shippingstreetnumber, transactionshippinginfo.shippingstreet, transactionshippinginfo.shippingstreet2, transactionshippinginfo.shippingdistrict, transactionshippinginfo.shippingtype, transactionshippinginfo.shippingzipcode 4.25. transactionextrainfo Nom du champ Type Description ctxmode string transactionextrainfo.ctxmode @Lyra Network- 21/ 55

4.26. paymentcreationinfo Ce champ décrit les paramètres nécessaires à la création de la transaction ainsi qu à la vérification de l enrôlement de la carte. Nom du champ Type Description Obligatoire paymentgeneralinfo createpaymentgeneralinfo Cf. 4.2Erreur! Source du renvoi introuvable. cardinfo createcardinfo Cf. 4.3 threedsresult threedsresult Cf. 4.27 subpaymentinfo createsubpaymentinfo Cf.4.4 customerinfo createcustomerinfo Cf.4.5 shippinginfo createshippinginfo Cf. 4.6 extrainfo createextrainfo Cf.4.7 La signature permet de valider l intégrité de la réponse, le calcul de cette signature se fait en prenant les paramètres dans l ordre suivant : paymentgeneralinfo, cardinfo, threedsresult, subpaymentinfo, customerinfo, shippinginfo, extrainfo 4.27. threedsresult Ce champ décrit le résultat d une authentification 3D-Secure réalisée par le commerçant. Nom du champ Type Description Obligatoire threedsbrand string Brand de la carte ("VISA" ou "MASTERCARD") Statut d enrôlement du porteur : "Y" : Enrôlé threedsenrolled string "N" : Non enrôlé "U" : Inconnu Statut authentification du porteur: "Y" : Authentifié 3DS threedsstatus string "N" : Erreur Authentification "U" : Authentification impossible "A" : Essai d authentification threedseci string Indicateur de commerce Electronique threedsxid string Numéro de transaction 3DS threedscavv string Certificat de l ACS Algorithme de vérification de l authentification du porteur (CAVV) : "0" : HMAC threedscavvalgorithm string "1" : CVV "2" : CVV_ATN "3" : Mastercard SPA Remarque : threedsresult.threedsbrand, threedsresult.threedsenrolled, threedsresult.threedsstatus, threedsresult.threedseci, threedsresult.threedsxid, threedsresult.threedscavv, threedsresult.threedscavvalgorithm Ce champ est facultatif lors de la création d une transaction (méthode create). Il devient obligatoire lorsque le marchand a réalisé le processus 3D-Secure, quelle que soit l issue de l authentification. @Lyra Network- 22/ 55

Cas des cartes non enrôlées (threedsenrolled = "N"): Le marchand devra obligatoirement fournir les champs suivants : threedsbrand, threedsenrolled. Les autres champs (threedsstatus, threedseci, threedsxid, threedscavv, et threedscavvalgorithm) ne devront pas être envoyés. Cas des cartes enrôlées (threedsenrolled = "Y"): Le marchand devra obligatoirement fournir tous les champs: threedsbrand, threedsenrolled, threedsstatus, threedsxid. Dans le cas où l internaute s est correctement authentifié (threedsstatus = "Y" ou "A") Les champs threedseci, threedscavv et threedscavvalgorithm deviennent obligatoires. Dans le cas où l internaute ne s est pas authentifié (threedsstatus = "N" ou "U"), les champs threedseci, threedscavv et threedscavvalgorithm ne doivent pas être envoyés Cas des cartes dont le statut d enrôlement est inconnu (threedsenrolled = "U"): Le marchand devra obligatoirement fournir les champs suivants : threedsbrand, threedsenrolled. Les autres champs (threedsstatus, threedseci, threedsxid, threedscavv, et threedscavvalgorithm) ne devront pas être envoyés. 4.28. standardresponse Ce type permet de décrire la réponse des méthodes cancel, force et validate. Nom du champ Type Description errorcode int Code d erreur (cf. 3) extendederrorcode String Précision sur le code d erreur transactionstatus int Statut de la transaction (cf.6) timestamp long Timestamp permettant la génération de signature unique signature String Signature de la transaction (ci-dessous La signature permet de valider l intégrité de la réponse, le calcul de cette signature se fait en prenant les paramètres dans l ordre suivant : errorcode, extendederrorcode, transactionstatus, timestamp @Lyra Network- 23/ 55

5. Signature Un certificat est nécessaire pour dialoguer avec la plateforme de paiement. Il est mis à disposition de toutes les personnes habilitées à la consultation des certificats dans votre outil de gestion de caisse à l emplacement suivant : Paramètres / Boutique / Certificat. Il existe deux certificats différents : un pour la plateforme de test et un pour la plateforme de production. La signature sera générée comme suit : Création d'une chaîne de caractère représentant la concaténation des paramètres, séparés par le caractère "+". Ajout à cette chaîne d'un "certificat " numérique (de test ou de production selon le contexte). Hachage de la chaîne résultante avec l'algorithme SHA1. La plateforme de paiement effectuera obligatoirement la vérification de la signature. Il est de la responsabilité du commerçant de vérifier à son tour la signature transmise en retour. L ordre des champs doit être respecté. Les champs de type numérique ne doivent pas avoir de 0 à gauche du digit le plus significatif. Les champs de type bool prennent les valeurs suivantes : - 1 pour vrai (true) - 0 pour faux (false) Les champs de type String non renseignés seront vides. Afin de simplifier le calcul de signature, les champs de type datetime ne sont pas pris en compte. En mode TEST, en cas de mauvais calcul de signature, le code erreur renvoyé est «BAD_SIGNATURE» et, la chaine de caractère utilisée pour la signature côté serveur est alors renvoyée dans le champ extendederrorcode. @Lyra Network- 24/ 55

6. Statut d une transaction Les différents statuts de la transaction (transactionstatus) peuvent être : Valeur transactionstatus transactionstatuslabel 0 1 2 3 4 5 6 7 8 9 11 12 Initial (en traitement) Réservé à un usage spécifique A valider : Cas d un paiement créé en validation manuelle et pour lequel l autorisation a été acceptée. A forcer Contacter l émetteur Ce statut apparaît occasionnellement lorsqu un client a dépassé le plafond des paiements autorisés pour sa carte. Le paiement est considéré comme refusé. A valider et autoriser Cas d un paiement créé en validation manuelle, dont la date de présentation est supérieure à 6 jours et pour laquelle une prise d empreinte a été réalisée avec succès. En attente de remise : Cas d un paiement accepté, validé, et dont la date de présentation est inférieure à 6 jours. En attente d autorisation : Cas d un paiement différé, dont la date de présentation est supérieure à 6 jours, et pour lequel une prise d empreinte a été réalisée avec succès. Remisée : Cas d une transaction acceptée et remise en banque. Expiré : Cas d un paiement créé en validation manuelle et pour lequel l autorisation a été acceptée mais dont la date de présentation a été atteinte. Refusé : Cas d un paiement refusé quel que soit le motif (demande d autorisation, contrôles locaux etc...) Annulé : Cas d un paiement annulé par le marchand depuis le BO ou via une requête cancel En cours de remise Réservé à un usage spécifique En cours d autorisation Réservé à un usage spécifique "INITIAL" "AUTHORISED_TO_VALIDATE" " REFUSED " "WAITING_AUTHORISATION_TO_VALIDATE" "AUTHORISED" "WAITING_AUTHORISATION" "CAPTURED" "EXPIRED" " REFUSED " "CANCELLED" "AUTHORISED" "WAITING_AUTHORISATION" 13 En échec Réservé à un usage spécifique "CAPTURE_FAILED" @Lyra Network- 25/ 55

7. Description des méthodes 7.1. Maintien de la session HTTP entre chaque requête Important : L architecture de la plateforme de paiement reposant sur un ensemble de serveurs avec répartition de charge, il est nécessaire que chaque requête associée à un même paiement soit réalisée avec la même session HTTP afin d assurer la continuité du processus. Pour cela, à chaque requête createwiththreeds, une session est créée coté serveur. L ID de la session est renvoyé dans l entête HTTP de la réponse. Il devra être retourné dans les requêtes finalizewiththreeds suivantes. En java Une fois le client WebService créé (port), utiliser la méthode signalée en gras dans le code suivant : Service service = Service.create(wsdlURL, qname); ThreeDSecure port = service.getport(threedsecure.class); ((BindingProvider) port).getrequestcontext().put(bindingprovider.session_maintain_property, true); Cela permet au serveur de ne pas ignorer les infos de session associées à la requête http et de maintenir un cookie avec l ID de session. En PHP Après l appel à la fonction createwiththreeds, la session est créée côté serveur et renvoyée dans les headers HTTP de la réponse. Pour les méthodes suivantes de la même transaction, il faut récupérer ce header et le transmettre en tant que cookie dans la requête HTTP. Voici un exemple de code pour récupérer l id de session et le transmettre : /* La méthode ci-dessous permet de récupérer l entête HTTP de la réponse */ $header = $client-> getlastresponseheaders(); /* Dans la chaîne de caractère obtenue, nous recherchons la présence de l ID de la session HTTP, stockée dans l élément "JSESSIONID" : */ if(!preg_match("#jsessionid=([a-za-z0-9\.]+)#",$header, $matches)){ return "Aucun ID de Session Renvoyé.";//Cas d erreur technique; } $cookie = $matches[1]; /*La méthode ci-dessous permet de spécifier un cookie qui sera envoyé dans chaque entête http */ $client-> setcookie ("JSESSIONID", $cookie); Il est donc nécessaire de stocker cet id de session car lors du retour de l ACS, décorrélé des requêtes createwiththreeds, il faut également l envoyer. @Lyra Network- 26/ 55