logo Mercanet

Release 24.6

aller directement au contenu

Rechercher par mots clés

In-App - SDK Android

Pour rechercher dans la page utiliser Ctrl+F sur votre clavier

Avant de lire ce document nous vous conseillons

Mercanet est une solution de paiement de commerce électronique multicanale sécurisée conforme à la norme PCI DSS. Elle vous permet d’accepter et de gérer des transactions de paiement en prenant en compte les règles métiers liées à votre activité (paiement à la livraison, paiement différé, paiement récurrent, paiement en plusieurs fois, …).

L’objectif du présent document est d’expliquer la mise en œuvre de la solution jusqu’au démarrage en production.

Ce document s'adresse aux commerçants qui souhaitent souscrire à l'offre Mercanet et proposer le paiement intégré à leur application mobile Android.

C'est un guide d'implémentation qui s'adresse à votre équipe technique.

Pour avoir une vue d'ensemble de la solution Mercanet, nous vous conseillons de consulter les documents suivants :

Pour avoir une vue d'ensemble du connecteur In-App, nous vous conseillons également de consulter le document :

Une connaissance des standards relatifs aux langages de programmation Mobile pratiqués aujourd'hui est nécessaire pour pouvoir développer une application mobile Android se connectant au SDK proposé via In-App.

Avant d'implémenter le SDK, il est également nécessaire d'avoir suivi les étapes de mise en place du connecteur In-App (cf. documentation In-App).

Remarque : toutes les portions de code de ce document sont fournies à titre d’exemple, il convient de les adapter à votre application mobile afin qu'elles soient pleinement exploitables.
IMPORTANT : le SDK In-App doit être utilisé au minimum avec une version 4.4 du système Android.

Vous pouvez télécharger le SDK Android via ce lien.

Les signatures du SDK sont présentées ci dessous.

Type Signature
MD5 40fea6b163e48659cf289561339125e8
SHA256 93521df24b3eedd902ba3f7bb61a88e8c2db0657afb54e955625fdfd6655dc39
SHA512 a604722120aaf811b9c10636847dbf1415ca8417aedfc083b285b19847d48e477ff31d2157aff8d27e0412bc8e4b64ba0076ddccd39eec375afd2699bafa7f0c
Version Date Description
24.1.0 Janvier 2024

Suppression des dépendances. Remplacé par des méthodes natives de l'API Android

Correction des vulnérabilités Sonar

23.1.0 Janvier 2023

Ajout du champs paymentMeanCoBadgingBrandList sur la méthode getWalletData

22.5.0 Juillet 2022

Ajout du champs issuingCountryCode sur les réponses

21.5.2 Juillet 2021

Utilisation des Activity à la place des Context

21.4.1 Juin 2021

Ajout des champs paymentMeanBrand et paymentMeanBrandSelectionStatus sur les méthodes walletOrder, walletCheckEnrollment et addCard

21.3.2 Avril 2021

Ajout du service paymentTokenGenerate

GDPR: Suppression des champs Email, AndroidId, SimSerialNumber, deviceName et IMEI du deviceContext

21.2.0 Février 2021

Changement de format du champs paymentMeanId de String à Integer

Pour utiliser cette bibliothèque dans votre application Java, ajoutez le JAR du SDK au dossier de compilation du projet.

  • Faites un clique droit sur votre projet :
    • Sélectionnez Properties ;
    • Cliquez sur Java Build Path ;
    • Dans l'onglet Libraries, cliquez sur Add JARs ;
    • Sélectionnez le JAR du SDK et cliquez sur OK.

Pour utiliser cette bibliothèque dans votre application Android Studio et Gradle, ajoutez le fichier AAR du SDK au dossier libs.

  • Dans le fichier build.gradle, ajoutez le code suivant dans la partie repositories ;
flatDir {
            dirs 'libs'
            }
  • ajoutez la dépendance suivante :
compile(name: 'sdk-24.1.0', ext: 'aar')
        

Ajoutez les entrées suivantes au manifeste Android de l'application :


      <uses-permission android:name="android.permission.INTERNET"/>
      <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    
Remarque : la permission READ_PHONE_STATE est facultative.

Le SDK a besoin de ces permissions pour récupérer les informations du téléphone :

Information de l'appareil À partir de la version Commentaires
Détecteur de débogueur 1.0
Détecteur d’émulateur 1.0
Opérateur 1.0
Téléphone rooté 1.0
Ecran allumé ? 1.0
Version android API 1.0

Toutes les méthodes nécessaires se trouvent dans la classe publique PaymentManager.

Conseil : Ces méthodes effectuent des appels réseau, elles doivent donc être appelées de façon asynchrone.
Conseil : Avant d'utiliser une fonction, vérifiez que vous avez bien les droits pour utiliser cette fonction sur votre boutique en contactant l'assistance technique Mercanet.

