AMEX Web Services IP Payments HTTPS Comm Guide
Transcription
AMEX Web Services IP Payments HTTPS Comm Guide
Guide de transmission Protocole HTTPS Passerelle de paiement IP Services Web AMERICAN EXPRESS Expansion du réseau Renseignements confidentiels et privatifs d’American Express POS020052, v2.3, 7 mai 2009 0903070 Exigences d’American Express en matière de confidentialité Le présent document contient des secrets commerciaux et des renseignements confidentiels et privatifs d’American Express. Il est interdit au destinataire de le reproduire, de l’utiliser et de le divulguer, en totalité ou en partie, sauf à seule fin d’évaluer les spécifications et les systèmes qui y sont décrits. © 2006-2009 American Express Travel Related Services Company, Inc. Tous droits réservés. Aucune partie du présent document ne doit être reproduite sous quelque forme que ce soit ni par aucun moyen, électronique ou mécanique, y compris un système d’archivage et de recherche d’information, sans le consentement préalable écrit et explicite d’American Express Travel Related Services Company, Inc. Le présent document contient des secrets commerciaux ainsi que des renseignements confidentiels et privatifs d’American Express et des sociétés membres de son groupe qui ne doivent être divulgués à des tiers, en totalité ou en partie, sans le consentement écrit préalable d’American Express. 0903070 Rens. priv. et conf. d’American Express Guide de transmission HTTPS – Serv. Web Liste des mises à jour Numéro Date Réviseur Approbateur Description 2.3 05/07/09 R. Wong B. Jones Première diffusion de la version française. 7 mai 2009 POS020052 (0903070) i Guide de transmission HTTPS – Serv. Web Rens. priv. et conf. d’American Express Page intentionnellement laissée en blanc. ii POS020052 (0903070) 7 mai 2009 Rens. priv. et conf. d’American Express Guide de transmission HTTPS – Serv. Web Table des matières 1.0 Introduction....................................................................................................................... 1 2.0 Services de paiement IP offerts ........................................................................................ 3 2.1 Aperçu................................................................................................................................. 3 2.2 Conception fonctionnelle.................................................................................................... 3 2.3 Formats de fichier pris en charge........................................................................................ 4 3.0 Connectivité....................................................................................................................... 5 4.0 Message de demande......................................................................................................... 7 5.0 Message de réponse : navigateur et terminal ............................................................... 11 5.1 Messages de réponse reçus du serveur.............................................................................. 11 5.2 Messages d’erreur Java ..................................................................................................... 12 6.0 Transmission.................................................................................................................... 13 6.1 Exemple de message ISO 8583 dans le format TIM......................................................... 13 6.1.1 Validation de transfert SSL sur une nouvelle connexion TCP .......................................... 14 6.1.2 Envoi d’une commande HTTP POST............................................................................... 15 7.0 Marche à suivre pour créer un client test en Java ....................................................... 17 8.0 Marche à suivre pour créer un client test en .Net (C#)................................................ 19 8.1 Exemple d’un client C# .................................................................................................... 20 9.0 Marche à suivre pour créer un client test en C++........................................................ 21 9.1 Exemple d’un client C++ — Méthode Connect ............................................................... 22 9.2 Exemple d’un client C++ — Méthode Send..................................................................... 23 10.0 Refus, erreurs et pannes ................................................................................................. 25 11.0 Codes de pays et de région ............................................................................................. 27 7 mai 2009 POS020052 (0903070) iii Guide de transmission HTTPS – Serv. Web Rens. priv. et conf. d’American Express Page intentionnellement laissée en blanc. iv POS020052 (0903070) 7 mai 2009 Rens. priv. et conf. d’American Express 1.0 Guide de transmission HTTPS – Serv. Web Introduction Le Guide de transmission – Protocole HTTPS – Passerelle de paiement IP – Services Web a été rédigé pour les programmeurs des marchands, des sociétés de traitement autorisées, des développeurs indépendants et des fournisseurs de logiciels et de terminaux pour les aider à concevoir des interfaces pour les communications avec les systèmes d’American Express. Le présent document ne vise que les connexions utilisées pour transmettre les données. Les formats de fichier et les définitions de champs sont fournis dans d’autres documents d’American Express (par exemple, l’un des formats du message de demande d’autorisation est décrit dans le Guide mondial des autorisations des opérations de crédit d’American Express). 7 mai 2009 POS020052 (0903070) 1 Guide de transmission HTTPS – Serv. Web Rens. priv. et conf. d’American Express Page intentionnellement laissée en blanc. 2 POS020052 (0903070) 7 mai 2009 Rens. priv. et conf. d’American Express Guide de transmission HTTPS – Serv. Web 2.0 Services de paiement IP offerts 2.1 Aperçu Le présent document est fourni aux clients qui veulent envoyer différents messages de demandes touchant les règlements financiers à American Express par l’entremise d’Internet, en accédant à des adresses URL spécifiques d’American Express, qui sont fournies dans le présent guide. Il contient les renseignements techniques nécessaires pour permettre aux marchands, aux sociétés de traitement autorisées, aux développeurs indépendants et aux fournisseurs de logiciels et de terminaux de communiquer avec les systèmes d’American Express au moyen de la passerelle de paiement IP – Services Web d’American Express. Le présent guide fournit une explication sommaire des options URL proposées, la marche à suivre pour accéder aux adresses URL et les exigences que doivent remplir le système du marchand ou du fournisseur. Il ne présente aucune description des méthodes de saisie électronique des données et d’autorisation d’American Express. Pour des renseignements à ces sujets, consultez le site Web www.americanexpress.com/merchantspecs. 2.2 Conception fonctionnelle La passerelle de paiement IP – Services Web d’American Express permet aux marchands et aux fournisseurs de transmettre des messages (autorisations et saisie électronique des données) en temps réel par Internet. Le protocole HTTPS est utilisé pour offrir un accès sécurisé aux adresses URL de la passerelle. Les marchands et les fournisseurs utilisent la solution de passerelle de paiement IP – Services Web d’American Express en accédant aux adresses URL appropriées. Les données du message de demande sont incorporées dans une variable cachée dans la transmission à American Express; et une commande HTTPS POST est utilisée pour transmettre ces données à la passerelle de paiement IP – Services Web d’American Express. Aucun code d’utilisateur ni mot de passe ne sont nécessaires. American Express utilise le protocole d’authentification SSL et transmet un certificat SSL dans le message de validation de transfert retourné au terminal ou au système du marchand ou du fournisseur. Le terminal ou le système doit accepter ce certificat. Les systèmes d’American Express traitent la demande reçue et retournent une réponse dans une variable cachée du message de réponse produit par American Express. De plus amples explications sur ce processus sont fournies dans les sections qui suivent. 7 mai 2009 POS020052 (0903070) 3 Guide de transmission HTTPS – Serv. Web 2.3 Rens. priv. et conf. d’American Express Formats de fichier pris en charge Au moment de rédiger le présent document, voici les formats de fichier de demande d’autorisation qui sont pris en charge : • Guide des autorisations des opérations de crédit – POS020005 • Guide mondial des autorisations des opérations de crédit – POS020041 • Spécifications pour l’interface des terminaux – TIM – Services Web (format XML) – POS020050 • Guide mondial des autorisations des opérations de crédit – Services Web (format XML) – POS020054 • Spécifications pour l’interface des terminaux – TIM – Services Web (terminal à propriété exclusive, format autre que XML) – POS020055 • Guide des autorisations des opérations de crédit par ligne commutée – Services Web – POS020067 • MULTILINK México and IDC Technical Specification – POS020068 (document en anglais seulement) 4 POS020052 (0903070) 7 mai 2009 Rens. priv. et conf. d’American Express 3.0 Guide de transmission HTTPS – Serv. Web Connectivité • Les transactions doivent être envoyées à la passerelle de paiement IP – Services Web. Les adresses URL pertinentes seront fournies par le représentant d’American Express. • Les spécifications détaillées pour le protocole HTTP/1.1 sont fournies dans le document RFC2616, sur le site Web http://www.w3.org/Protocols/rfc2616/rfc2616.html. * • Les transactions sont transmises dans les en-têtes de la demande, dans le cas de la méthode POST. À partir de la page 13, vous trouverez des exemples d’opérations transmises à la passerelle de paiement IP – Services Web au moyen de la méthode POST. * Le document RFC2616 n'est présenté qu'en anglais sur cette page Web, mais il est possible d'en trouver des versions françaises non officielles à l'aide de différents moteurs de recherche Internet. 7 mai 2009 POS020052 (0903070) 5 Guide de transmission HTTPS – Serv. Web Rens. priv. et conf. d’American Express Page intentionnellement laissée en blanc. 6 POS020052 (0903070) 7 mai 2009 Rens. priv. et conf. d’American Express 4.0 Guide de transmission HTTPS – Serv. Web Message de demande • Établissez une connexion HTTPS avec le nom de serveur fourni en utilisant le PROTOCOLE et le PORT déterminés. • Les valeurs ci-dessous doivent être transmises dans l’en-tête du message de demande pour que la passerelle de paiement IP d’American Express puisse les traiter. • – Origin (origine) – Country (pays) – Region (région) – Message (Message) – MerchNbr (numéro d’établissement) – RtInd (code de routage) Désignez le message de demande d’autorisation comme un train d’octets dans la variable cachée : AuthorizationRequestParam • Le terminal établira une connexion avec l’adresse URL. • Lancez une commande HTTPS POST pour envoyer un message de demande à l’adresse URL de la passerelle de paiement IP – Services Web d’American Express. • Le message de demande (ex., un message ISO ou la valeur XML d’autorisation) ne devrait pas figurer dans les valeurs de l’en-tête. Les données du message doivent plutôt être transmises dans la variable POST de la demande, c’est-à-dire dans la valeur clé AuthorizationRequestParam. Pour des renseignements détaillés sur les en-têtes servant à désigner le terminal et le navigateur utilisés pour transmettre le message de demande, voir les deux prochaines pages. 7 mai 2009 POS020052 (0903070) 7 Guide de transmission HTTPS – Serv. Web 4.0 Rens. priv. et conf. d’American Express Message de demande (suite) En-tête pour désigner le navigateur – Message de demande POST POST /IPPayments/inter/CardAuthorization.do HTTP/1.1 Accept image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.msexcel, application/vnd.ms-powerpoint, application/msword, application/xshockwave-flash, */* Referer <référent> Accept-Language en-us Content-Type Texte/en/clair User-Agent Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727) Host <URL : fournie au marchand ou au fournisseur par le représentant d’American Express> Content-Length <taille dynamique du message> Cache-Control Sans antémémoire Connection Persistante origin <nom du fournisseur> Remarque : les marchands qui conçoivent leur propre logiciel doivent utiliser <nom du marchand>. country Voir le tableau des codes de pays et de région à la page 27. region Voir le tableau des codes de pays et de région à la page 27. message Voir les types de message à la page 9. MerchNbr Numéro d’établissement RtInd Voir le tableau des codes de routage à la page 9. En-tête pour désigner le terminal – Message de demande POST POST /IPPayments/inter/CardAuthorization.do HTTP/1.1 Accept-Language en-us Content-type Texte/en/clair User-Agent Terminal;<nom du fournisseur>;<type de terminal> Host <URL : fournie au marchand ou au fournisseur par le représentant d’American Express> Content-Length <taille dynamique du message> Cache-Control Sans antémémoire Connection Persistante origin <Nom du fournisseur> country Voir le tableau des codes de pays et de région à la page 27. region Voir le tableau des codes de pays et de région à la page 27. message Voir les types de message à la page 9. MerchNbr Numéro d’établissement RtInd Voir le tableau des codes de routage à la page 9. Remarque : les noms de variable figurant dans la première colonne des tableaux ci-dessus sont sensibles à la casse. 8 POS020052 (0903070) 7 mai 2009 Rens. priv. et conf. d’American Express 4.0 • Message de demande (suite) Code de routage (à utiliser dans la variable RtInd, voir la page précédente) Code de routage • Guide de transmission HTTPS – Serv. Web Description 000 Les données sont acheminées au réseau mondial des autorisations des opérations de crédit (pour tous les marchands des États-Unis et ceux de certaines autres régions). 001 Les données sont acheminées à MultiLinks pour les marchands du Mexique. 002 Les données sont acheminées à MultiLinks pour les marchands des marchés en $US (IDC). 003 Les données sont acheminées à Stratus – Mexique. 004 Les données sont acheminées à Stratus – Argentine. 005 Les données sont acheminées à Stratus – PHX32. 006 Les données sont acheminées à Stratus – PHX36. 007 Les données sont acheminées à Stratus – SYD01. 008 Les données sont acheminées à Stratus – SIN01. 009 Les données sont acheminées à Stratus – HKG02. 010 Les données sont acheminées à Stratus – BSH07 UK (Brighton) – pour les marchands du Royaume-Uni, de la Belgique (y compris le Luxembourg), la Hollande, la France, l’Italie, la Finlande et la Pologne. 011 Les données sont acheminées à Stratus FRA03 German (Francfort) – pour les marchands de l’Allemagne, de la Suisse et de la Suède. Types de message (à utiliser dans la variable message, voir la page précédente) Type de message Description ISO MLMI ISO 8583 v0 (nouveau) – Spécifications techniques MULTILINK pour le Mexique et IDC (région ALA). ISO DLA ISO 8583 v0 – Connexion directe en Argentine (région ALA). ISO POSM ISO 8583 v0 – PdV du Mexique (région ALA). ISO POSA ISO 8583 v0 – PdV de l’Argentine (région ALA) ISO CAG ISO 8583 v1 – Guide des autorisations des opérations de crédit (région ALA). ISO GCAG ISO 8583 v1 – Guide mondial des autorisations des opérations de crédit (É.-U. et région ALA) XML GCAG Guide mondial des autorisations des opérations de crédit (format XML) (É.-U.) XML PIP Spécifications pour l’interface des terminaux – TIM (format XML) (É.-U.) ISO PIP ISO 8583 v0 -- Spécifications pour l’interface des terminaux – TIM (É.-U. et région ALA) WS DUAG Guide des autorisations des opérations de crédit par ligne commutée (É.-U.) EDC JAPA Spécifications pour les terminaux de saisie électronique des données (région JAPA) APACS Spécifications APACS 30 pour les autorisations des opérations de crédit (région EMOA) GICC Protocole GICC pour les autorisations des opérations de crédit au PdV (région EMOA) Les marchands et les fournisseurs doivent transmettre la variable ci-dessous dans le corps du message de demande (dans les variables pour le navigateur et le terminal). La valeur entrée dans la variable correspond au message de charge utile réelle. Corps du message de demande – Navigateur et terminal AuthorizationRequestParam=<Demande-autorisation-dynamique> 7 mai 2009 POS020052 (0903070) 9 Guide de transmission HTTPS – Serv. Web Rens. priv. et conf. d’American Express Page intentionnellement laissée en blanc. 10 POS020052 (0903070) 7 mai 2009 Rens. priv. et conf. d’American Express 5.0 Guide de transmission HTTPS – Serv. Web Message de réponse : navigateur et terminal • Lancez une commande HTTPS POST une fois connecté pour récupérer le message de réponse à l’adresse URL de la passerelle de paiement IP – Services Web d’American Express. • Procédez ensuite à l’extraction du message de réponse à la demande d’autorisation dans le contenu du train reçu du serveur. En-tête – Message de réponse (Status-Line) HTTP/1.1 200 OK (si la transaction a réussie) Connection Fermer Content-Language en-us Content-Type Texte/en/clair Date <Date Mar, 18 Juil 2006 00:19:48 TU> Server IBM_HTTP_Server Actual Response Message String <message de réponse sous forme de chaîne de données> 5.1 Messages de réponse reçus du serveur Code d’état Description 200 OK – La demande a été traitée avec succès. 204 Aucune réponse – Le serveur a reçu la demande, mais il n’y a aucune information à retourner; le client devrait garder le même type d’affichage de document, principalement pour permettre l’entrée de scripts sans modifier le document. Ce scénario a lieu quand la passerelle IP attend une réponse interne d’un service connexe. 400 Erreur dans la demande -- La syntaxe de la demande était erronée ou il était impossible de répondre à la demande en soi. Il peut y avoir quelques erreurs dans le CHEMIN ou des erreurs de connexion aux serveurs appropriés. 404 Introuvable – Le serveur n’a rien trouvé qui correspondait au URI donné. 500 Erreur interne – Une condition imprévue s’est manifestée et le serveur n’a pas pu traiter la demande. 501 Non pris en charge – Le serveur ne prend pas en charge la fonction demandée. 502 Surcharge temporaire – Le serveur n’a pu traiter la demande en raison d’une forte utilisation (que ce soit des services HTTP ou d’autres demandes). En principe, la situation devrait être temporaire. 7 mai 2009 POS020052 (0903070) 11 Guide de transmission HTTPS – Serv. Web 5.2 Rens. priv. et conf. d’American Express Messages d’erreur Java Problème Cause java.net.SocketException 1. Le délai d’opération a expiré. Hôte inaccessible. 2. Connexion impossible. Une adresse invalide pourrait être à l’origine de ce problème. • Barre oblique « / » manquante dans le chemin. • Mauvaise adresse URL. Vérifiez si l’adresse URL débute par « HTTP » et non « HTTPS ». java.net.UnknownHostException: <host name> Mauvaise adresse URL entrée par l’utilisateur. java.io.FileNotFoundException Protocole invalide. 12 POS020052 (0903070) 7 mai 2009 Rens. priv. et conf. d’American Express 6.0 Guide de transmission HTTPS – Serv. Web Transmission Le diagramme ci-dessous montre les concepts de base de la cryptographie et du traitement SSL exécutés sur une transaction SSL. De plus, il montre la circulation des messages de demande et de réponse HTTP POST, avec les en-têtes. Le SSL est un procédé de chiffrement complexe qui ne nécessite pas qu’une clé secrète soit échangée entre le client et le serveur avant le début de la transaction. Le SSL utilise des clés publiques et privées pour fournir un chiffrement souple qui peut être établi au moment d’effectuer la transaction sécurisée. Remarque : dans le diagramme ci-dessous, une demande lancée par un navigateur est utilisée comme exemple de message POST. Le type de message peut varier selon le matériel utilisé (navigateur ou terminal du marchand) pour transmettre la demande d’autorisation 6.1 Exemple de message ISO 8583 dans le format TIM L’exemple ci-dessous représente un message ISO 8583 envoyé par un terminal en format TIM (traitement par interfaces multiples). L’application de l’utilisateur « /IPPayments/inter/ CardAuthorization.do » transmettra les données sur la transaction à l’adresse URL de la passerelle de paiement IP – Services Web. Pour en savoir plus, consultez les Spécifications pour l’interface des terminaux – TIM – Services Web d’American Express (POS020055). Client American Express SYN Une connexion sécurisée doit être établie pour cette session. Le navigateur établit une connexion TCP sur le port 443 TCP HTTPS. ACK 7 mai 2009 POS020052 (0903070) 13 Guide de transmission HTTPS – Serv. Web 6.1.1 Rens. priv. et conf. d’American Express Validation de transfert SSL sur une nouvelle connexion TCP Client American Express CLIENT_HELLO Le client envoie une commande CLIENT_HELLO au serveur, qui doit comprendre ce qui suit : • Version SSL et TLS supérieure prise en charge par le client. • Algorithmes de chiffrement pris en charge, en ordre de préférence. • Méthodes de compression des données prises en charge. • Code de session. (Pour les nouvelles sessions SSL, le code de session = « 0 ».) • Le fichier aléatoire du client pour la création de clés. SERVER_HELLO Le serveur envoie une commande SERVER_HELLO au client, qui doit comprendre ce qui suit : • La version SSL ou TLS à utiliser pour la session SSL. • L’algorithme de chiffrement à utiliser. • La méthode de compression des données à utiliser. Remarque : pour le moment, aucun algorithme de compression n’est défini pour la version SSL et TLS 3. • Le code de session pour la présente session SSL. • Le fichier aléatoire du serveur pour la création des clés. CERTIFICATE Le serveur envoie une commande CERTIFICATE, qui inclut le certificat, la clé publique et la signature d’authentification du serveur. Le certificat de l’organisme de certification qui attribue les certificats au serveur peut aussi être joint, avec d’autres certificats. SERVER_DONE Le serveur envoie une commande SERVER_DONE, qui indique que cette étape de la validation du transfert SSL est terminée. Si le client est authentifié, d’autres commandes circulent entre le client et le serveur. CERTIFICATE_VERIFY Le client vérifie le certificat du serveur, puis envoie une commande CERTIFICATE_VERIFY. CHANGE_CIPHER_SPEC Le client envoie une commande CHANGE_CIPHER_SPEC, qui indique que les données dans les dossiers SSL subséquents envoyées par le client au cours de la présente session SSL seront chiffrées. Remarque : les en-têtes SSL de 5 octets ne sont pas chiffrés. FINISHED Le client envoie la commande FINISHED, qui contient un sommaire de toutes les commandes de validation de transfert SSL exécutées jusqu’à présent. L’utilisation de la commande FINISHED permet de s’assurer que toutes les commandes ultérieurement échangées entre le client et le serveur ont bel et bien été reçues. 14 POS020052 (0903070) 7 mai 2009 Rens. priv. et conf. d’American Express 6.1.2 Guide de transmission HTTPS – Serv. Web Envoi d’une commande HTTP POST Client American Express HTTP POST Le client envoie une commande HTTP POST, qui contient les données du marchand, au moyen de la connexion TCP fraîchement établie. Voir l’exemple de commande HTTP POST ci-dessous. POST : /IPPayments/inter/CardAuthorization.do HTTP/1.1 Accept : image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */* Referer : <espace - jsp ou page à laquelle l’application fait référence.> Accept-Language : en-us Content-Type : Texte/en/clair User-Agent : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727 Host : qwww215.americanexpress.com Content-Length : <taille dynamique du message> Cache-Control : Sans antémémoire Connection : Persistante Origin : <nom du fournisseur> Country : 840 Region : USA Message : ISO TIM MerchNbr : 1234567890 RtInd : 000 Le marchand doit envoyer la variable ci-dessous dans le corps du message. ---------------------------------------------------------AuthorizationRequestParam=<Authorization Request> ---------------------------------------------------------HTTP 100 Continue Le client devrait compléter sa demande. Cette réponse provisoire sert à informer le client que la partie initiale de la demande a été reçue et qu’elle n’a pas encore été rejetée par le serveur. Le client devrait poursuivre en envoyer le reste de sa demande ou, si celle-ci est déjà complète, ignorer cette réponse. Le serveur doit envoyer une réponse finale une fois que la demande est complète. TCP (ACK) Le serveur Web envoie un message TCP ACK pour accuser réception des deux segments TCP de la commande HTTP POST. HTTP 200 OK Le serveur Web accuse réception de la commande HTTP POST. Voir l’exemple d’en-tête HTTP POST ci-dessous. (Status-Line) : HTTP/1.1 200 OK Connection : Close Content-Language : en_US Content-Type : text/html; charset=ISO-8859-1 Date : <Date Mar, 18 Juil 2006 11:25:07 TU> Server : IBM_HTTP_Server ---------------------------------------------------------La réponse est envoyée au marchand sous forme de chaîne. ---------------------------------------------------------- 7 mai 2009 POS020052 (0903070) 15 Guide de transmission HTTPS – Serv. Web 6.1.2 Rens. priv. et conf. d’American Express Envoi d’une commande HTTP POST (suite) Client American Express TCP (ACK) Commande TCP ACK pour le segment TCP, qui contient « HTTP 200 OK ». TCP (FIN) Le serveur commence le processus de libération de la connexion TCP en envoyant un avis de fermeture. TCP (FIN) Le client commence le processus de libération de la connexion TCP. TCP (ACK) TCP (FIN) Le serveur Web libère la connexion TCP. TCP (ACK) Remarque : au moment de rédiger le présent document, American Express ne prend pas en charge les reprises de session SSL. Actuellement, American Express ne prend en charge qu’une suite de chiffrement SSL : TLS_RSA_WITH_RC4_128_MD5 – 0x04. 16 POS020052 (0903070) 7 mai 2009 Rens. priv. et conf. d’American Express 7.0 Guide de transmission HTTPS – Serv. Web Marche à suivre pour créer un client test en Java Le code Java est utilisé dans l’exemple ci-dessous pour établir une connexion et envoyer un message de demande d’autorisation dans la variable cachée. Le texte en gras représente des commentaires. //ÉTABLISSEMENT DE LA CONNEXION { ... (code du client) URL url = nouvelle URL("https://qwww215.americanexpress.com/IPPayments/inter/CardAuthorization.do"); URLConnection conn = url.openConnection(); //EN-TÊTES POUR LA COMMANDE SET – Valeurs de l’objet connexion conn.setRequestProperty("POST", "/IPPayments/inter/CardAuthorization.do HTTP/1.1" ); conn.setRequestProperty("Accept-Language", "en-us" ); conn.setRequestProperty("Content-Type", "text/en/clair" ); conn.setRequestProperty("User-Agent", "Application" ); conn.setRequestProperty("Host", "qwww215.americanexpress.com" ); conn.setRequestProperty("Content-Length", "370" ); conn.setRequestProperty("Cache-Control", "Sans antémémoire" ); conn.setRequestProperty("Connection", "Persistante" ); conn.setRequestProperty("origin", "" ); conn.setRequestProperty("country", "" ); conn.setRequestProperty("region", "" ); conn.setRequestProperty("message", "" ); conn.setRequestProperty("MerchNbr", "" ); conn.setRequestProperty("RtInd", "" ); conn.setDoInput(true); conn.setDoOutput(true); conn.setUseCaches(false); //Inscription du message de charge utile en données POST String stArgs = "AuthorizationRequestParam = Actual Payload Message"; DataOutputStream out = new DataOutputStream(conn.getOutputStream()); out.writeBytes(stArgs); System.out.println(out.toString()); out.flush(); out.close(); ... (code du client) } • Une fois la demande du marchand ou du fournisseur envoyée à la passerelle de paiement IP – Services Web, American Express retourne au terminal ou au système du marchand le certificat du serveur. • Le terminal ou le système accepte le certificat. • La passerelle de paiement IP – Services Web d’American Express continue à traiter le message. 7 mai 2009 POS020052 (0903070) 17 Guide de transmission HTTPS – Serv. Web Rens. priv. et conf. d’American Express Page intentionnellement laissée en blanc. 18 POS020052 (0903070) 7 mai 2009 Rens. priv. et conf. d’American Express 8.0 Guide de transmission HTTPS – Serv. Web Marche à suivre pour créer un client test en .Net (C#) • Créez un client C# à l’aide de Visual Studio 2005. • Vous trouverez ci-dessous une liste des classes, incluses dans .Net Framework 2.0. Les utilisateurs peuvent s’en servir pour concevoir leur client dans le langage C#. Classe HttpWebRequest Fournit une implémentation propre à HTTP de la classe WebRequest. HttpWebRequest : WebRequest, ISerializable – La classe HttpWebRequest appuie les propriétés et les méthodes définies dans la classe WebRequest ainsi que les autres propriétés et méthodes qui permettent à l’utilisateur d’interagir directement avec les serveurs au moyen du protocole HTTP. Classe HttpWebResponse Cette classe appuie les utilisations propres à HTTP des propriétés et des méthodes de la classe WebResponse. Elle sert à concevoir des applications HTTP client autonomes pour l’envoi de demandes HTTP et la réception de réponses HTTP. Voir l’extrait de code à la page suivante. 7 mai 2009 POS020052 (0903070) 19 Guide de transmission HTTPS – Serv. Web 8.1 Rens. priv. et conf. d’American Express Exemple d’un client C# public virtual string GetResponse(string Uri, string RequestMethod) { //Méthode utilisée pour la demande est « POST » HttpWebRequest webrequest = CreateWebRequest(Uri,RequestMethod); BuildReqStream(ref webrequest); HttpWebResponse webresponse; webresponse = (HttpWebResponse)webrequest.GetResponse(); Encoding enc = System.Text.Encoding.GetEncoding(1252); StreamReader loResponseStream = new StreamReader(webresponse.GetResponseStream(),enc); string Response = loResponseStream.ReadToEnd(); loResponseStream.Close(); webresponse.Close(); } return Response; public virtual HttpWebRequest CreateWebRequest(string uri,string RequestMethod) { HttpWebRequest webrequest = (HttpWebRequest) WebRequest.Create(uri); webrequest.KeepAlive = false; webrequest.Method = RequestMethod; //Information sur l’en-tête devrait respecter les spécifications; elle varie d’une région à l’autre webrequest.Headers.Add("origin", "nom de l’origine"); webrequest.Headers.Add("country", "code de pays"); webrequest.Headers.Add("message", "type de message"); webrequest.Headers.Add("region", "nom de la région"); webrequest.Headers.Add("MerchNbr", "numéro d’établis. de 10 chiffres"); - fournir par Amex webrequest.Headers.Add("RtInd", "code de routage"); webrequest.ContentType = "texte/xml"; return webrequest; }//Fin de la session sécurisée CreateWebRequest private void BuildReqStream(ref HttpWebRequest webrequest) { string strPost; strPost = "AuthorizationRequestParam=actual message string"; StreamWriter myWriter = null; strPost=Request; - This is were the auth message needs to be sent. webrequest.ContentLength = strPost.Length; try { myWriter = new StreamWriter(webrequest.GetRequestStream()); myWriter.Write(strPost); } 20 } finally { myWriter.Close(); } POS020052 (0903070) 7 mai 2009 Rens. priv. et conf. d’American Express 9.0 Guide de transmission HTTPS – Serv. Web Marche à suivre pour créer un client test en C++ • Créez un client C++ à l’aide de Visual Studio 2005. • Voir les exemples des méthodes Connect et Send aux pages suivantes. 7 mai 2009 POS020052 (0903070) 21 Guide de transmission HTTPS – Serv. Web 9.1 Rens. priv. et conf. d’American Express Exemple d’un client C++ — Méthode Connect ///////////////////////////////////////////////////////////////////////////////////////////// //Méthode : Connect //Objet : La méthode Connect exige deux variables : HostAddress et Port ///////////////////////////////////////////////////////////////////////////////////////////// bool XHttpConnection::Connect(const char *ptHostAddress, unsigned short nHostPort, const char *ptUser, const char *ptPassword, bool bSecure) { DWORD dwFlags = 0; if (m_pxInternetSession == NULL) { if (Initialize() == false) { return false; } } try { if (bSecure) { dwFlags = INTERNET_FLAG_SECURE; } m_pxHttpConnection = m_pxInternetSession->GetHttpConnection(ptHostAddress, dwFlags, nHostPort,ptUser,ptPassword); } catch(CInternetException *pIntEx) { TCHAR szCause[255]; pIntEx->GetErrorMessage(szCause,255); //Journal g_Log.PutEntry( (LPSTR)(LPCTSTR)theEdglibApp.GetTaskName(), //inscrire au journal CInternetException "XHttpConnection::Connect", HTTP_EXCEPTION, TRACING_ELMNT_EDGLIB, EDGLIB_RECORDING_SOURCE_SOCKETS, "%s", szCause) ; return false; } return true; } 22 POS020052 (0903070) 7 mai 2009 Rens. priv. et conf. d’American Express 9.2 Guide de transmission HTTPS – Serv. Web Exemple d’un client C++ — Méthode Send //////////////////////////////////////////////////////////////////////////////////////////// //Méthode : Send //Objet : transmettre des données au système //Variables : // ptMessage – Message à envoyer // ptHeaders – En-têtes à ajouter (exemple Accept:text/*\r\n) // DEVRAIT inclure tous les en-têtes // ptVerb – POST/GET // ptObjectName – Destinataire ??CardAuthorization.do // ptHttpVersion /////////////////////////////////////////////////////////////////////////////////////////// int XHttpConnection::Send(CString* ptMessage, CString *ptHeaders, int iVerb, CString *ptObjectName, CString ptHttpVersion, DWORD *pStatusCode) { try { m_pxFile = m_pxHttpConnection->OpenRequest(iVerb, //Verbe (LPCTSTR) ptObjectName, //Objet ciblé - ?? whatever .do ?? CardAuthorization.do NULL, //(LPCTSTR) ptHeaders, PAS CERTAIN QU’IL S’AGISSE DES EN-TÊTES 1, //toujours utiliser 1 comme contexte, il s’agit d’une session enfant NULL, //si la demande correspond à null, seul le texte est accepté (LPCTSTR) ptHttpVersion, //version HTTP, HTTP/1.0 par défaut, Amex demande HTTP/1.1 INTERNET_FLAG_RELOAD ¦ INTERNET_FLAG_SECURE); //antémémoire, HTTPS m_pxFile->AddRequestHeaders((LPCTSTR) ptHeaders); DWORD iSize = ptMessage->GetLength(); //En-têtes déroutants, possible de les inscrire dans OpenRequest, AddRequestHeaders et SendRequest BOOL bOK = m_pxFile->SendRequest(NULL,0,(LPVOID) ptMessage, iSize); if (bOK) { m_pxFile->QueryInfoStatusCode(*pStatusCode); } else { *pStatusCode = 0; } return (int) iSize; } catch(CInternetException *pxIntEx) { TCHAR szCause[255]; pxIntEx->GetErrorMessage(szCause,255); g_Log.PutEntry( (LPSTR)(LPCTSTR)theEdglibApp.GetTaskName(), //consigne le CInternetException "XHttpConnection::Send", HTTP_EXCEPTION, TRACING_ELMNT_EDGLIB, EDGLIB_RECORDING_SOURCE_SOCKETS, "%s", szCause) ; Disconnect(); return -1; } } 7 mai 2009 POS020052 (0903070) 23 Guide de transmission HTTPS – Serv. Web Rens. priv. et conf. d’American Express Page intentionnellement laissée en blanc. 24 POS020052 (0903070) 7 mai 2009 Rens. priv. et conf. d’American Express 10.0 • Guide de transmission HTTPS – Serv. Web Refus, erreurs et pannes Pannes entraînées par le dépassement du temps imparti – Le temps requis pour traiter un message peut parfois dépasser le temps imparti. Dans ces cas, un message d’erreur s’affiche à l’écran du terminal ou de l’ordinateur. De plus, les pannes associées à un problème de transmission ou de système n’ayant aucun lien avec le contenu du message sont classées dans la présente catégorie de pannes. Aucune description supplémentaire n’est fournie pour ce type d’erreur. Le temps imparti par la passerelle de paiement IP – Services Web d’American Express est de 30 secondes (ainsi, après 30 secondes, American Express ferme la connexion et envoie une réponse « null » au marchand ou au fournisseur, précisant le code d’état « 200 »). • Rejet du message de demande ou erreurs dans celui-ci – American Express retourne un message de réponse précisant des code d’état et (ou) d’erreur qui expliquent pourquoi un message de demande a été refusé ou rejeté. Si les systèmes internes d’American Express sont incapables d’analyser le message ou si ce dernier ne respecte pas le format exigé, une chaîne vierge (" "), sans code d’état, est retournée en réponse. 7 mai 2009 POS020052 (0903070) 25 Guide de transmission HTTPS – Serv. Web Rens. priv. et conf. d’American Express Page intentionnellement laissée en blanc. 26 POS020052 (0903070) 7 mai 2009 Rens. priv. et conf. d’American Express 11.0 Guide de transmission HTTPS – Serv. Web Codes de pays et de région Le tableau ci-dessous dresse la liste des codes de pays et de région utilisés par American Express. Il précise le nom du pays ou de l’entité avec le code de pays ISO et le code de région American Express correspondant. Veuillez noter que les codes de pays en lettres (et sur fond gris) ne sont fournis qu’à titre de référence et ne doivent pas être utilisés. Seuls les codes de pays en chiffres et les codes de région en lettres peuvent être utilisés dans les dispositions de fichier décrites dans les présentes spécifications. Codes de pays et de région Code de pays Nom de pays ou d’entité Afghanistan Afrique du Sud Albanie Algérie Allemagne, République d’ Andorre Angola (UNITA) Anguilla Antigua et Barbuda Antilles néerlandaises Arabie Saoudite Argentine Arménie Aruba Australie Autriche Azerbaïdjan Bahamas Bahreïn Bangladesh Barbade Belgique Belize Bénin Bermudes Bhoutan Biélorussie Bolivie Bosnie-Herzégovine Botswana Brésil Brunéi Darussalam Bulgarie Burkina Faso 7 mai 2009 Région Chiffres Lettres Lettres 004 710 008 012 276 020 024 660 028 530 682 032 051 533 036 040 031 044 048 050 052 056 084 204 060 064 112 068 070 072 076 096 100 854 AFG ZAF ALB DZA DEU AND AGO AIA ATG ANT SAU ARG ARM ABW AUS AUT AZE BHS BHR BGD BRB BEL BLZ BEN BMU BTN BLR BOL BIH BWA BRA BRN BGR BFA LAC LAC LAC LAC LAC JAPA LAC JAPA LAC LAC LAC LAC JAPA - POS020052 (0903070) 27 Guide de transmission HTTPS – Serv. Web Rens. priv. et conf. d’American Express Codes de pays et de région Code de pays Nom de pays ou d’entité Burundi Cambodge Cameroun Canada Cap-Vert Chili Chine Chypre Cité du Vatican (Saint-Siège) Colombie Comores Congo, République démocratique du Congo, République du Corée, République de Corée, République populaire démocratique de Costa Rica Côte d’Ivoire Croatie, République de Cuba Danemark Djibouti Dominique Égypte El Salvador Émirats arabes unis Équateur Erythrée Espagne Estonie États-Unis Éthiopie Fidji Finlande France Gabon Gambie Géorgie Ghana Gibraltar Grèce Grenade Groenland Guadeloupe Guam Guatemala 28 Région Chiffres Lettres Lettres 108 116 120 124 132 152 156 196 336 170 174 180 178 410 408 188 384 191 192 208 262 212 818 222 784 218 232 724 233 840 231 242 246 250 266 270 268 288 292 300 308 304 312 316 320 BDI KHM CMR CAN CPV CHL CHN CYP VAT COL COM COD COG KOR PRK CRI CIV HRV CUB DNK DJI DMA EGY SLV ARE ECU ERI ESP EST USA ETH FJI FIN FRA GAB GMB GEO GHA GIB GRC GRD GRL GLP GUM GTM JAPA CAN JAPA LAC USA LAC - POS020052 (0903070) 7 mai 2009 Rens. priv. et conf. d’American Express Guide de transmission HTTPS – Serv. Web Codes de pays et de région Code de pays Nom de pays ou d’entité Guinée Guinée équatoriale Guinée française Guinée-Bissau Guyana Haïti Honduras Hong Kong Hongrie Île Bouvet Île Christmas Île Norfolk Îles Caïmans Îles Coco (anciennement Keeling) Îles Cook Îles Féroé Îles Heard et McDonald Îles Malouines Îles Marianne du Nord Îles Marshall Îles Salomon Îles Svalbard et Jan Mayen Îles Turks et Caicos Îles vierges américaines Îles vierges britanniques Îles Wallis et Futuna Inde Indonésie Iran, République islamique d’ Iraq Irlande Islande Israël Italie Jamahiriya arabe lybienne Jamaïque Japon Jordanie Kazakhstan Kenya Kirghizistan Kiribati Koweït Lesotho Lettonie 7 mai 2009 Région Chiffres Lettres Lettres 324 226 254 624 328 332 340 344 348 074 162 574 136 166 184 234 334 238 580 584 090 744 796 850 092 876 356 360 364 368 372 352 376 380 434 388 392 400 398 404 417 296 414 426 428 GIN GNQ GUF GNB GUY HTI HND HKG HUN BVT CXR NFK CYM CCK COK FRO HMD FLK MNP MHL SLB SJM TCA VIR VGB WLF IND IDN IRN IRQ IRL ISL ISR ITA LBY JAM JPN JOR KAZ KEN KGZ KIR KWT LSO LVA LAC LAC JAPA JAPA LAC LAC LAC LAC JAPA EMEA LAC JAPA - POS020052 (0903070) 29 Guide de transmission HTTPS – Serv. Web Rens. priv. et conf. d’American Express Codes de pays et de région Code de pays Région Nom de pays ou d’entité Chiffres Lettres Lettres Liban Libéria Liechtenstein Lituanie Luxembourg Macao Macédoine Madagascar Malaisie Malawi Maldives Mali Malte Maroc Martinique Maurice Mauritanie Mayotte Mexique Micronésie, États fédérés de Moldavie, République de la Monaco Mongolie Monténégro Montserrat Mozambique Myanmar Namibie Nauru Népal Nicaragua Niger Nigeria Niue Norvège Nouvelle-Calédonie Nouvelle-Zélande Oman Ouganda Ouzbékistan Pakistan Palaos Panama Papouasie-Nouvelle-Guinée Paraguay 422 430 438 440 442 446 807 450 458 454 462 466 470 504 474 480 478 175 484 583 498 492 496 499 500 508 104 516 520 524 558 562 566 570 578 540 554 512 800 860 586 585 591 598 600 LBN LBR LIE LTU LUX MAC MKD MDG MYS MWI MDV MLI MLT MAR MTQ MUS MRT MYT MEX FSM MDA MCO MNG MNE MSR MOZ MMR NAM NRU NPL NIC NER NGA NIU NOR NCL NZL OMN UGA UZB PAK PLW PAN PNG PRY JAPA LAC JAPA LAC JAPA JAPA LAC LAC 30 POS020052 (0903070) 7 mai 2009 Rens. priv. et conf. d’American Express Guide de transmission HTTPS – Serv. Web Codes de pays et de région Code de pays Nom de pays ou d’entité Pays-Bas Pérou Petites îles avoisinant les États-Unis Philippines Pitcairn Pologne Polynésie française Portugal Puerto Rico Qatar République arabe syrienne République centrafricaine République dominicaine République populaire démocratique lao République tchèque Réunion Roumanie Royaume-Uni Russie, Fédération de Rwanda Sahara occidental Saint-Barthélemy Sainte-Hélène Sainte-Lucie Saint-Kitts-et-Nevis Saint-Marin Saint-Martin Saint-Pierre-et-Miquelon Saint-Vincent et les Grenadines Samoa Samoa américaines Sao Tomé-et-Principe Sénégal Serbie Seychelles Sierra Leone Singapour Slovaquie Slovénie Somalie Soudan Sri Lanka Suède Suisse Suriname 7 mai 2009 Région Chiffres Lettres Lettres 528 604 581 608 612 616 258 620 630 634 760 140 214 418 203 638 642 826 643 646 732 652 654 662 659 674 663 666 670 882 016 678 686 688 690 694 702 703 705 706 736 144 752 756 740 NLD PER UMI PHL PCN POL PYF PRT PRI QAT SYR CAF DOM LAO CZE REU ROU GBR RUS RWA ESH BLM SHN LCA KNA SMR MAF SPM VCT WSM ASM STP SEN RSD SYC SLE SGP SVK SVN SOM SDN LKA SWE CHE SUR LAC EMEA LAC LAC LAC LAC LAC JAPA LAC POS020052 (0903070) 31 Guide de transmission HTTPS – Serv. Web Rens. priv. et conf. d’American Express Codes de pays et de région Code de pays Nom de pays ou d’entité Swaziland Tadjikistan Taïwan Tanzanie, République-Unie de Tchad Terres australes françaises Territoire britannique de l’océan Indien Thaïlande Timor-Leste Togo Tokelau Tonga Trinité-et-Tobago Tunisie Turkménistan Turquie Tuvalu Ukraine Uruguay Vanuatu Venezuela Vietnam Yémen Zambie Zimbabwe 32 Région Chiffres Lettres Lettres 748 762 158 834 148 260 086 764 626 768 772 776 780 788 795 792 798 804 858 548 862 704 887 894 716 SWZ TJK TWN TZA TCD ATF IOT THA TLS TGO TKL TON TTO TUN TKM TUR TUV UKR URY VUT VEN VNM YEM ZMB ZWE JAPA JAPA LAC - POS020052 (0903070) 7 mai 2009