ID TECH
Contact
Tous les articles techniques

Article technique

Développer pour EMV, Partie III

Dans La première partie de cette série, nous avons expliqué en quoi les transactions par carte à puce diffèrent des transactions MagStripe. Nous avons constaté qu'il existe une quantité considérable d'échanges entre le lecteur et la carte. Mais (bonne nouvelle !) nous avons également vu qu'une grande partie de ces échanges est gérée automatiquement — c'est-à-dire en dehors du contrôle du développeur d'application de paiement — par le noyau EMV du lecteur.

Dans La deuxième partie, nous avons abordé les différents tags (ou données TLV) que vous pouvez vous attendre à recevoir au cours d'une transaction EMV, ainsi que leur signification. Nous avons également mentionné qu'une transaction EMV se déroule en phases (portant des noms tels que Démarrage, Authentification et Finalisation). Nous avons aussi observé que des données TLV différentes sont renvoyées lors des différentes phases.

Nous avons également mentionné (à de nombreuses reprises, d'ailleurs) que si vous pouvez tout à fait effectuer une transaction EMV en envoyant des commandes firmware brutes directement au lecteur de carte (via USB ou RS-232), il est généralement plus simple d'interagir avec le lecteur à l'aide du SDK universel d'ID TECH. (Rendez-vous ici pour les téléchargements. Soyez prêt à préciser votre plateforme : Windows, Linux, MacOS, iOS ou Android.)

Pourquoi le SDK est-il plus simple à utiliser ? Tout d'abord, il prend en charge la configuration des communications série (USB, RS-232 ou Bluetooth) avec le lecteur. Il vous évite également de devoir maîtriser les

commandes firmware au niveau du périphérique et les protocoles bas niveau associés. De plus, vous disposez de bibliothèques de code prêtes à l'emploi qui facilitent l'interprétation des codes d'erreur et l'analyse des données.

Un autre avantage majeur du SDK universel est qu'il est fourni avec des exemples de code illustrant l'utilisation des différentes bibliothèques qui facilitent ces tâches. (Lisez la suite.)

Comment démarrer avec le SDK ? Examinons les principales étapes.

Étape 1 : Installer le SDK

Si vous savez pour quel système d'exploitation vous allez développer, rendez-vous sur Development — Home dans la base de connaissances et accédez au téléchargement correspondant. Des versions distinctes sont disponibles pour Windows, Linux, MacOS, iOS et Android.

Décompressez l'archive et essayez de charger le projet exemple (dans le dossier Source Code) dans l'environnement de développement de votre choix. Compilez et exécutez l'application exemple avec votre lecteur ID TECH branché. Vérifiez que l'application peut communiquer avec le lecteur.

Étape 2 : Configurer votre lecteur

Ne vous attendez pas à pouvoir exécuter une transaction EMV immédiatement, sans configuration préalable ! Votre première transaction échouera si vous n'avez pas pris le temps de configurer votre lecteur. Au minimum, cela implique de charger le lecteur avec :

  • Les paramètres du terminal
  • Les AIDs
  • Les CAPKs (clés publiques d'autorité de certification)

ID TECH fournit des valeurs d'exemple pour ces éléments (à des fins de test uniquement), mais vous devez tout de même exécuter les commandes qui chargent ces valeurs d'exemple. Elles ne sont pas chargées tant que vous n'exécutez pas les commandes ! (Heureusement, une fois ces éléments chargés sur votre lecteur, il n'est pas nécessaire de les recharger à chaque démarrage. Les valeurs sont persistantes. La configuration est une opération unique.) Consultez le code d'exemple du SDK pour voir comment procéder.

La configuration EMV est un sujet assez vaste que nous ne prétendons pas traiter en détail dans cet article. Pour une introduction à ce sujet, nous vous invitons à consulter notre article précédent sur les paramètres du terminal, ainsi que la section Configuration de notre Livre blanc EMV (PDF : téléchargement gratuit).

Étape 3 : Effectuer une transaction

L'exemple d'application contient le code nécessaire à cette étape. Parcourez l'application pour comprendre son fonctionnement. Sinon, vous devrez au minimum configurer un callback personnalisé (une fonction qui sera invoquée automatiquement par le SDK au moment approprié), puis appeler emv_startTransaction() vous-même.

La communication avec le lecteur de carte s'effectue de manière asynchrone, ce qui signifie que lorsque vous appelez une méthode telle que emv_startTransaction(), le SDK contacte le lecteur et déclenche une série d'événements, sans que votre programme ne soit bloqué pendant leur déroulement. Le contrôle est immédiatement rendu à votre application (accompagné d'un code de succès ou d'erreur). Le code du SDK surveille le lecteur pour détecter toute mise à jour. Lorsque le lecteur termine la phase de démarrage de la transaction EMV, par exemple, il envoie des données TLV à l'ordinateur hôte (généralement via USB). Le SDK intercepte ces données, invoque votre callback personnalisé et lui transmet les données.

En résumé, vous devez configurer un callback personnalisé si vous souhaitez recevoir des réponses du lecteur !

À quoi ressemble un callback ?

Dans la version Windows du SDK universel, votre callback personnalisé doit avoir une signature C# similaire à celle-ci :

Pour vous assurer que votre callback est bien utilisé, vous devez l'enregistrer auprès du SDK au moment de l'exécution, comme suit :

Cet exemple suppose que vous utilisez le VP3300 comme lecteur de carte, mais le SDK prend évidemment en charge n'importe quel lecteur de paiement ID TECH que vous utilisez. C'est, après tout, un SDK Universel .

À quoi ressemble le code de transaction ?

Lorsque vous souhaitez démarrer une transaction, vous devez exécuter un code similaire à celui-ci :

L'appel à emv_startTransaction() enverra une requête (via USB ou liaison série) au lecteur. Le lecteur effectuera un ATR (c'est-à-dire qu'il contactera la puce de la carte) et déclenchera l'exécution du noyau EMV.

Si le démarrage de la transaction aboutit (sans expiration du délai ni erreur) et si vous avez enregistré un rappel (callback) comme décrit précédemment, celui-ci sera exécuté après une à deux secondes. Votre code de rappel devra contenir une instruction « switch » assez étoffée, avec de nombreux cas pour gérer les différents types de résultats. Le résultat escompté est bien entendu une transaction EMV réussie avec des données TLV. Vous aurez donc probablement un code similaire à celui présenté ci-dessous, qui s'exécutera (dans votre rappel) à la fin de la phase de démarrage :

Ce code suppose que vous avez configuré vos préférences de manière à exécuter automatiquement la phase d'authentification de la transaction, ce qui vous permet de passer directement du démarrage à la finalisation. (Ce n'est pas obligatoire, bien entendu. Tout dépend de vos exigences.) Dans une application de paiement réelle, votre application marquerait une pause lors de ce « cas » pour se connecter en ligne à la passerelle ou à l'acquéreur. Vous transmettriez ensuite le tag 8A (et éventuellement d'autres) à emv_completeTransaction().

Pour savoir comment analyser les données de transaction (les TLV) renvoyées après chaque phase de la transaction, recherchez dans le code d'exemple « displayCardData(IDTTransactionData cardData) ». Vous y trouverez divers exemples d'analyse des données.

Des questions ?

Des questions peuvent surgir lorsque vous commencez à utiliser le SDK. N'oubliez pas que le SDK est fourni avec une documentation complète (aux formats HTML et PDF). Mais si vous avez besoin de réponses supplémentaires, nous sommes là ! Contactez nos experts :

Numéro gratuit
1-800-984-1010