Cette fonction vous permet d'effectuer un paiement carte avec les informations bancaires d'un client.
Elle doit être appelée après une requête d'initialisation In-App orderInitialize depuis votre serveur avec un sdkOperationName=CARDORDER.

Format de la requête cardOrder

Paramètres Présence Type Commentaires
activity Obligatoire Activity Utilisé pour récupérer les données du téléphone depuis le contexte d'une Activity Android
cardCSCValue Facultatif String Cryptogramme visuel
cardExpiryDate Obligatoire String Date d'expiration
cardNumber Facultatif String Numéro de carte
paymentMeanBrand Facultatif String Moyen de paiement sélectionné
paymentMeanBrandSelectionStatus Facultatif String Statut de sélection du moyen de paiement
publicKeyValue Obligatoire String Valeur cryptée de la clé publique Récupérés à partir de la requête d'initialisation
redirectionData Obligatoire String Token unique contenant le contexte de la transaction
redirectionUrl Obligatoire String Adresse d'URL fournie en sortie de l'orderInitialize
redirectionVersion Obligatoire String Version de l'interface

Format de la réponse cardOrder (objet OrderResponse)

Nom du champ Format Commentaire
acquirerResponseCode String Code réponse acquéreur
amount String Montant de la transaction
authentExemptionReasonList Liste de String Exemption retenue par l'émetteur
authorisationId String Identifiant d'autorisation
authorisationTypeLabel String Intitulé du type de la demande d'autorisation
authorMessageReference String Identifiant partagé avec l'acquéreur lors du traitement de la demande d'autorisation
captureDay String Délai de capture
captureMode String Mode de capture
cardData CardData Contient les informations relative à la carte (Voir la partie Containers)
cardExpiryDate String (yyyyMM) Date d'expiration de la carte
currencyCode String Code de la devise
customerId String Identifiant client
errorFieldName String Nom du champ à l'origine de l'erreur
guaranteeIndicator String Niveau de garantie de paiement
guaranteeLimitDateTime Date Date limite du niveau de garantie de paiement
holderAuthentMethod String Nom de la méthode appliquée pour identifier le porteur du moyen de paiement
holderAuthentProgram String Programme d'authentification
holderAuthentRelegationCode String Code indiquant si l’émetteur accepte ou refuse le transfert de responsabilité
holderAuthentResponseCode String Code réponse du processus d'authentification porteur
holderAuthentStatus String Résultat du processus d'authentification porteur
holderAuthentType String Type d'authentification du porteur appliqué par l'émetteur de la carte. Champ valorisé en 3-D Secure v2.
inAppResponseCode String Code réponse du serveur Mercanet
invoiceReference String Référence de la facture
issuerWalletInformation String Informations données par le fournisseur de portefeuilles virtuels à destination du commerçant en réponse à la demande de création de la transaction
maskedPan String Numéro de carte masqué
merchantId String Identifiant du commerçant
merchantWalletId String Identifiant du portefeuille virtuel du client
orderChannel String Canal de commande
orderId String Identifiant de commande
panEntryMode String Mode de lecture du numéro de carte
paymentMeanBrand String Moyen de paiement sélectionné
paymentMeanBrandSelectionStatus String Statut du choix de la marque de la carte
paymentMeanType String Type du moyen de paiement (carte, virement, prélèvement, …). Il regroupe un ensemble de paymentMeanBrand.
paymentPattern String Mode de paiement (simple, récurrent, etc.)
returnContext String Valeur transférée à la requête de paiement
s10TransactionReference S10TransactionReference Contient les informations sur l'identification de la transaction, compatibles avec Mercanet 1.0 (Voir la partie Containers)
statementReference String Référence fournie par le commerçant qui est envoyée dans le flux de remise en paiement. Cette référence apparait sur les relevés de compte du porteur.
transactionDateTime Date Date et heure du traitement de la transaction par le serveur Mercanet(exprimé dans le time zone du serveur Mercanet)
transactionOrigin String Origine d’une transaction (ex : nom du programme), valorisée par le commerçant
transactionPlatform String Plateforme d'exécution de la transaction
transactionReference String Identifiant de la transaction
walletType String Type de portefeuille virtuel

Cette fonction est utilisée pour effectuer un paiement via wallet.
Elle est appelée après la requête d’initialisation In-App orderInitialize sur votre serveur avec sdkOperationName=WALLETORDER.

Format de la requête walletOrder

Paramètres Présence Type Commentaires
activity Obligatoire Activity Utilisé pour récupérer les données du téléphone depuis le contexte d'une Activity Android
cardCSCValue Facultatif String Cryptogramme visuel
paymentMeanBrand Facultatif String Moyen de paiement sélectionné. Si la valeur n'est pas fournie, la valeur utilisée est celle précédemment enregistrée dans le wallet.
paymentMeanBrandSelectionStatus Facultatif String Statut de sélection du moyen de paiement. Si la valeur n'est pas fournie, la valeur utilisée est celle précédemment enregistrée dans le wallet
paymentMeanId Obligatoire Integer Identifiant de la carte sélectionnée
publicKeyValue Obligatoire String Valeur cryptée de la clé publique Récupérés à partir de la requête d'initialisation
redirectionData Obligatoire String Token unique contenant le contexte de la transaction
redirectionUrl Obligatoire String Adresse d'URL fournie en sortie de l'orderInitialize
redirectionVersion Obligatoire String Version de l’interface

Format de la réponse walletOrder (objet OrderResponse)

Nom du champ Format Commentaire
acquirerResponseCode String Code réponse acquéreur
amount String Montant de la transaction
authentExemptionReasonList Liste de String Exemption retenue par l'émetteur
authorisationId String Identifiant d'autorisation
authorisationTypeLabel String Intitulé du type de la demande d'autorisation
authorMessageReference String Identifiant partagé avec l'acquéreur lors du traitement de la demande d'autorisation
captureDay String Délai de capture
captureMode String Mode de capture
cardData CardData Contient les informations relative à la carte (Voir la partie Containers)
cardExpiryDate String (yyyyMM) Date d'expiration de la carte
currencyCode String Code de la devise
customerId String Identifiant client
errorFieldName String Nom du champ à l'origine de l'erreur
guaranteeIndicator String Niveau de garantie de paiement
guaranteeLimitDateTime Date Date limite du niveau de garantie de paiement
holderAuthentMethod String Nom de la méthode appliquée pour identifier le porteur du moyen de paiement
holderAuthentProgram String Programme d'authentification
holderAuthentRelegationCode String Code indiquant si l’émetteur accepte ou refuse le transfert de responsabilité
holderAuthentResponseCode String Code réponse du processus d'authentification porteur
holderAuthentStatus String Résultat du processus d'authentification porteur
holderAuthentType String Type d'authentification du porteur appliqué par l'émetteur de la carte. Champ valorisé en 3-D Secure v2.
inAppResponseCode String Code réponse du serveur Mercanet
invoiceReference String Référence de la facture
issuerWalletInformation String Informations données par le fournisseur de portefeuilles virtuels à destination du commerçant en réponse à la demande de création de la transaction
maskedPan String Numéro de carte masqué
merchantId String Identifiant du commerçant
merchantWalletId String Identifiant du portefeuille virtuel du client
orderChannel String Canal de commande
orderId String Identifiant de commande
panEntryMode String Mode de lecture du numéro de carte
paymentMeanBrand String Moyen de paiement sélectionné
paymentMeanBrandSelectionStatus String Statut du choix de la marque de la carte
paymentMeanType String Type du moyen de paiement (carte, virement, prélèvement, …). Il regroupe un ensemble de paymentMeanBrand.
paymentPattern String Mode de paiement (simple, récurrent, etc.)
returnContext String Valeur transférée à la requête de paiement
s10TransactionReference S10TransactionReference Contient les informations sur l'identification de la transaction, compatibles avec Mercanet 1.0 (Voir la partie Containers)
statementReference String Référence fournie par le commerçant qui est envoyée dans le flux de remise en paiement. Cette référence apparait sur les relevés de compte du porteur.
transactionDateTime Date Date et heure du traitement de la transaction par le serveur Mercanet(exprimé dans le time zone du serveur Mercanet)
transactionOrigin String Origine d’une transaction (ex : nom du programme), valorisée par le commerçant
transactionPlatform String Plateforme d'exécution de la transaction
transactionReference String Identifiant de la transaction
walletType String Type de portefeuille virtuel

Cette fonction est utilisée pour obtenir l'URL Intent BCMC à appeler pour vous permettre d'effectuer un paiement BCMC.
Elle est appelée après la requête d’initialisation In-App orderInitialize sur votre serveur avec sdkOperationName=PAYMENTPROVIDERORDER et paymentMeanBrand=BCMCMOBILE.

Format de la requête paymentProviderOrder

Paramètres Présence Type Commentaires
activity Obligatoire Activity Utilisé pour récupérer les données du téléphone depuis le contexte d'une Activity Android
publicKeyValue Obligatoire String Valeur cryptée de la clé publique Récupérés à partir de la requête d'initialisation
redirectionData Obligatoire String Token unique contenant le contexte de la transaction
redirectionUrl Obligatoire String Adresse d'URL fournie en sortie de l'orderInitialize
redirectionVersion Obligatoire String Version de l’interface

Format de la réponse paymentProviderOrder (objet PaymentProviderResponse)

Nom du champ Format Commentaire
errorFieldName String Nom du champ à l'origine de l'erreur
inAppResponseCode String Code réponse de Mercanet
outerRedirectionUrl String URL Intent destinée à réveiller l'application BCMC
redirectionUrl String URL de redirection pour l'appel suivant
transactionContextData String Contexte de la transaction
transactionContextVersion String Version du contexte de la transaction

Cette fonction est utilisée pour vérifier le statut de la transaction BCMC après l'appel de l'application BCMC.
Elle est appelée après un appel à paymentProviderOrder, lorsque l'application BCMC rappelle l'application commerçant.

Format de la requête getTransactionData

Paramètres Présence Type Commentaires
activity Obligatoire Activity Utilisé pour récupérer les données du téléphone depuis le contexte d'une Activity Android
transactionContextData Obligatoire String Contexte de la transaction Récupérés à partir de la requête au paymentProviderOrder
transactionContextVersion Obligatoire String Version du contexte de la transaction
redirectionUrl Obligatoire String URL de redirection pour l'appel suivant

Format de la réponse getTransactionData (objet GetTransactionDataResponse)

Nom du champ Format Commentaire
acquirerResponseCode String Code réponse acquéreur
authentExemptionReasonList Liste de String Exemption retenue par l'émetteur
authorisationId String Identifiant d'autorisation
authorisationTypeLabel String Intitulé du type de la demande d'autorisation
authorMessageReference String Identifiant partagé avec l'acquéreur lors du traitement de la demande d'autorisation
captureLimitDate String Délai de capture
captureMode String Mode de capture
cardData CardData Contient les informations relative à la carte (Voir la partie Containers)
cardExpiryDate String (yyyyMM) Date d'expiration de la carte
currencyCode String Code de la devise
customerId String Identifiant client
errorFieldName String Nom du champ à l'origine de l'erreur
guaranteeIndicator String Niveau de garantie de paiement
guaranteeLimitDateTime Date Date limite du niveau de garantie de paiement
holderAuthentMethod String Nom de la méthode appliquée pour identifier le porteur du moyen de paiement
holderAuthentProgram String Programme d'authentification
holderAuthentRelegationCode String Code indiquant si l’émetteur accepte ou refuse le transfert de responsabilité
holderAuthentResponseCode String Code réponse du processus d'authentification porteur
holderAuthentStatus String Résultat du processus d'authentification porteur
holderAuthentType String Type d'authentification du porteur appliqué par l'émetteur de la carte. Champ valorisé en 3-D Secure v2.
inAppResponseCode String Code réponse du serveur Mercanet
invoiceReference String Référence de la facture
issuerWalletInformation String Informations données par le fournisseur de portefeuilles virtuels à destination du commerçant en réponse à la demande de création de la transaction
maskedPan String Numéro de carte masqué
merchantId String Identifiant du commerçant
merchantWalletId String Identifiant du portefeuille virtuel du client
orderChannel String Canal de commande
orderId String Identifiant de commande
originAmount String Montant d'origine de la transaction
panEntryMode String Mode de lecture du numéro de carte
paymentMeanBrand String Moyen de paiement sélectionné
paymentMeanBrandSelectionStatus String Statut du choix de la marque de la carte
paymentMeanType String Type du moyen de paiement (carte, virement, prélèvement, …). Il regroupe un ensemble de paymentMeanBrand.
paymentPattern String Mode de paiement (simple, récurrent, etc.)
returnContext String Valeur transférée à la requête de paiement
s10TransactionReference S10TransactionReference Contient les informations sur l'identification de la transaction, compatibles avec Mercanet 1.0 (Voir la partie Containers)
statementReference String Référence fournie par le commerçant qui est envoyée dans le flux de remise en paiement. Cette référence apparait sur les relevés de compte du porteur.
transactionDateTime Date Date et heure du traitement de la transaction par le serveur Mercanet(exprimé dans le time zone du serveur Mercanet)
transactionOrigin String Origine d’une transaction (ex : nom du programme), valorisée par le commerçant
transactionPlatform String Plateforme d'exécution de la transaction
transactionReference String Identifiant de la transaction
transactionStatus String Statut de la transaction
walletType String Type de portefeuille virtuel

Cette fonction est utilisée pour préparer un paiement 3-D Secure et obtenir le message paReq (Payer Authentication Request) ainsi que l'URL de l'ACS (Access Control Server) à appeler.
Elle est appelée après la requête d’initialisation In-App orderInitialize sur votre serveur avec sdkOperationName=THREEDSECUREANDORDER.

Format de la requête cardCheckEnrollment

Paramètres Présence Type Commentaires
activity Obligatoire Activity Utilisé pour récupérer les données du téléphone depuis le contexte d'une Activity Android
cardCSCValue Facultatif String Cryptogramme visuel
cardExpiryDate Obligatoire String Date d'expiration
cardNumber Facultatif String Numéro de carte
paymentMeanBrand Facultatif String Moyen de paiement sélectionné
paymentMeanBrandSelectionStatus Facultatif String Statut de sélection du moyen de paiement
publicKeyValue Obligatoire String Valeur cryptée de la clé publique Récupérés à partir de la requête d'initialisation
redirectionData Obligatoire String Token unique contenant le contexte de la transaction
redirectionUrl Obligatoire String Adresse d'URL fournie en sortie de l'orderInitialize
redirectionVersion Obligatoire String Version de l'interface

Format de la réponse cardCheckEnrollment (objet CardCheckEnrollmentResponse)

Nom du champ Format Commentaire
authentRedirectionUrl String URL de redirection ACS
errorFieldName String Nom du champ à l'origine de l'erreur
maskedPan String Numéro de PAN masqué
paReqMessage String Message PaReq utilisé pour l'authentification ACS
redirectionStatusCode String Code réponse de Mercanet
redirectionUrl String URL de redirection pour l'appel suivant
tokenPan String Identifiant unique d'un PAN
transactionContextData String Contexte de la transaction
transactionContextVersion String Version du contexte de la transaction

En fonction de la réponse, votre application doit rediriger le client vers l'ACS (Voir la partie Formulaire POST vers l'ACS).

Cette fonction est utilisée pour préparer un paiement 3-D Secure à partir d'une carte déjà enregistrée dans le wallet Mercanet. Elle permet d'obtenir le message paReq (Payer Authentication Request) ainsi que l'URL de l'ACS (Access Control Server) à appeler.
Elle est appelée après la requête d’initialisation In-App orderInitialize sur votre serveur avec sdkOperationName=THREEDSECUREANDWALLETORDER.

Format de la requête walletCheckEnrollment

Paramètres Présence Type Commentaires
activity Obligatoire Activity Utilisé pour récupérer les données du téléphone depuis le contexte d'une Activity Android
cardCSCValue Facultatif String Cryptogramme visuel
paymentMeanBrand Facultatif String Moyen de paiement sélectionné. Si la valeur n'est pas fournie, la valeur utilisée est celle précédemment enregistrée dans le wallet.
paymentMeanBrandSelectionStatus Facultatif String Statut de sélection du moyen de paiement. Si la valeur n'est pas fournie, la valeur utilisée est celle précédemment enregistrée dans le wallet
paymentMeanId Obligatoire Integer Identifiant de la carte sélectionnée
publicKeyValue Obligatoire String Valeur cryptée de la clé publique Récupérés à partir de la requête d'initialisation
redirectionData Obligatoire String Token unique contenant le contexte de la transaction
redirectionUrl Obligatoire String Adresse d'URL fournie en sortie de l'orderInitialize
redirectionVersion Obligatoire String Version de l’interface

Format de la réponse walletCheckEnrollment (objet WalletCheckEnrollmentResponse)

Nom du champ Format Commentaire
authentRedirectionUrl String URL de redirection ACS
errorFieldName String Nom du champ à l'origine de l'erreur
maskedPan String Numéro de PAN masqué
paReqMessage String Message PaReq utilisé pour l'authentification ACS
paymentMeanBrand String Marque de la carte
paymentMeanBrandSelectionStatus String Statut de sélection de la marque de la carte
redirectionStatusCode String Code réponse de Mercanet
redirectionUrl String URL de redirection pour l'appel suivant
tokenPan String Identifiant unique d'un PAN
transactionContextData String Contexte de la transaction
transactionContextVersion String Version du contexte de la transaction

En fonction de la réponse, votre application doit rediriger le client vers l'ACS (Voir la partie Formulaire POST vers l'ACS).

Cette fonction est utilisée pour valider l'authentification de l'ACS et effectuer le paiement.
Elle est appelée après un appel à cardCheckEnrollment ou walletCheckEnrollment, lorsque l'ACS renvoie le message PaRes. L'algorithme "URL Encode" doit être appliqué au message PaRes avant que celui-ci ne soit fourni au SDK.

Format de la requête cardValidateAuthenticationAndOrder

Paramètres Présence Type Commentaires
activity Obligatoire Activity Utilisé pour récupérer les données du téléphone depuis le contexte d'une Activity Android
paResMessage Obligatoire String Réponse d'authentification du payeur. L'algorithme standard "URL Encode" doit être appliqué au champ paResMessage reçu de l'ACS.
transactionContextData Obligatoire String Contexte de la transaction Récupérés à partir de la requête au cardCheckEnrollment ou au walletCheckEnrollment
transactionContextVersion Obligatoire String Version du contexte de la transaction
redirectionUrl Obligatoire String URL pour l'appel suivant

Format de la réponse cardValidateAuthenticationAndOrder (objet OrderResponse)

Nom du champ Format Commentaire
acquirerResponseCode String Code réponse acquéreur
amount String Montant de la transaction
authentExemptionReasonList Liste de String Exemption retenue par l'émetteur
authorisationId String Identifiant d'autorisation
authorisationTypeLabel String Intitulé du type de la demande d'autorisation
authorMessageReference String Identifiant partagé avec l'acquéreur lors du traitement de la demande d'autorisation
captureDay String Délai de capture
captureMode String Mode de capture
cardData CardData Contient les informations relative à la carte (Voir la partie Containers)
cardExpiryDate String (yyyyMM) Date d'expiration de la carte
currencyCode String Code de la devise
customerId String Identifiant client
errorFieldName String Nom du champ à l'origine de l'erreur
guaranteeIndicator String Niveau de garantie de paiement
guaranteeLimitDateTime Date Date limite du niveau de garantie de paiement
holderAuthentMethod String Nom de la méthode appliquée pour identifier le porteur du moyen de paiement
holderAuthentProgram String Programme d'authentification
holderAuthentRelegationCode String Code indiquant si l’émetteur accepte ou refuse le transfert de responsabilité
holderAuthentResponseCode String Code réponse du processus d'authentification porteur
holderAuthentStatus String Résultat du processus d'authentification porteur
holderAuthentType String Type d'authentification du porteur appliqué par l'émetteur de la carte. Champ valorisé en 3-D Secure v2.
inAppResponseCode String Code réponse du serveur Mercanet
invoiceReference String Référence de la facture
issuerWalletInformation String Informations données par le fournisseur de portefeuilles virtuels à destination du commerçant en réponse à la demande de création de la transaction
maskedPan String Numéro de carte masqué
merchantId String Identifiant du commerçant
merchantWalletId String Identifiant du portefeuille virtuel du client
orderChannel String Canal de commande
orderId String Identifiant de commande
panEntryMode String Mode de lecture du numéro de carte
paymentMeanBrand String Moyen de paiement sélectionné
paymentMeanBrandSelectionStatus String Statut du choix de la marque de la carte
paymentMeanType String Type du moyen de paiement (carte, virement, prélèvement, …). Il regroupe un ensemble de paymentMeanBrand.
paymentPattern String Mode de paiement (simple, récurrent, etc.)
returnContext String Valeur transférée à la requête de paiement
s10TransactionReference S10TransactionReference Contient les informations sur l'identification de la transaction, compatibles avec Mercanet 1.0 (Voir la partie Containers)
statementReference String Référence fournie par le commerçant qui est envoyée dans le flux de remise en paiement. Cette référence apparait sur les relevés de compte du porteur.
transactionDateTime Date Date et heure du traitement de la transaction par le serveur Mercanet(exprimé dans le time zone du serveur Mercanet)
transactionOrigin String Origine d’une transaction (ex : nom du programme), valorisée par le commerçant
transactionPlatform String Plateforme d'exécution de la transaction
transactionReference String Identifiant de la transaction
walletType String Type de portefeuille virtuel

Cette fonction vous permet de récupérer le contenu d'un wallet Mercanet.
Elle doit être appelée après une requête d'initialisation In-App walletInitialize depuis votre serveur avec un sdkOperationName=GETWALLETDATA.

Format de la requête getWalletData

Paramètres Présence Type Commentaires
activity Obligatoire Activity Utilisé pour récupérer les données du téléphone depuis le contexte d'une Activity Android
publicKeyValue Obligatoire String Valeur cryptée de la clé publique Récupérés à partir de la requête d'initialisation
redirectionData Obligatoire String Token unique contenant le contexte de la transaction
redirectionUrl Obligatoire String Adresse d'URL fournie en sortie de l'orderInitialize
redirectionVersion Obligatoire String Version de l’interface

Format de la réponse getWalletData (objet GetWalletDataResponse)

Nom du champ Format Commentaire
errorFieldName String Nom du champ à l'origine de l'erreur
inAppResponseCode String Code réponse du serveur Mercanet
walletCreationDateTime Date Date de création du wallet
walletPaymentMeanData Liste de WalletPaymentMeanData Liste des cartes sauvegardée dans le wallet (Voir la partie Containers)

Cette fonction vous permet de stocker une carte dans un wallet Mercanet.
Elle doit être appelée après une requête d'initialisation In-App walletInitialize depuis votre serveur avec un sdkOperationName=ADDCARD.

Format de la requête addCard

Paramètres Présence Type Commentaires
activity Obligatoire Activity Utilisé pour récupérer les données du téléphone depuis le contexte d'une Activity Android
cardExpiryDate Obligatoire String Date d'expiration de la carte
cardNumber Obligatoire String Numéro de la carte
paymentMeanAlias Obligatoire String Alias de la carte
paymentMeanBrand Facultatif String Marque de la carte
paymentMeanBrandSelectionStatus Facultatif String Statut du choix de la marque de la carte
publicKeyValue Obligatoire String Valeur cryptée de la clé publique Récupérés à partir de la requête d'initialisation
redirectionData Obligatoire String Token unique contenant le contexte de la transaction
redirectionUrl Obligatoire String Adresse d'URL fournie en sortie de l'orderInitialize
redirectionVersion Obligatoire String Version de l’interface

Format de la réponse addCard (objet AddCardResponse)

Nom du champ Format Commentaire
errorFieldName String Nom du champ à l'origine de l'erreur
inAppResponseCode String Code réponse du serveur Mercanet
paymentMeanId String Identifiant du moyen de paiement dans le wallet
maskedPan String PAN masqué de la carte
walletActionDateTime Date Date d'ajout dans le wallet

Cette fonction vous permet de supprimer une carte d'un wallet Mercanet.
Elle doit être appelée après une requête d'initialisation In-App walletInitialize depuis votre serveur avec un sdkOperationName=DELETEPAYMENTMEAN.

Format de la requête deletePaymentMean

Paramètres Présence Type Commentaires
activity Obligatoire Activity Utilisé pour récupérer les données du téléphone depuis le contexte d'une Activity Android
paymentMeanId Obligatoire Integer Identifiant du moyen de paiement à supprimer
publicKeyValue Obligatoire String Valeur cryptée de la clé publique Récupérés à partir de la requête d'initialisation
redirectionData Obligatoire String Token unique contenant le contexte de la transaction
redirectionUrl Obligatoire String Adresse d'URL fournie en sortie de l'orderInitialize
redirectionVersion Obligatoire String Version de l’interface

Format de la réponse deletePaymentMean (objet DeletePaymentMeanResponse)

Nom du champ Format Commentaire
errorFieldName String Nom du champ à l'origine de l'erreur
inAppResponseCode String Code réponse du serveur Mercanet
walletActionDateTime Date Date d'ajout dans le wallet

Cette fonction vous permet de récupérer les informations liées à un PAN ou à un BIN de carte. Elle vous permettra, par exemple, de pouvoir proposer le choix de la marque à votre client lors d'un paiement.
Elle doit être appelée après une requête d'initialisation In-App paymentMeanInfoInitialize depuis votre serveur avec un sdkOperationName=GETCARDDATA.

Format de la requête getCardData

Paramètres Présence Type Commentaires
activity Obligatoire Activity Utilisé pour récupérer les données du téléphone depuis le contexte d'une Activity Android
cardIIN Facultatif String IIN de la carte Au moins un de ces champs doit être fourni en requête
cardNumber Facultatif String Numéro de la carte
publicKeyValue Obligatoire String Valeur cryptée de la clé publique Récupérés à partir de la requête d'initialisation
redirectionData Obligatoire String Token unique contenant le contexte de la transaction
redirectionUrl Obligatoire String Adresse d'URL fournie en sortie de l'orderInitialize
redirectionVersion Obligatoire String Version de l’interface

Format de la réponse getCardData (objet GetCardDataResponse)

Nom du champ Format Commentaire
cardDataList Liste de CardData Liste de conteneur CardData contenant les informations de la carte (en cas de carte cobadgée plusieurs occurrences peuvent apparaître - exemple : carte CB/Visa). (Voir la partie Containers)
errorFieldName String Nom du champ à l'origine de l'erreur
inAppResponseCode String Code réponse du serveur Mercanet

CardData

Nom du champ Format Commentaire
cardBrand String Marque de la carte
cardCorporateIndicator String Indicateur de carte commerciale
cardEffectiveDateIndicator String Indicateur de date de début de validité de la carte
cardProductCode String Code produit de la carte
cardProductName String Libellé du code produit de la carte
cardProductProfile String Code profil de la carte
cardProductUsageLabel String Libellé du profil de la carte qui est exposé sur le ticket électronique de paiement selon les directives MPADS
cardScheme String Nom du réseau associé à la carte
cardSeqNumberIndicator String Indicateur d'existence d'un numéro de séquence
issuerCode String Code émetteur de la carte
issuerCountryCode String Code pays de l'émetteur de la carte
issuerName String Nom de l'émetteur de la carte
issuerRegionCode String Code région de l'émetteur de la carte
issuingCountryCode String Code pays dans lequel la carte est émise
panCheckAlgorithm String Algorithme de vérification appliqué au PAN
panLengthMax Short Taille maximale du PAN
panLengthMin Short Taille minimale du PAN

S10TransactionReference

Nom du champ Format Commentaire
s10TransactionId String Identifiant alternatif de la transaction compatible avec Mercanet 1.0

Le couple s10TransactionId/s10TransactionIdDate assure l’unicité de la transaction 1.0.
L’utilisation de ce couple en lieu et place de la donnée transactionReference dépend de la configuration du commerçant.

s10TransactionIdDate String Date de la transaction (exprimée dans le time zone du serveur Mercanet)

WalletPaymentMeanData

Nom du champ Format Commentaire
maskedPan String PAN masqué de la carte
panExpiryDate Date Date d'expiration de la carte
paymentMeanAlias String Alias de la carte
paymentMeanBrand String Marque de la carte
paymentMeanId Integer Identifiant du moyen de paiement dans le wallet
Formulaire POST de redirection
Formulaire POST vers l'ACS
En fonction de la réponse de vérification d'enrôlement du porteur, votre application doit rediriger vers l'ACS en appelant la authentRedirectionUrl reçue avec des paramètres POST :
  • PaReq message : retourné par l'appel précédent dans le champ paReqMessage ;
  • MD (Merchant Data) : champ comportant des données sur le statut du commerçant qui doivent être retournées à ce dernier. Ce champ doit être utilisé pour récupérer la session sur votre site web ;
  • TermUrl : l’URL du commerçant vers laquelle la réponse finale doit être envoyée après authentification de l’utilisateur final (champs de réponse PaRes et MD). Il doit s’agir d’une URL de votre site web vers laquelle l’utilisateur final doit être redirigé.
IMPORTANT : le champ MD doit contenir uniquement des caractères ASCII compris entre 0x20 et 0x7E ; si d'autres données sont nécessaires, le champ doit être encodé en Base64. La taille du champ (après le codage Base64, le cas échéant) est limitée à 1024 octets. Si des données confidentielles sont incluses (telles que le PAN), elles doivent être cryptées.

Sous Android, il est possible d'appeler une fonction Android dans une WebView depuis du code JavaScript. Dès lors, TermUrl peut être une page web qui pousse les champs POST reçus vers l'application Android du commerçant à l'aide d'une méthode JavascriptInterface.

Exemple d'un AcsWebViewActivity qui obtient le PaRes à partir d'une authentification ACS :

public class AcsWebViewActivity extends Activity {
  public static final String EXTRA_ACS_URL = "EXTRA_ACS_URL";
  public static final String EXTRA_PARES = "EXTRA_PARES";
  public static final String EXTRA_PAREQ = "EXTRA_PAREQ";
  public static final String EXTRA_MD = "EXTRA_MD";
  private WebView webView;
  final Handler myHandler = new Handler();

  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_acs_web_view);

    final JavaScriptInterface myJavaScriptInterface = new JavaScriptInterface();

    webView = (WebView) findViewById(R.id.webView);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.addJavascriptInterface(myJavaScriptInterface, "AndroidFunction");
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.setWebViewClient(new WebViewClient() {
      @Override
      public boolean shouldOverrideUrlLoading(WebView  view, String  url) {
        return false;
      }
    });
    
    String data = "<script>window.onload = function(){"
        + "document.forms['acs'].submit();}</script>"
        + "Please wait..."
        + "<form method=\"POST\" name=\"acs\" action=\"" + getIntent().getStringExtra(EXTRA_ACS_URL) + "\" style=\"display:none;\">"
        + "<input type=\"text\" name=\"MD\" value=\"" + getIntent().getStringExtra(EXTRA_MD) + "\">"
        + "<input type=\"text\" name=\"TermUrl\" value=\"http://inappmerchantserverdemo-mobilepayments.apps.zone52.org/displayAcsResponse.jsp\">"
        + "<input type=\"text\" name=\"PaReq\" value=\"" + getIntent().getStringExtra(EXTRA_PAREQ) + "\">"
        + "<input type=\"submit\" value=\"Submit\">" 
        + "</form>";
    webView.loadDataWithBaseURL(null, data, "text/html", "utf-8", null);
  }

  public class JavaScriptInterface {
    @JavascriptInterface
    public void putPaRes(String paRes) {
      // Url encode algorithm to apply on the pares received
      // Call cardValidateAuthentication with paRes message encoded
    }
  }
}

Le tableau ci-dessous vous donne les codes réponses génériques pour toutes les opérations. Veuillez consulter le dictionnaire des données pour connaître le détail des codes-réponse par fonction.

État Champs de la réponse Action à réaliser
Fonction réalisée responseCode = 00 La fonction demandée a été réalisée avec succès (par exemple un remboursement avec la fonction refund).
Refus suite problème technique responseCode = 90, 99 Problème technique temporaire lors du traitement de la fonction. Essayez ultérieurement d’exécuter de nouveau la fonction.
Fonction non autorisée responseCode = 40 Vous n’avez pas les droits pour exécuter cette fonction. Prenez contact avec le centre d’assistance technique pour demander l’activation de ces droits si votre contrat acquéreur le permet.
Fonction non réalisée Tout autre responseCode La fonction n’a pas pu être réalisée car un des paramètres doit être incorrect. Consultez le dictionnaire des données pour connaître le détail de chaque code erreur et le format de chaque paramètre.

Afin de tester vos développements en environnement de Recette et d'effectuer votre passage en Production, vous devez avoir finalisé l'implémentation de la partie serveur à serveur décrite dans la documentation In-App. Vous pouvez alors reprendre à l'étape de "test en environnement de recette" de cette même documentation.

Retourner en haut de page Besoin d'aide ?

Besoin d'aide ?

Fermer