Préambule

Les fonctionnalités et moyens de paiement décrits dans le présent guide correspondent à la solution WL Sips proposée par Worldline, sur laquelle l’offre Sogenactif repose techniquement. Elles ne sont pas toutes disponibles sur l’offre Sogenactif ; pour connaître l’exhaustivité des fonctionnalités et moyens de paiement disponibles sur cette offre, veuillez-vous référer au guide « Configuration des fonctionnalités ».

Introduction

Sogenactif 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 échelonné , …).

L’objectif du présent document est d’expliquer la mise en œuvre de la solution Sogenactif Office Batch et des tests initiaux relatifs au paiement ou à la gestion de caisse.

A qui s’adresse ce document

Sogenactif Office Batch a pour but d'offrir aux commerçants les fonctions de Sogenactif Office Serveur en mode Batch. Ces fonctions sont basées sur l'échange hors-ligne de fichiers. Certaines options du mode en ligne ne sont pas disponibles comme par exemple l’authentification 3-D Secure.

C’est un guide d’implémentation qui s’adresse à l’équipe technique du commerçant.

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

  • Présentation fonctionnelle,
  • Configuration des fonctionnalités.

Prérequis

Une connaissance des protocoles de transfert des fichiers ainsi qu’une connaissance des standards relatifs aux langages de programmation pratiqués aujourd’hui, tels que Java, PHP ou .Net, est nécessaire pour développer la connexion à Sogenactif Office Batch .

Note: toutes les portions de code de ce document sont fournies à titre d’exemple , il convient de les adapter à votre site Web afin qu’elles soient pleinement exploitables.

Contacter l'assistance

Pour toute question technique ou demande d'assistance, nos services sont disponibles du lundi au vendredi, hors jours fériés, de 9 h à 19 h :

  • par téléphone au : +33 (0) 825 090 095 ;
  • par e-mail : supportsogenactif@worldline.com.

Pour faciliter le traitement de vos demandes, veuillez communiquer votre identifiant de commerçant : merchantId (numéro à 15 chiffres).

Comprendre le paiement avec Sogenactif Office Batch

Le traitement des fichiers par Sogenactif Office Batch se décompose en plusieurs étapes :

1. Le commerçant dépose des fichiers de requêtes sur un compte FTPS ou SFTP externe fourni par Société Générale .

2. La passerelle de transfert de fichiers Société Générale reçoit les fichiers de requêtes et les envoie au moteur Sogenactif Office Batch .

3. Le moteur Sogenactif Office Batch traite les fichiers de requêtes un par un et génère un fichier de réponses par fichier de requêtes.

4. Le moteur Sogenactif Office Batch envoie le fichier de réponses au compte FTPS ou SFTP externe via la passerelle de transfert de fichiers.

5. Le commerçant récupère le fichier de réponses depuis le compte FTPS ou SFTP externe fourni par Société Générale .

6. Le moteur Sogenactif Office Batch , via la passerelle de transfert de fichier, détruit le fichier de réponses après le premier téléchargement réussi par le commerçant.

Règles générales concernant les transferts

  • Le commerçant peut choisir entre FTPS ou SFTP comme méthode de transfert.
  • Société Générale fournit un compte commerçant dédié (avec nom d'utilisateur et mot de passe), et le compte Société Générale doit être le même pour les fichiers de requêtes et les fichiers de réponses, mais des restrictions s'appliquent quant au nom du fichier.
  • En plus des vérifications de nom d'utilisateur et de mot de passe, les serveurs SFTP et FTPS de Société Générale exécutent une vérification de l'adresse IP du commerçant.
  • Société Générale donne au fichier de réponses un nom différent de celui du fichier de requêtes.
  • Après une période donnée (1 semaine), les fichiers de réponse sont supprimés des comptes FTPS ou SFTP, même s'ils n'ont pas été téléchargés.

Gérer les opérations de plusieurs commerçants

Le remettant est un partenaire qui joue le rôle d'un opérateur technique gérant les échanges de fichiers avec la plate-forme de paiement Sogenactif . Un remettant peut envoyer des opérations de plusieurs commerçants dans le même fichier à condition qu'elles soient déclarées au nom de ce remettant lors de l'étape d’inscription.

Note: Sogenactif attribue un numéro de remettant durant l’inscription. Ce numéro est fourni dans le champ remitterId de l’entête du fichier de requêtes.

Il est intéressant de noter qu'un remettant peut également être lui-même un commerçant.

Comprendre le format des fichiers échangés

Les fichiers de requête et de réponse échangés avec Sogenactif Office Batch sont au format XML.

Chaque fichier est constitué de quatre parties successives :

  • FILE TYPE correspondant au type de fichier (voir le chapitre suivant pour les explications des différents types) ;
  • HEADER contenant l’en-tête du fichier ;
  • BODY contenant toutes les opérations ;
  • END indiquant la fin du fichier.

L'en-tête du fichier contient un identifiant sous la forme d’un numéro de séquence. Ce numéro de séquence doit être :

  • numérique ;
  • unique pour tous vos fichiers (sans limite de temps) ;
  • croissant et il doit commencer à 1 et augmenter de 1 en 1.

Le corps du fichier contient plusieurs enregistrements. Un enregistrement correspond à une transaction, ou une opération de caisse sur une transaction, ou une fonction satellite (comme la gestion du wallet ou encore la gestion de la fraude).

  • Exemple de structure principale du fichier de requêtes ou de réponses :
      <?xml version="1.0" encoding="utf-8"?>
<file type="…" format="…" version="…">
<header …   >
    <remitterId>023101122334455</remitterId>
    <date>2012-06-08+01:00</date>
    <time>15:35:00+01:00</time>
    <sequence>86</sequence>
</header>
<body>
   <operation1 …   />
   <operation2 …   />
    …
</body>
<end nbRecord="nn" />
</file>
    
Note: les diagrammes XML sont fournis en annexes afin de vous permettre de valider les fichiers de requêtes et de réponses.

Plusieurs fichiers de requête peuvent être traités en une journée. Lorsque plusieurs fichiers de requête sont disponibles sur le compte FTPS externe, Sogenactif Office Batch les traite un par un successivement (et non simultanément) et par ordre d’arrivée sur le compte FTPS.

Il y a un fichier de réponse pour chaque fichier de requête même si le traitement du fichier génère des erreurs.

Note: à l'exception de cas très spécifiques, un fichier de réponse ajoute les champs de réponse aux informations du fichier de requête. Voir le chapitre 'Rapprochement des fichiers de requête et de réponse' ci-dessous.

Règles générales concernant les fichiers échangés

  • La taille des fichiers ne doit pas dépasser 100 Mo ou 100 000 enregistrements d'opérations.
  • Les fichiers sont dédiés à un seul remettant.
  • Un fichier de requête ne peut pas contenir plusieurs opérations sur la même transaction. Par exemple, il n'est pas possible de créer une transaction et de l'annuler dans le même fichier de requête.
  • L'ordre des opérations dans le corps du fichier de réponse peut être différent de l'ordre des opérations dans le fichier de requête.

Comprendre le format du fichier de requête

Le type de fichier est basé sur le service utilisé.

Tous les champs de l’élément file type de la requête sont obligatoires et en format ANS20. Ils sont retournés à l’identique dans la réponse.

  • Le nom de la balise est file.
  • Le champ type doit valoir 'request' pour la requête et 'response' pour la réponse.
  • Les champs format et version dépendent du type de service appelé.
Format Version Description du service
office Doit valoir 11 Acceptation des transactions et des opérations de caisse.
token Doit valoir 1 Tokenisation et détokenisation des PAN.
fraud Doit valoir 2 Gestion de la fraude.
wallet Doit valoir 3 Gestion des coordonnées de paiement dans le wallet utilisée dans le cas du OneClick et de l’abonnement.
  • Exemple de type de fichier :
      <file type="request" format="office" version="10">
   ...
</file>
    

L'en-tête est basé sur un enregistrement contenant les champs suivants :

Champs Présence Format Description
Le nom de la balise est header Obligatoire ANS20 Indique un enregistrement d'en-tête
remitterId Obligatoire N15 Identifiant du remettant
date Obligatoire XML Date Date à laquelle le fichier a été créé dans le fuseau horaire du commerçant (AAAA-MM-JJ+hh:mm)
time Obligatoire XML Time Heure à laquelle le fichier a été créé dans le fuseau horaire du commerçant (hh:mm:ss+hh:mm)
sequence Obligatoire N6 Numéro de séquence du fichier. Vous pouvez utiliser un remplissage à base de « 0 » sur la gauche (par exemple : 000001 pour le numéro de la première séquence).
  • Exemple d’en-tête :
      <header>
    <remitterId>023101122334455</remitterId>
    <date>2012-06-11+02:00</date>
    <time>14:28:00+01:00</time>
    <sequence>86</sequence>
  </header>
    

Le corps contient des opérations en fonction du service déclaré dans l'élément file. Il faut se reporter au chapitre suivant pour connaître le détail des champs suivant l’opération souhaitée.

  • Exemple de partie « corps » pour le service « office »
      <body>
…
    <cardOrder  recordSequence=”2”>
      …
    </cardOrder>
…
</body>
    

La partie finale est basée sur un enregistrement contenant les champs suivants :

Champs Présence Format Description
Le nom de la balise est end Obligatoire ANS20 Indique la fin de l'enregistrement.
nbRecord Obligatoire N6 Nombres d'opérations dans la partie « body ».
  • Exemple d’élément « end »
      <end nbRecord="227" />
    

Nommage du fichier de requête

Le fichier de requête doit être transmis dans une archive au format ZIP. L’archive doit se nommer OFBREQxx.ZIP où xx désigne un nombre compris entre 01 et 99.

Une archive ne doit contenir qu’un seul fichier de requête.

Le nom du fichier de requête est libre mais nous vous conseillons de respecter le nommage suivant : SOB.Alias.Date-Heure.xml.

Avec :

  • SOB : fichier de requête à destination de «  Sogenactif Office Batch  » ;
  • Alias : alias/merchantId Sogenactif de la boutique remettante ;
  • Date : date du fichier sous le format AAMMJJ ;
  • Heure : heure du fichier sous le format HHMMSS.

Comprendre le format du fichier de réponse

L'en-tête est basé sur un enregistrement contenant les champs suivants :

Champs Format Description
Le nom de la balise est header ANS20 Indique un enregistrement d'en-tête
remitterId N15 Identifiant du remettant
date XML Date Date de création du fichier dans le fuseau horaire du commerçant (YYYY-MM-DD+hh:mm)
time XML Time Heure de création du fichier dans le fuseau horaire du commerçant (hh:mm:ss+hh:mm)
sequence N6 Numéro de séquence du fichier
processingResponseCode AN2 Code réponse de traitement
beginProcessTime

ANS25

ISO8601

Horodatage de début du traitement du fichier dans le fuseau horaire du commerçant
endProcessTime

ANS25

ISO8601

Horodatage de fin du traitement du fichier dans le fuseau horaire du commerçant
  • Exemple d’en-tête :
      <header>
    <remitterId>023101122334455</remitterId>
    <date>2012-06-11+02:00</date>
    <time>14:28:00+01:00</time>
    <sequence>86</sequence>
    <processingResponseCode>00</processingResponseCode>
    <beginProcessTime>2012-06-07T11:30:47+02:00</beginProcessTime>
    <endProcessTime>2012-06-07T11:31:43+02:00</endProcessTime>
  </header>
    

L’élément “error-details” n’est renvoyé que lorsqu’une erreur intervient lors du contrôle du fichier requête. “error-details” est une chaîne de caractère décrivant l’erreur.

  • Exemple d’en-tête :
      …
<error-details>ERROR_FILE_ALREADY_PROCESSED: processing_response_code = [02] :
Error in the file sequence number. 
The file has already been processed. Expected sequence number [2] - 
Request file sequence number [1]</error-details>
…
    

A chaque opération du fichier de requêtes correspond un élément du fichier de réponses dont les attributs ont été remplis lors du renvoi. Les champs retournés sont décrits au chapitre suivant.

La fin du fichier de réponses est similaire à celle du fichier de requêtes et comporte les champs suivants :

Champs Format Description
Le nom de la balise est end ANS20 Indique la fin de l'enregistrement
nbRecord N6 Nombres d'opérations dans la partie « body »
  • Exemple d’élément « end » :
      <end nbRecord="227" />
    

Nommage du fichier de réponse

Le fichier de réponse est transmis dans une archive au format ZIP. Le nom de cette archive est s******.OFBREP**.zip.

Où :

  • s****** est un numéro de séquence unique et non paramétrable ;
  • OFBREP** un nombre compris entre 01 et 99 identique au fichier requête.

Le nom du fichier de réponse contenu dans l’archive a pour formalisme : OFFUBZ.OFFBAREP.$alias.$date (exemple : OFFUBZ.OFFBAREP.MM20LEQUIPE0861.181216).

Où :

  • $alias est l’alias Sogenactif de la boutique ;
  • $date est la date du traitement du ficher, au format AAMMJJ.

Rapprochement des fichiers de requête et de réponse

Afin d'aider au rapprochement des fichiers de requête et de réponse, chaque fichier de requête est identifiée par un numéro de séquence qui est également retourné avec la réponse.

Tous les champs du fichier de requête sont également retournés dans le fichier de réponse à l'exception des champs suivants en raison de la conformité avec PCI DSS :

  • cardNumber peut être retourné masqué dans le champ maskedPan  ;
  • cardEffectiveDate (date de début de validité de la carte) ;
  • cardExpiryDate (date d'expiration de la carte) ;
  • cardSeqNumber (numéro de séquence de la carte si présent) ;
  • cardCSCValue (cryptogramme visuel de la carte).

Sogenactif peut modifier la valeur du champ suivant si la création de la transaction est suivie d'une autorisation bancaire :

  • transactionDate

Démarrer avec Sogenactif Office Batch en 4 étapes

Étape 1 : demander la création d’un compte FTPS

Pour cela, vous devez renvoyer le formulaire d’inscription à Sogenactif Office Batch remis par votre interlocuteur technique Société Générale . La création du compte FTPS prend environ 12 jours à réception du formulaire correctement rempli.

Des échanges par mail ont ensuite lieu pour tester le compte FTPS en recette avant mise en place en environnement de production.

Étape 2 : utiliser les fonctions disponibles

Les différentes fonctions possibles font l’objet de requêtes spécifiques.

Une requête est composée de champs génériques et de champs de type container.

Un container est une structure de données utilisée afin de regrouper fonctionnellement les données.

Si le champ est un champ d'un container, il est désigné <nom du container>.<nom du champ>.

Tip: 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 Sogenactif .
Note: dans les réponses, en fonction de l’état de la transaction et du moyen de paiement choisi, certains champs peuvent être nuls, vides ou non renseignés. Veuillez consulter les documentations des moyens de paiement pour connaître les champs attendus dans les réponses.

Fonction cardOrder du service office

Cette fonction vous permet d'effectuer un paiement carte si vous disposez des informations bancaires d'un client.

Format de la requête cardOrder

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes :

Champs Présence Commentaires
Le nom de la balise est cardOrder Obligatoire Nom de la fonction
recordSequence Obligatoire N6 – attribut qui indique le numéro de ligne, ce qui vous permet de rapprocher la réponse de la requête.
merchantId Obligatoire
transactionReference Obligatoire Facultatif si vous utilisez le S10TransactionReference .
s10TransactionReference Obligatoire Facultatif si vous utilisez le transactionReference .
amount Obligatoire
captureDay Facultatif
captureMode Facultatif
cardCSCValue Facultatif
cardEffectiveDate Facultatif
cardExpiryDate Obligatoire
cardNumber Obligatoire
cardSeqNumber Facultatif
currencyCode Obligatoire
customerEmail Facultatif
customerId Facultatif
customerIpAddress Facultatif
merchantTransactionDateTime Facultatif
orderChannel Obligatoire
orderId Facultatif
paymentPattern Facultatif
returnContext Facultatif
statementReference Facultatif
transactionOrigin Facultatif
fraudData Facultatif Voir paragraphe « Containers »
panType Facultatif Valorisé à TOKEN_PAN si paiement via un token
paymentMeanData Facultatif Voir paragraphe « Containers »
holderData Facultatif Voir paragraphe « Containers »
riskManagementCustomDataList Facultatif Voir paragraphe « Containers »
shoppingCartDetail Facultatif Voir paragraphe « Containers »
paymentMeanBrand Facultatif
paymentMeanBrandSelectionStatus Facultatif
orderContext Facultatif Voir paragraphe « Containers »
travelContext Facultatif Voir paragraphe « Containers »
deliveryContact Facultatif Voir paragraphe « Containers »
deliveryAddress Facultatif Voir paragraphe « Containers »
deliveryData Facultatif Voir paragraphe « Containers »
holderContact Facultatif Voir paragraphe « Containers »
billingContact Facultatif Voir paragraphe « Containers »
billingAddress Facultatif Voir paragraphe « Containers »
authenticationData Facultatif Voir paragraphe « Containers »
holderAddress Facultatif Voir paragraphe « Containers »
initialSchemeTransactionIdentifier Facultatif
  • Exemple de requête cardOrder
      <cardOrder recordSequence=”1”>
      <amount>1000</amount>
      <captureDay>0</captureDay>
      <captureMode>VALIDATION</captureMode>
      <cardCSCValue>470</cardCSCValue>
      <cardEffectiveDate>201201</cardEffectiveDate>
      <cardExpiryDate>209910</cardExpiryDate>
      <cardNumber>4975497549754975</cardNumber>
      <cardSeqNumber>1</cardSeqNumber>
      <currencyCode>978</currencyCode>
      <customerEmail>test@worldline.com</customerEmail>
      <customerId>123</customerId>
      <customerIpAddress>127.0.0.1</customerIpAddress>
      <fraudData>
            <bypass3DS>all</bypass3DS>
            <allowedIpCountryList>
                 <country>fra</country>
            </allowedIpCountryList>
      </fraudData>
      <merchantId>012323232323231</merchantId>
      <merchantTransactionDateTime>2012-11-29T17:04:30Z</merchantTransactionDateTime>
      <orderChannel>INTERNET</orderChannel>
      <orderId>123456</orderId>
      <returnContext>context</returnContext>
      <transactionReference>201211218170401</transactionReference>
      <transactionOrigin>origin</transactionOrigin>
</cardOrder>
    

Format de la réponse à la requête cardOrder

La réponse contient tous les champs de la requête (à l'exception des champs cardCSCValue, cardEffectiveDate, cardExpiryDate, cardNumber, cardSeqNumber, paymentMeanBrand, paymentMeanBrandSelectionStatus, initialSchemeTransactionIdentifier ), ainsi que les champs présentés ci-dessous :

Champs Commentaires
Le nom de la balise est cardOrder
acquirerResponseCode
authorisationId
complementaryCode
complementaryInfo
guaranteeIndicator
holderAuthentRelegation
holderAuthentStatus
maskedPan
officeBatchResponseCode
responseCode
transactionDateTime
tokenPan
authorMessageReference
acquirerResponseMessage
paymentMeanTradingName
cardData Voir paragraphe « Containers »
recurringResponseCode
preAuthorisationProfile
preAuthorisationProfileValue
preAuthorisationRuleResultList Voir paragraphe « Containers »
transactionPlatform Systématiquement valorisé à ‘PROD’
cardCSCResultCode
avsPostcodeResponseCode
avsAddressResponseCode
authorisationTypeLabel Non valorisé
schemeTransactionIdentifier
paymentAccountReference
  • E xemple de réponse à une requête cardOrder
      <cardOrder recordSequence="1">
     …
    <acquirerResponseCode>00</acquirerResponseCode>
    <authorisationId>1234569654656</authorisationId>
    <maskedPan>160000.47</maskedPan>
    <officeBatchResponseCode>00</officeBatchResponseCode>
    <responseCode>00</responseCode>
    <transactionDateTime>2012-06-14T16:00:00+02:00</transactionDateTime>
    <cardData>
        <cardProductCode>F</cardProductCode>
        <cardProductName>VISA CLASSIC</cardProductName>
        <cardProductProfile>C</cardProductProfile>
        <cardScheme>VISA</cardScheme>
        <issuerCode>00000</issuerCode>
        <issuerCountryCode>GRC</issuerCountryCode>
    </cardData>
    <transactionPlatform>PROD</transactionPlatform>
</cardOrder>
    

Fonction refund du service office

Cette opération vous permet de rembourser une transaction en créditant le compte du client et en débitant votre compte.

Note: veuillez consulter le guide de configuration des fonctionnalités, partie 'gestion de caisse > remboursement', pour savoir dans quels cas vous pouvez effectuer une opération de remboursement.

Format de la requête refund

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes :

Champs Présence Commentaires
Le nom de la balise est refund Obligatoire Nom de la fonction
recordSequence Obligatoire N6 – attribut qui indique le numéro de ligne, ce qui vous permet de rapprocher la réponse de la requête.
merchantId Obligatoire
transactionReference Obligatoire Référence de la transaction à rembourser. Facultatif vous utilisez le s10TransactionReference .
s10TransactionReference Obligatoire Référence de la transaction à rembourser. Facultatif si vous utilisez le transactionReference .
operationAmount Obligatoire
currencyCode Obligatoire
operationOrigin Facultatif
shoppingCartDetail Facultatif Voir paragraphe « Containers »
  • Exemple de requête refund
      <refund recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <transactionReference>SIM201206810160</transactionReference>
      <operationAmount>1000</operationAmount>
      <currencyCode>978</currencyCode>
      <operationOrigin>operationOrigin</operationOrigin>
</refund>
    

Format de la réponse à la requête refund

La réponse contient tous les champs de la requête ainsi que les champs suivants :

Champs Commentaires
Le nom de la balise est refund Nom de la fonction
operationDateTime
transactionDateTime
responseCode
newStatus
newAmount
authorisationId
acquirerResponseCode
officeBatchResponseCode
  • Exemple de réponse à une requête refund
      <refund recordSequence="1">
      …
      <operationDateTime>2012-06-14T16:00:00+02:00</operationDateTime>
      <transactionDateTime>2012-06-14T16:00:00+02:00</transactionDateTime>
      <responseCode>00</responseCode>
      <newStatus>TO_CREDIT</newStatus>
      <newAmount>0</newAmount>
      <authorisationId>956798798534</authorisationId >
      <acquirerResponseCode>00</acquirerResponseCode>
      <officeBatchResponseCode>00</ officeBatchResponseCode >
</refund>
    

Fonction validate du service office

Cette fonction permet de déclencher la remise en paiement d’une transaction. Elle vous permet de faire du paiement différé en débitant votre client à l’expédition des produits achetés.

Format de la requête validate

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes :

Champs Présence Commentaires
Le nom de la balise est validate Obligatoire Nom de la fonction
recordSequence Obligatoire N6 – attribut qui indique le numéro de ligne, ce qui vous permet de rapprocher la réponse de la requête.
merchantId Obligatoire
transactionReference Obligatoire Référence de la transaction à valider. Facultatif si vous utilisez le s10TransactionReference
s10TransactionReference Obligatoire Référence de la transaction à valider. Facultatif si vous utilisez le transactionReference . Voir paragraphe « Containers ».
operationAmount Obligatoire
currencyCode Obligatoire
operationOrigin Facultatif
lastRecoveryIndicator Facultatif

Exemple de requête validate

      <validate recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <transactionReference>SIM201206810160</transactionReference>
      <operationAmount>1000</operationAmount>
      <currencyCode>978</currencyCode>
      <operationOrigin>operationOrigin</operationOrigin>
      <lastRecoveryIndicator>TRUE</lastRecoveryIndicator>
</validate>

    

Format de la réponse à la requête validate

La réponse contient tous les champs de la requête ainsi que les champs suivants :

Champs Commentaires
Le nom de la balise est validate Nom de la fonction
operationDateTime
responseCode
newStatus
newAmount
authorisationId
acquirerResponseCode
officeBatchResponseCode
captureLimitDate
schemeTransactionIdentifier
paymentAccountReference
  • Exemple de réponse à une requête validate  :
      <validate recordSequence="1">
      …
    <merchantId>024729465300001</merchantId>
    <transactionReference>17R2DBR2016101400000000</transactionReference>
    <operationAmount>100</operationAmount>
    <currencyCode>978</currencyCode>
    <operationOrigin>batch</operationOrigin>
    <operationDateTime>2017-05-26T11:05:36+02:00</operationDateTime>
    <responseCode>00</responseCode>
    <newStatus>CREDITED</newStatus>
    <newAmount>1000</newAmount>
    <officeBatchResponseCode>00</officeBatchResponseCode>
</validate>
    

Fonction duplicate du service office

Cette fonction permet de créer une nouvelle transaction à partir des données d'une transaction précédente. À titre d'exemple, si une transaction n'a, par erreur ou omission, pu être validée dans le délai de capture que vous avez renseigné, elle a expiré et ne sera donc pas envoyée en remise en paiement. Vous pouvez alors rattraper cette transaction en la dupliquant.

Format de la requete duplicate

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes :

Champs Présence Commentaires
Le nom de la balise est duplicate Obligatoire Nom de la fonction
recordSequence Obligatoire N6 – attribut qui indique le numéro de ligne, ce qui vous permet de rapprocher la réponse de la requête.
merchantId Obligatoire
transactionReference Obligatoire Facultatif si vous utilisez le S10TransactionReference .
s10TransactionReference Obligatoire Facultatif si vous utilisez le transactionReference .
amount Obligatoire
currencyCode Obligatoire
captureDay Facultatif
captureMode Facultatif
customerEmail Facultatif
customerId Facultatif
customerIpAddress Facultatif
fromTransactionReference Obligatoire Référence de la transaction à dupliquer. Facultatif si vous utilisez le S10FromTransactionReference . Voir paragraphe « Containers ».
s10FromTransactionReference Obligatoire Référence de la transaction à dupliquer. Facultatif si vous utilisez le fromTransactionReference . Voir paragraphe « Containers ».
merchantTransactionDateTime Facultatif
orderChannel Obligatoire
orderId Facultatif
returnContext Facultatif
transactionOrigin Facultatif
fromMerchantId Facultatif
fraudData Facultatif Voir paragraphe « Containers ».
statementReference Facultatif
orderContext Facultatif Voir paragraphe « Containers ».
travelContext Facultatif Voir paragraphe « Containers ».
deliveryContact Facultatif Voir paragraphe « Containers ».
deliveryAddress Facultatif Voir paragraphe « Containers ».
deliveryData Facultatif Voir paragraphe « Containers ».
holderContact Facultatif Voir paragraphe « Containers ».
billingContact Facultatif Voir paragraphe « Containers ».
billingAddress Facultatif Voir paragraphe « Containers ».
authenticationData Facultatif Voir paragraphe « Containers ».
holderAddress Facultatif Voir paragraphe « Containers ».
shoppingCartDetail Facultatif Voir paragraphe « Containers ».
paymentMeanData Facultatif Configuration spécifiques aux moyens de paiement.
  • Conteneur paymentMeanData de la requête duplicate
Champs Présence Commentaires
Le nom de la balise est paymentMeanData. Nom de l'élément
paypal Facultatif Configuration spécifique pour le moyen de paiement PayPal
bcacup Facultatif Configuration spécifique pour le moyen de paiement BCACUP

Donnée supplémentaire pour le moyen de paiement PayPal :

Champs Présence Commentaires
Le nom de la balise est paypal Nom de l'élément
invoiceId Facultatif Numéro de commande PayPal; Voir guide d'intégration PayPal .

Donnée supplémentaire pour le moyen de paiement BCACUP :

Champs Présence Commentaires
Le nom de la balise est bcacup Nom de l'élément
settlementMode Facultatif Modalité de paiement; Voir guide d’intégration BCACUP.
  • Exemple de requête duplicate
      <duplicate recordSequence="1">
  <merchantId>012323232323231</merchantId>
  <transactionReference>SIM201206810160</transactionReference>
  <amount>1000</amount>
  <currencyCode>978</currencyCode>
  <captureDay>1</captureDay>
  <captureMode>VALIDATION</captureMode>
  <customerEmail>your.email@email.com</customerEmail>
  <customerId>12345</customerId>
  <customerIpAddress>127.0.0.1</customerIpAddress>
  <fromTransactionReference>SIM2012068102311</fromTransactionReference>
  <merchantTransactionDateTime>2012-06-07T11:30:47+02:00</merchantTransactionDateTime>
  <orderChannel>MOTO</orderChannel>
  <orderId>123</orderId>
  <returnContext>my context</returnContext>
  <transactionOrigin>SOB</transactionOrigin>
  <paymentMeanData>
    <paypal>
      <invoiceId>my invoice id</invoiceId>
    </paypal>
    <bcacup>
      <settlementMode>COMPTAN</settlementMode>
    </bcacup>
  </paymentMeanData>
</duplicate>
    

Format de la réponse à la requête duplicate

La réponse contient tous les champs de la requête ainsi que les champs suivants :

Champs Commentaires
Le nom de la balise est duplicate Nom de la fonction
authorisationId
acquirerResponseCode
complementaryCode
complementaryInfo
responseCode
scoreColor
scoreInfo
scoreProfile
scoreThreshold
scoreValue
transactionDateTime
officeBatchResponseCode
maskedPan
panExpiryDate
paymentMeanBrand
cardData Voir paragraphe « Containers »
preAuthorisationProfile
preAuthorisationProfileValue
preAuthorisationRuleResultList Voir paragraphe « Containers »
paymentMeanBrandSelectionStatus
transactionPlatform Systématiquement valorisé à ‘PROD’ pour le moment
avsPostcodeResponseCode
avsAddressResponseCode
schemeTransactionIdentifier
paymentAccountReference
  • Exemple de réponse au format XML à une requête duplicate
      <duplicate recordSequence="1">
    …
    <authorisationId>956798798534</authorisationId >
    <acquirerResponseCode>00</acquirerResponseCode>
    <responseCode>00</responseCode>
    <transactionDateTime>2012-06-12T09:30:47+02:00</transactionDateTime>
    <officeBatchResponseCode>00</officeBatchResponseCode>
    <maskedPan>4907##########00</maskedPan>
    <panExpiryDate>201610</panExpiryDate>
    <paymentMeanBrand>VISA</paymentMeanBrand>
    <cardData>
        <cardProductCode>F</cardProductCode>
        <cardProductName>VISA CLASSIC</cardProductName>
        <cardProductProfile>C</cardProductProfile>
        <cardScheme>VISA</cardScheme>
        <issuerCode>00000</issuerCode>
        <issuerCountryCode>GRC</issuerCountryCode>
    </cardData>
    <transactionPlatform>PROD</transactionPlatform>
</duplicate>
    

Fonction cancel du service office

Cette fonction permet d’annuler une transaction avant l’envoi en banque ou de modifier son montant.

Une opération d’annulation ne peut pas être annulée et on ne peut pas annuler un montant supérieur au montant d’origine de la transaction.

Note: veuillez consulter le guide de configuration des fonctionnalités, partie 'gestion de caisse > annulation', pour savoir dans quels cas vous pouvez effectuer une opération d'annulation.

Format de la requête cancel

Champs Présence Commentaires
Le nom de la balise est cancel Obligatoire Nom de la fonction
recordSequence Obligatoire N6 – attribut qui indique le numéro de ligne, ce qui vous permet de rapprocher la réponse de la requête.
merchantId Obligatoire
transactionReference Obligatoire Référence de la transaction à annuler. Facultatif vous utilisez le s10TransactionReference .
s10TransactionReference Obligatoire Référence de la transaction à annuler. Facultatif vous utilisez le transactionReference .
amount Obligatoire
currencyCode Obligatoire
operationOrigin Facultatif
  • Exemple de requête cancel
      <cancel recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <transactionReference>SIM201206810160</transactionReference>
      <amount>1000</amount>
      <currencyCode>978</currencyCode>
      <operationOrigin>operationOrigin</operationOrigin>
</cancel>
    

Format de la réponse à la requête cancel

La réponse contient tous les champs de la requête ainsi que les champs suivants :

Champs Commentaires
Le nom de la balise est cancel Nom de la fonction
operationDateTime
responseCode
newStatus
newAmount
officeBatchResponseCode
  • Exemple de réponse à une requête cancel
      <cancel recordSequence="1">
<merchantId>012323232323231</merchantId>
    <transactionReference>DSU20150219070007</transactionReference>
    <amount>010</amount>
    <currencyCode>978</currencyCode>
    <operationOrigin>batch</operationOrigin>
    <operationDateTime>2015-02-27T20:19:57+01:00</operationDateTime>
    <responseCode>00</responseCode>
    <newStatus>TO_CAPTURE</newStatus>
    <newAmount>920</newAmount>
    <officeBatchResponseCode>00</officeBatchResponseCode>
</cancel>
    

Fonction walletOrder du service office

Cette fonction vous permet d’effectuer des paiements en utilisant les informations contenues dans le wallet de vos clients.

Format de la requête walletOrder

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes :

Champs Présence Commentaires
Le nom de la balise est walletOrder Obligatoire Nom de la fonction
recordSequence Obligatoire N6 – attribut qui indique le numéro de ligne, ce qui vous permet de rapprocher la réponse de la requête.
merchantId Obligatoire
transactionReference Obligatoire Facultatif si vous utilisez le S10TransactionReference .
s10TransactionReference Obligatoire Facultatif si vous utilisez le transactionReference .
amount Obligatoire
captureDay Facultatif
captureMode Facultatif
currencyCode Obligatoire
customerEmail Facultatif
customerId Facultatif
customerIpAddress Facultatif
merchantTransactionDateTime Facultatif
orderChannel Obligatoire
orderId Facultatif
paymentMeanId Obligatoire
returnContext Facultatif
statementReference Facultatif
merchantWalletId Obligatoire
transactionOrigin Facultatif
cardCSCValue Facultatif
paymentPattern Facultatif
fraudData Facultatif Voir paragraphe « Containers ».
orderContext Facultatif Voir paragraphe « Containers ».
travelContext Facultatif Voir paragraphe « Containers ».
deliveryContact Facultatif Voir paragraphe « Containers ».
deliveryAddress Facultatif Voir paragraphe « Containers ».
deliveryData Facultatif Voir paragraphe « Containers ».
holderContact Facultatif Voir paragraphe « Containers ».
billingContact Facultatif Voir paragraphe « Containers ».
billingAddress Facultatif Voir paragraphe « Containers ».
authenticationData Facultatif Voir paragraphe « Containers ».
holderAddress Facultatif Voir paragraphe « Containers ».
shoppingCartDetail Facultatif Voir paragraphe « Containers ».
initialSchemeTransactionIdentifier Facultatif
  • Exemple de requête walletOrder au format XML
      <walletOrder recordSequence="1">
     <amount>1000</amount>
     <captureDay>0</captureDay>
     <captureMode>VALIDATION</captureMode>
     <currencyCode>978</currencyCode>
     <customerEmail>test@worldline.com</customerEmail>
     <customerId>123</customerId>
     <customerIpAddress>127.0.0.1</customerIpAddress>
     <fraudData>
               <bypass3DS>all</bypass3DS>
               <allowedIpCountryList>
                    <country>FRA</country>
               </allowedIpCountryList>
     </fraudData>
     <merchantId>012323232323231</merchantId>
     <merchantTransactionDateTime>2012-11-29T17:04:30Z</merchantTransactionDateTime>
     <orderChannel>INTERNET</orderChannel>
     <orderId>123456</orderId>
     <paymentMeanId>1</paymentMeanId>
     <returnContext>context</returnContext>
     <transactionReference>20121218170402</transactionReference>
     <merchantWalletId>2</merchantWalletId>
     <transactionOrigin>origin</transactionOrigin>
     <cardCSCValue>100</cardCSCValue>
     <paymentPattern>ONE_SHOT</paymentPattern >
</walletOrder>
    

Format de la réponse à la requête walletOrder

La réponse contient tous les champs de la requête excepté cardCSCValue et initialSchemeTransactionIdentifier , ainsi que les champs suivants :

Champs Commentaires
Le nom de la balise est walletOrder Nom de la fonction
acquirerResponseCode
authorisationId
complementaryCode
complementaryInfo
guaranteeIndicator
holderAuthentRelegation
holderAuthentStatus
maskedPan
officeBatchResponseCode
responseCode
transactionDateTime
tokenPan
cardData Voir paragraphe « Containers »
preAuthorisationProfile
preAuthorisationProfileValue
preAuthorisationRuleResultList
transactionPlatform
cardCSCResultCode
avsPostcodeResponseCode
avsAddressResponseCode
authorMessageReference Non valorisé
authorisationTypeLabel Non valorisé
schemeTransactionIdentifier
paymentAccountReference
  • Exemple de réponse à une requête walletOrder
      <walletOrder recordSequence="1">
     …
     <acquirerResponseCode>00</acquirerResponseCode>
     <authorisationId>1234569654656</authorisationId>
     <maskedPan>160000.47</maskedPan>
     <officeBatchResponseCode>00</officeBatchResponseCode>
     <responseCode>00</responseCode>
     <transactionDateTime>2012-06-14T16:00:00+02:00</transactionDateTime>
     <transactionPlatform>PROD</transactionPlatform>
</walletOrder>
    

Fonction walletCredit du service office

Cette fonction vous permet de créditer vos clients via leur wallet sans transaction préalable.

Format de la requête walletCredit

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes :

Champs Présence Description
Le nom de la balise est walletCredit Obligatoire Nom de la fonction
recordSequence Obligatoire N6 – attribut qui indique le numéro de ligne, ce qui vous permet de rapprocher la réponse de la requête.
merchantId Obligatoire
transactionReference Obligatoire Facultatif si vous utilisez le S10TransactionReference .
s10TransactionReference Obligatoire Facultatif si vous utilisez le transactionReference . Voir paragraphe « Containers ».
amount Obligatoire
merchantWalletId Obligatoire
paymentMeanId Obligatoire
currencyCode Obligatoire
customerEmail Facultatif
customerId Facultatif
customerIpAddress Facultatif
orderChannel Facultatif
orderId Facultatif
returnContext Facultatif
transactionOrigin Facultatif
statementReference Facultatif
  • Exemple de requête walletCredit
      <walletCredit recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <transactionReference>SIM201206810160</transactionReference>
      <amount>124</amount>
      <merchantWalletId>A01</ merchantWalletId >
      <paymentMeanId>2</paymentMeanId>
      <currencyCode>978</currencyCode>
      <customerEmail>test@worldline.net</customerEmail>
      <customerId>123</customerId>
      <customerIpAddress>127.0.0.1</customerIpAddress>
      <orderChannel>MOTO</orderChannel>
      <orderId>123456</orderId>
      <paymentMeanBrand>VISA</paymentMeanBrand>
      <returnContext>context</returnContext>
      <transactionOrigin>origin</transactionOrigin>
      <statementReference>RefN123400</statementReference>
</walletCredit>
    

Format de la réponse à la requête walletCredit

La réponse contient tous les champs de la requête ainsi que les champs suivants :

Champs Description
Le nom de la balise est walletCredit Nom de la fonction
responseCode
acquirerResponseCode
authorisationId
maskedPan
paymentMeanBrand
newStatus
operationDateTime
officeBatchResponseCode
transactionPlatform Systématiquement valorisé à ‘PROD’.
  • Exemple de réponse à une requête walletCredit
      <walletCredit recordSequence="1">
      ….
      <responseCode>00</responseCode>
      <acquirerResponseCode>00</acquirerResponseCode>
      <authorisationId>1234569654656</authorisationId>
      <maskedPan>160000.47</maskedPan>
      <paymentMeanBrand>VISA</paymentMeanBrand >
      <newStatus>TO_CAPTURE</newStatus>
      <operationDateTime>2012-06-14T16:00:00+02:00</operationDateTime>
      <officeBatchResponseCode>00</officeBatchResponseCode>
      <transactionPlatform>PROD</transactionPlatform>
</walletCredit>
    

Fonction recycle du service office

Cette fonction permet de créer une nouvelle transaction à partir des données bancaires d'une transaction précédente. Cette opération est similaire à la duplication, mais avec des limites. Elle vous permet de recycler une transaction expirée ou refusée ou capturée partiellement (le montant n'a pas été entièrement réglé) sans dépasser le montant de la transaction initiale.

Format de la requête recycle

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes :

Champs Présence Commentaires
Le nom de la balise est recycle Obligatoire Nom de la fonction
recordSequence Obligatoire N6 – attribut qui indique le numéro de ligne, ce qui vous permet de rapprocher la réponse de la requête.
merchantId Obligatoire
transactionReference Obligatoire Facultatif si vous utilisez le S10TransactionReference .
s10TransactionReference Obligatoire Facultatif si vous utilisez le transactionReference . Voir paragraphe « Containers ».
amount Obligatoire
currencyCode Obligatoire
captureDay Facultatif
captureMode Facultatif
fromTransactionReference Obligatoire Référence de la transaction à recycler. Facultatif si vous utilisez le S10FromTransactionReference . Voir paragraphe « Containers ».
s10FromTransactionReference Obligatoire Référence de la transaction à recycler. Facultatif si vous utilisez le fromTransactionReference . Voir paragraphe « Containers ».
merchantTransactionDateTime Facultatif
transactionOrigin Facultatif
statementReference Facultatif
lastRecoveryIndicator Facultatif
orderContext Facultatif Voir paragraphe « Containers ».
travelContext Facultatif Voir paragraphe « Containers ».
deliveryContact Facultatif Voir paragraphe « Containers ».
deliveryAddress Facultatif Voir paragraphe « Containers ».
deliveryData Facultatif Voir paragraphe « Containers ».
holderContact Facultatif Voir paragraphe « Containers ».
billingContact Facultatif Voir paragraphe « Containers ».
billingAddress Facultatif Voir paragraphe « Containers ».
  • Exemple de requête recycle
      <recycle recordSequence="1">
  <merchantId>012323232323231</merchantId>
  <transactionReference>SIM201206810160</transactionReference>
  <amount>1000</amount>
  <captureDay>1</captureDay>
  <captureMode>VALIDATION</captureMode>
  <currencyCode>978</currencyCode>
  <fromTransactionReference>SIM2012068102311</fromTransactionReference>
  <merchantTransactionDateTime>2012-06-07T11:30:47+02:00</merchantTransactionDateTime>
  <transactionOrigin>SOB</transactionOrigin>
  <statementReference>REF1023540</statementReference>
</recycle>
    

Format de la réponse à la requête recycle

La réponse contient tous les champs de la requête ainsi que les champs suivants :

Champs Description
Le nom de la balise est recycle Nom de la fonction
acquirerResponseCode
authorisationId
complementaryCode
complementaryInfo
maskedPan
officeBatchResponseCode
panExpiryDate
paymentMeanBrand
responseCode
scoreColor
scoreInfo
scoreProfile
scoreThreshold
scoreValue
transactionDateTime
cardData Voir paragraphe « Containers ».
preAuthorisationProfile
preAuthorisationProfileValue
preAuthorisationRuleResultList Voir paragraphe « Containers ».
preAuthenticationColor
preAuthenticationInfo
preAuthenticationProfile
preAuthenticationProfileValue
preAuthenticationThreshold
preAuthenticationValue
preAuthenticationRuleResultList Voir paragraphe « Containers ».
paymentMeanBrandSelectionStatus
transactionPlatform Systématiquement valorisé à ‘PROD’.
schemeTransactionIdentifier
paymentAccountReference
  • Exemple de réponse à une requête recycle
      <recycle recordSequence="1">
    …
    <authorisationId>956798798534</authorisationId >
    <acquirerResponseCode>00</acquirerResponseCode>
    <responseCode>00</responseCode>
    <transactionDateTime>2012-06-12T09:30:47+02:00</transactionDateTime>
    <officeBatchResponseCode>00</officeBatchResponseCode>
    <transactionPlatform>PROD</transactionPlatform>
</recycle>
    

Fonction directDebitOrder du service office

Si vous possédez les informations bancaires d'un client, cette fonction vous permet d'effectuer des paiements de type prélèvement (SDD).

Format de la requête directDebitOrder

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes :

Champs Présence Commentaires
Le nom de la balise est directDebitOrder Obligatoire Nom de la fonction
recordSequence Obligatoire N6 – attribut qui indique le numéro de ligne, ce qui vous permet de rapprocher la réponse de la requête.
merchantId Obligatoire
transactionReference Obligatoire Référence de la transaction. Facultatif si vous utilisez le S10TransactionReference .
s10TransactionReference Obligatoire Référence de la transaction. Facultatif si vous utilisez le transactionReference . Voir paragraphe « Containers ».
amount Obligatoire
captureDay Facultatif
captureMode Facultatif
currencyCode Obligatoire
customerId Facultatif
customerIpAddress Facultatif
mandateId Obligatoire
merchantTransactionDateTime Facultatif
paymentPattern Facultatif
orderChannel Obligatoire
orderId Facultatif
returnContext Facultatif
statementReference Facultatif
transactionOrigin Facultatif
valueDate Facultatif
holderContact Facultatif Voir paragraphe « Containers ».
holderAddress Facultatif Voir paragraphe « Containers ».
instalmentData Facultatif Voir paragraphe « Containers ».
fraudData Facultatif Voir paragraphe « Containers ».
riskManagementCustomDataList Facultatif Voir paragraphe « Containers ».
shoppingCartDetail Facultatif Voir paragraphe « Containers ».
  • Exemple de requête directDebitOrder
      <directDebitOrder recordSequence="1">
         <amount>1000</amount>
         <captureMode>AUTHOR_CAPTURE</captureMode>
         <currencyCode>978</currencyCode>
         <customerId>12300</customerId>
         <customerIpAddress>127.0.0.1</customerIpAddress>
         <mandateId>000000000000004403</mandateId>
         <merchantId>012323232323231</merchantId>
         <merchantTransactionDateTime>2014-09-04T14:04:30Z</merchantTransactionDateTime>
         <orderChannel>INTERNET</orderChannel>
         <orderId>8888</orderId>
         <returnContext>context</returnContext>
         <statementReference>ref1000</statementReference>
         <transactionReference>TIR20140904000004</transactionReference>
         <transactionOrigin>batch</transactionOrigin>
         <valueDate>20140905</valueDate>
</directDebitOrder>
    

Format de la réponse à la requête directDebitOrder

La réponse contient tous les champs de la requête ainsi que les champs suivants :

Champs Commentaires
Le nom de la balise est directDebitOrder Nom de la fonction
acquirerResponseCode
authorisationId
captureDay
captureLimitDate
creditorId
guaranteeIndicator
holderAuthentRelegation
holderAuthentStatus
mandateId
maskedPan
officeBatchResponseCode
responseCode
secureReference
transactionActors
transactionDateTime
preAuthorisationProfile
preAuthorisationProfileValue
preAuthorisationRuleResultList Voir paragraphe « Containers ».
transactionPlatform Systématiquement valorisé à ‘PROD’.
  • Exemple de réponse à une requête directDebitOrder
      <directDebitOrder recordSequence="1">
    <amount>1000</amount>
    <captureDay>5</captureDay>
    <captureMode>AUTHOR_CAPTURE</captureMode>
    <currencyCode>978</currencyCode>
    <customerId>123</customerId>
    <customerIpAddress>127.0.0.1</customerIpAddress>
    <instalmentData>
        <number>1</number>
        <datesList>
            <date>Thu Sep 04 00:00:00 CEST 2014</date>
        </datesList>
        <transactionReferencesList>
            <transactionReference>TIR20140904000024</transactionReference>
        </transactionReferencesList>
        <amountsList>
            <amount>1000</amount>
        </amountsList>
    </instalmentData>
    <mandateId>000000000000004403</mandateId>
    <merchantId>012323232323231</merchantId>
    <merchantTransactionDateTime>2014-09-04T14:04:30Z</merchantTransactionDateTime>
    <paymentPattern>INSTALMENT</paymentPattern>
    <orderChannel>INTERNET</orderChannel>
    <orderId>8888</orderId>
    <returnContext>context</returnContext>
    <statementReference>stateref</statementReference>
    <transactionReference>TIR20140904000024</transactionReference>
    <transactionOrigin>batch</transactionOrigin>
    <valueDate>20140909</valueDate>
    <acquirerResponseCode>00</acquirerResponseCode>
    <authorisationId>33105000010020140904</authorisationId>
    <captureLimitDate>20140909</captureLimitDate>
    <maskedPan>AGRIFRPP879/FR76#####################48</maskedPan>
    <officeBatchResponseCode>00</officeBatchResponseCode>
    <responseCode>00</responseCode>
    <transactionActors>B2C</transactionActors>
    <transactionDateTime>2014-09-04T15:16:24+02:00</transactionDateTime>
    <transactionPlatform>PROD</transactionPlatform>
    <secureReference>SF_16957</secureReference>
</directDebitOrder>
    

Fonction acceptChallenge du service office

Cette fonction vous permet de vérifier et d’accepter le risque de fraude sur des transactions ayant un score de fraude orange. Une fois la transaction acceptée, elle reprend son cycle de vie normal.

Format de la requête acceptChallenge

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes :

Champs Présence Commentaires
Le nom de la balise est acceptChallenge Obligatoire Nom de la fonction
recordSequence Obligatoire N6 – attribut qui indique le numéro de ligne, ce qui vous permet de rapprocher la réponse de la requête.
merchantId Obligatoire
transactionReference Obligatoire Référence de la transaction. Facultatif si vous utilisez le S10TransactionReference .
s10TransactionReference Obligatoire Référence de la transaction. Facultatif si vous utilisez le transactionReference . Voir paragraphe « Containers ».
validationIndicator Facultatif
operationOrigin Facultatif
comment Facultatif
  • Exemple de requête acceptChallenge
      <acceptChallenge recordSequence="1">
  <merchantId>012323232323231</merchantId>
  <transactionReference>SIM201206810160</transactionReference>
  <validationIndicator>Y</validationIndicator>
  <operationOrigin>batch</operationOrigin>
  <comment>client fidelity</comment>
</acceptChallenge>
    

Format de la réponse à la requête acceptChallenge

La réponse contient tous les champs de la requête ainsi que les champs suivants :

Champs Description
Le nom de la balise est acceptChallenge Nom de la fonction
acquirerResponseCode
authorisationId
captureLimitDate
newStatus
officeBatchResponseCode
operationDateTime
responseCode
schemeTransactionIdentifier
paymentAccountReference
  • Exemple de réponse à une requête acceptChallenge
      <acceptChallenge recordSequence="1">
    …
    <acquirerResponseCode>00</acquirerResponseCode>
    <authorisationId>956798798534</authorisationId >
    <captureLimitDate>20150515</captureLimitDate>
    <newStatus>VALIDATED</newStatus>
    <responseCode>00</responseCode>
    <operationDateTime>2015-02-12T09:30:47+02:00</operationDateTime>
    <officeBatchResponseCode>00</officeBatchResponseCode>
</ acceptChallenge>
    

Fonction refuseChallenge du service office

Cette fonction vous permet de vérifier et de refuser le risque de fraude sur des transactions ayant un score de fraude orange. Dans le cas d’un refus, la transaction n’est pas envoyée en paiement.

Format de la requête refuseChallenge

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes :

Champs Présence Commentaires
Le nom de la balise est refuseChallenge Obligatoire Nom de la fonction
recordSequence Obligatoire N6 – attribut qui indique le numéro de ligne, ce qui vous permet de rapprocher la réponse de la requête.
merchantId Obligatoire
transactionReference Obligatoire Référence de la transaction. Facultatif si vous utilisez le S10TransactionReference .
s10TransactionReference Obligatoire Référence de la transaction. Facultatif si vous utilisez le transactionReference . Voir paragraphe « Containers ».
operationOrigin Facultatif
comment Facultatif
  • Exemple de requête refuseChallenge
      <refuseChallenge recordSequence="1">
  <merchantId>012323232323231</merchantId>
  <transactionReference>SIM201206810160</transactionReference>
  <operationOrigin>batch</operationOrigin>
  <comment>score warning</comment>
</refuseChallenge>
    

Format de la réponse à la requête refuseChallenge

La réponse contient tous les champs de la requête ainsi que les champs suivants :

Champs Description
Le nom de la balise est refuseChallenge Nom de la fonction
newStatus
officeBatchResponseCode
operationDateTime
responseCode
  • Exemple de réponse à une requête refuseChallenge
      <refuseChallenge recordSequence="1">
    …
    <newStatus>REFUSED</newStatus>
    <responseCode>05</responseCode>
    <operationDateTime>2015-02-12T09:30:47+02:00</operationDateTime>
    <officeBatchResponseCode>00</officeBatchResponseCode>
</refuseChallenge>
    

Fonction addToFraudList du service fraud

Cette opération permet d'ajouter un numéro de carte, de token ou de transaction (via le couple transactionIid/transactionDate ou transactionReference ) à différents types de liste fraude.

Format de la requête addToFraudList

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes :

Champs Présence Commentaires
Le nom de la balise est addToFraudList . Obligatoire Nom de la fonction
recordSequence Obligatoire N6 – attribut qui indique le numéro de ligne, ce qui vous permet de rapprocher la réponse de la requête.
merchantId Obligatoire
fraudListReasonCode Facultatif
fraudListType Obligatoire
fraudListLevel Obligatoire
fraudListElementType Obligatoire
fraudListElementValue Obligatoire Si la valeur de fraudListElementType est TRANSACTION_ID alors le format attendu dans cette donnée est transactionId@transactionDate (ex : 123@20180919)
  • Exemple de requête addToFraudList
      <addToFraudList recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <fraudListReasonCode>FRAUD</fraudListReasonCode>
      <fraudListType>CARD_LIST</fraudListType>
      <fraudListLevel>BLACK</fraudListLevel>
      <fraudListElementType>TRANSACTION_REF</fraudListElementType>
      <fraudListElementValue>ARTE160728OHE050231655</fraudListElementValue>
</addToFraudList>
    

Format de la réponse à la requête addToFraudList

La réponse contient les champs suivants :

Champs Commentaires
Le nom de la balise est addToFraudList . Nom de la fonction
merchantId
fraudListType
fraudListLevel
fraudListElementType
fraudListElementValue
officeBatchResponseCode
responseCode
  • Exemple de réponse à une requête addToFraudList
      <addToFraudList recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <fraudListType>CARD_LIST</fraudListType>
      <fraudListLevel>BLACK</fraudListLevel>
      <fraudListElementType>PAN</fraudListElementType>
      <fraudListElementValue>4975.75</fraudListElementValue>
      <responseCode>00</responseCode>
      <officeBatchResponseCode>00</officeBatchResponseCode>
</addToFraudList>
    

Fonction removeFromFraudList du service fraud

Cette opération permet de supprimer un numéro de carte, de token, de transaction (via le couple transactionIid/transactionDate ou transactionReference ) de différents types de liste fraude.

Format de la requête removeFromFraudList

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes :

Champs Présence Commentaires
Le nom de la balise est removeFromFraudList . Obligatoire Nom de la fonction
recordSequence Obligatoire N6 – attribut qui indique le numéro de ligne, ce qui vous permet de rapprocher la réponse de la requête.
merchantId Obligatoire
fraudListType Obligatoire
fraudListLevel Obligatoire
fraudListElementType Obligatoire
fraudListElementValue Obligatoire
  • Exemple de requête removeFromFraudList
      <removeFromFraudList recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <fraudListType>CARD_LIST</fraudListType>
      <fraudListLevel>BLACK</fraudListLevel>
      <fraudListElementType>PAN</fraudListElementType>
      <fraudListElementValue>4975497549754975</fraudListElementValue>
</removeFromFraudList>
    

Format de la réponse à la requête removeFromFraudList

La réponse contient les champs suivants :

Champs Commentaires
Le nom de la balise est removeFromFraudList . Nom de la fonction
merchantId
fraudListType
fraudListLevel
fraudListElementType
fraudListElementValue
responseCode
officeBatchResponseCode
  • Exemple de réponse à une requête removeFromFraudList
      <removeFromFraudList recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <fraudListType>CARD_LIST</fraudListType>
      <fraudListLevel>BLACK</fraudListLevel>
      <fraudListElementType>PAN</fraudListElementType>
      <fraudListElementValue>4975.75</fraudListElementValue>
      <responseCode>00</responseCode>
      <officeBatchResponseCode>00</officeBatchResponseCode>
</removeFromGreyList>
    

Fonction addCard du service wallet

Cette opération permet d'ajouter une carte à un wallet. Ce dernier est créé en même temps que l’ajout de la carte, s'il n'existe pas.

Les informations sensibles (numéro de carte) peuvent être gérées via le champ panType , chiffrement par l'utilisation du mode CSE (voir la documentation concernée).

Format de la requête addCard

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes :

Champs Présence Commentaires
Le nom de la balise est addCard . Obligatoire Nom de la fonction
recordSequence Obligatoire N6 – attribut qui indique le numéro de ligne, ce qui vous permet de rapprocher la réponse de la requête.
merchantId Obligatoire
merchantWalletId Obligatoire
paymentMeanAlias Facultatif
PaymentMeanBrand Facultatif
cardExpiryDate Obligatoire
cardNumber Obligatoire
panType Facultatif
  • Exemple de requête addCard
      <addCard recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanAlias>my VISA</paymentMeanAlias>
      <paymentMeanbrand>VISA</paymentMeanBrand>
      <cardExpiryDate>201910</cardExpiryDate>
      <cardNumber>4975497549754975</cardNumber>
</addCard>
    

Format de la réponse à la requête addCard

La réponse contient les champs suivants :

Champs Commentaires
Le nom de la balise est addCard . Nom de la fonction
merchantId
merchantWalletId
paymentMeanAlias
cardExpiryDate
maskedPan
paymentMeanId
officeBatchResponseCode
responseCode
walletCreationDateTime
  • Exemple de réponse au format XML
      <addCard recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanAlias>my VISA</paymentMeanAlias>
      <cardExpiryDate>202210</cardExpiryDate>
      <maskedPan>4975.75</maskedPan>
      <paymentMeanId>2</paymentMeanId>
      <officeBatchResponseCode>00</officeBatchResponseCode>
      <responseCode>00</responseCode>
      <walletCreationDateTime>2014-06-14T16:00:00+02:00</walletCreationDateTime >
</addCard >
    

Fonction addDirectDebit du service wallet

Cette opération permet d'ajouter un mandat à un wallet.

Format de la requête addDirectDebit

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes :

Champs Présence Commentaires
Le nom de la balise est addDirectDebit . Obligatoire Nom de la fonction
recordSequence Obligatoire Nom de la fonction
customerAccount Facultatif
customerBankCode Facultatif
mandateId Obligatoire
merchantId Obligatoire
merchantWalletId Obligatoire
paymentMeanAlias Facultatif
paymentMeanBrand Facultatif
transactionActors Facultatif
  • Exemple de requête addDirectDebit
      <addDirectDebit recordSequence="1">
      <mandateId>00000127001</mandateId>
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanAlias>my SDD</paymentMeanAlias>
      <paymentMeanBrand>SEPA_DIRECT_DEBIT</paymentMeanBrand>
      <transactionActors>B2C</transactionActors>
</addDirectDebit >
    

Format de la réponse à la requête addDirectDebit

La réponse contient les champs suivants :

Champs Commentaires
Le nom de la balise est addDirectDebit Nom de la fonction
merchantId
merchantWalletId
paymentMeanAlias
paymentMeanBrand
maskedPan
paymentMeanId
officeBatchResponseCode
responseCode
transactionActors
walletCreationDateTime
  • Exemple de réponse à une requête addDirectDebit
      <addDirectDebit recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanAlias>my SDD</paymentMeanAlias>
      <paymentMeanBrand>SEPA_DIRECT_DEBIT</paymentMeanBrand>
      <paymentMeanId>4</paymentMeanId>
      <officeBatchResponseCode>00</officeBatchResponseCode>
      <responseCode>00</responseCode>
      <transactionActors>B2C</transactionActors>
      <walletCreationDateTime>2014-06-14T16:00:00+02:00</walletCreationDateTime >
</addDirectDebit >
    

Fonction deletePaymentMean du service wallet

Cette opération permet de supprimer un moyen de paiement d'un wallet.

Format de la requête deletePaymentMean

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes :

Champs Présence Commentaires
Le nom de la balise est deletePaymentMean . Obligatoire Nom de la fonction
recordSequence Obligatoire N6 – attribut qui indique le numéro de ligne, ce qui vous permet de rapprocher la réponse de la requête.
merchantId Obligatoire
merchantWalletId Obligatoire
paymentMeanId Obligatoire
  • Exemple de requête deletePaymentMean
      <deletePaymentMean recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanId>4</paymentMeanId>
</deletePaymentMean>
    

Format de la réponse à la requête deletePaymentMean

La réponse contient les champs suivants :

Champs Commentaires
Le nom de la balise est deletePaymentMean. Nom de la fonction
merchantId
merchantWalletId
paymentMeanId
officeBatchResponseCode
responseCode
walletActionDateTime
  • Exemple de réponse à une requête deletePaymentMean
      <deletePaymentMean recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanId>4</paymentMeanId>
      <officeBatchResponseCode>00</officeBatchResponseCode>
      <responseCode>00</responseCode>
      <walletActionDateTime>2014-06-14T16:00:00+02:00</walletActionDateTime>
</deletePaymentMean>
    

Fonction updatePaymentMean du service wallet

Cette opération permet de mettre à jour l'un des moyens de paiement contenu dans le wallet d'un client.

Format de la requête updatePaymentMean

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes :

Champs Présence Commentaires
Le nom de la balise est updatePaymentMean . Obligatoire Nom de la fonction
recordSequence Obligatoire N6 – attribut qui indique le numéro de ligne, ce qui vous permet de rapprocher la réponse de la requête.
merchantId Obligatoire
merchantWalletId Obligatoire
paymentMeanId Obligatoire
paymentMeanAlias Facultatif
  • Exemple de requête updatePaymentMean
      <updatePaymentMean recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanId>4</paymentMeanId>
      <paymentMeanAlias>my SDD</paymentMeanAlias>
</updatePaymentMean>
    

Format de la réponse à la requête updatePaymentMean

La réponse contient les champs suivants :

Champs Commentaires
Le nom de la balise est updatePaymentMean . Nom de la fonction
merchantId
merchantWalletId
paymentMeanAlias
paymentMeanId
officeBatchResponseCode
responseCode
walletActionDateTime
  • Exemple de réponse à une requête updatePaymentMean
      <updatePaymentMean recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanAlias>my SDD</paymentMeanAlias>
      <paymentMeanId>4</paymentMeanId>
      <officeBatchResponseCode>00</officeBatchResponseCode>
      <responseCode>00</responseCode>
      <walletActionDateTime>2014-06-14T16:00:00+02:00</walletActionDateTime>
</updatePaymentMean>
    

Fonction signOff du service wallet

Cette opération permet de supprimer un wallet et tous les moyens de paiement qu'il contient.

Format de la requête signOff

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes :

Champs Présence Commentaires
Le nom de la balise est signOff Obligatoire Nom de la fonction
recordSequence Obligatoire N6 – attribut qui indique le numéro de ligne, ce qui vous permet de rapprocher la réponse de la requête.
merchantId Obligatoire
merchantWalletId Obligatoire
  • Exemple de requête signOff
      <signOff recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
</signOff>
    

Format de la réponse à la requête signOff

La réponse contient les champs suivants :

Champs Commentaires
Le nom de la balise est signOff Nom de la fonction
merchantId
merchantWalletId
officeBatchResponseCode
responseCode
walletActionDateTime
  • Exemple de réponse à une requête signOff
      <signOff recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <officeBatchResponseCode>00</officeBatchResponseCode>
      <responseCode>00</responseCode>
      <walletActionDateTime>2014-06-14T16:00:00+02:00</walletActionDateTime>
</signOff>
    

Fonction addIssuerWallet du service wallet

Cette opération permet d'ajouter un wallet externe (ex : Paylib) à un wallet Sogenactif .

Format de la requête addIssuerWallet

Tous les enregistrements de la partie « body » doivent contenir les informations suivantes :

Champs Présence Commentaires
Le nom de la balise est addIssuerWallet Obligatoire Nom de la fonction
recordSequence Obligatoire N6 – attribut qui indique le numéro de ligne, ce qui vous permet de rapprocher la réponse de la requête.
merchantId Obligatoire
merchantWalletId Obligatoire
paymentMeanAlias Obligatoire
issuerWalletId Obligatoire
issuerWalletType Obligatoire
  • Exemple de requête addIssuerWallet
      <addIssuerWallet recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanAlias>my payment card</paymentMeanAlias>
      <issuerWalletId>paylib-wallet-id</issuerWalletId>
      <issuerWalletType>PAYLIB</issuerWalletType>
</addIssuerWallet>
    

Format de la réponse à la requête addIssuerWallet

La réponse contient les champs suivants :

Champs Commentaires
Le nom de la balise est addIssuerWallet Nom de la fonction
merchantId
merchantWalletId
paymentMeanAlias
issuerWalletId
issuerWalletType
paymentMeanId
officeBatchResponseCode
responseCode
walletCreationDateTime
  • Exemple de réponse à une requête addIssuerWallet
      <addIssuerWallet recordSequence="1">
      <merchantId>012323232323231</merchantId>
      <merchantWalletId>TESTCLIENT</merchantWalletId>
      <paymentMeanAlias>my payment card</paymentMeanAlias>
      <issuerWalletId>paylib-wallet-id</issuerWalletId>
      <issuerWalletType>PAYLIB</issuerWalletType>
      <paymentMeanId>pmid-1</paymentMeanId>
      <officeBatchResponseCode>00</officeBatchResponseCode>
      <responseCode>00</responseCode>
      <walletCreationDateTime>2014-06-14T16:00:00+02:00</walletCreationDateTime>
</addIssuerWallet>
    

Containers

Les containers regroupent fonctionnellement les données. Ils peuvent contenir des listes, dans ce cas, les éléments des listes doivent être fournis de la manière suivante :

      <elementList>
<elementName>value1</elementName>
<elementName>value2</elementName>
…
</elementList>
    

Tous ces champs sont facultatifs.

s10TransactionReference

Champs Commentaires
Le nom de la balise est s10TransactionReference Nom de l'élément
s10TransactionId
s10TransactionIdDate Dans le cadre de la création de transaction, ce champ est calculé par notre serveur. Il est donc inutile de le valoriser (il sera ignoré si valorisé) sur les méthodes suivantes :
  • méthode cardOrder
  • méthode walletOrder
  • méthode directDebitOrder
  • méthode duplicate
  • méthode recycle
  • méthode credit
  • méthode walletCredit
  • Exemple de requête refund/s10TransactionReference
      <refund …>
…
  <s10TransactionReference>
     <s10TransactionId>100206</s10TransactionId>
     <s10TransactionIdDate>20150203</s10TransactionIdDate>
  </s10TransactionReference>
…
</refund>
    

s10FromTransactionReference

Champs Commentaires
Le nom de la balise est s10FromTransactionReference. Nom de l'élément
s10FromTransactionId
s10FromTransactionIdDate
  • Exemple de requête duplicate/s10FromTransactionReference
      <duplicate …>
…
  <s10FromTransactionReference>
     <s10FromTransactionId>100206</s10FromTransactionId>
     <s10FromTransactionIdDate>20150203</s10FromTransactionIdDate>
  </s10FromTransactionReference>
…
</duplicate>
    

paymentMeanData

Champs Commentaires
Le nom de la balise est paymentMeanData. Nom de l'élément
cofinoga

Donnée supplémentaire pour le moyen de paiement Cofinoga :

Champs Commentaires
Le nom de la balise est cofinoga Nom de l'élément
settlementMode Mode de paiement pour cofinoga ; voir guide d’implémentation du moyen de paiement.
  • Exemple de requête cardOrder/paymentMeanData pour cofinoga
      <cardOrder …>
…
  <paymentMeanData>
     <cofinoga>
        <settlementMode>MR_COMP</settlementMode>
     </cofinoga>
  </paymentMeanData>
…
</cardOrder>
    

cardData

Champs Commentaires
Le nom de la balise est cardData Nom de l'élément
cardProductCode
cardProductName
cardProductProfile
cardScheme
issuerCode
issuerCountryCode
cardProductUsageLabel Pour usage futur (MPADS)
  • Exemple de réponse à une requête duplicate/cardData
      <duplicate…>
…
  <cardData>
     <cardProductCode>2</cardProductCode>
     <cardProductName>CARTE NATIONALE DE RETRAIT ET DE PAIEMENT</cardProductName>
     <cardProductProfile>D</cardProductProfile>
     <cardScheme>CB</cardScheme>
     <issuerCode>10107</issuerCode>
     <issuerCountryCode>FRA</issuerCountryCode>
  </cardData>
…
</duplicate>
    

instalmentData

Note: la valeur du champ number et le nombre d'éléments dans les listes d’éléments doivent être identiques.
Champs Commentaires
Le nom de la balise est instalmentData . Nom de l'élément
number
datesList
transactionReferencesList
amountsList
s10TransactionIdsList
  • Exemple de requête directDebitOrder/instalmentData
      <directDebitOrder …>
…
  <instalmentData>
       <number>3</number>
       <datesList>
           <date>20140915</date>
           <date>20141015</date>
           <date>20141115</date>
       </datesList>
       <transactionReferencesList>
           <transactionReference>TIR20140915A</transactionReference>
           <transactionReference>TIR20141015A</transactionReference>
           <transactionReference>TIR20141115A</transactionReference>
       </transactionReferencesList>
       <amountsList>
           <amount>3100</amount>
           <amount>3100</amount>
           <amount>3100</amount>
       </amountsList>
  </instalmentData>
…
</directDebitOrder>
    

shoppingCartDetail

Champs Commentaires
Le nom de la balise est shoppingCartDetail Nom de l'élément
shoppingCartTotalAmount
shoppingCartTotalQuantity
shoppingCartTotalTaxAmount
mainProduct
ShoppingCartItemList
Champs Commentaires
Le nom de la balise est shoppingCartItemList Nom de l'élément
shoppingCartItem
Champs Commentaires
Le nom de la balise est shoppingCartItem Nom de l'élément
productName
productDescription
productCode
productSKU
productUnitAmount
productQuantity
productTaxRate
productUnitTaxAmount
productCategory
  • Exemple de requête cardOrder/shoppingCartDetail
      <cardOrder …>
…
  <shoppingCartDetail>
    <shoppingCartTotalAmount>12000</shoppingCartTotalAmount>
    <shoppingCartTotalQuantity>3</shoppingCartTotalQuantity>
    <shoppingCartTotalTaxAmount>21</shoppingCartTotalTaxAmount>
    <mainProduct>wine</mainProduct>
    <ShoppingCartItemList>
      <shoppingCartItem>
        <productName>Bordeaux</productName>
        <productCode>BDX1546201</productCode>
        <productUnitAmount>4000</productUnitAmount>
        <productQuantity>1</productQuantity>
      </shoppingCartItem>
      <shoppingCartItem>
        <productName>Bourgogne</productName>
        <productCode>BGN0588201</productCode>
        <productUnitAmount>5000</productUnitAmount>
        <productQuantity>1</productQuantity>
      </shoppingCartItem>
      <shoppingCartItem>
        <productName>Cognac</productName>
        <productCode>CGC8541500</productCode>
        <productUnitAmount>3000</productUnitAmount>
        <productQuantity>1</productQuantity>
      </shoppingCartItem>
    </ShoppingCartItemList>
</shoppingCartDetail>
…
</cardOrder>
    

orderContext

Champs Commentaires
Le nom de la balise est orderContext Nom de l'élément
customerHostName
customerBrowserType
customerANI
customerANIInformationIdentifier
  • Exemple de requête duplicate/orderContext
      <duplicate …>
…
  <orderContext>
     <customerHostName>Pierre Durand</customerHostName>
     <customerBrowserType> MOZILLA/4.0~(COMPATIBLE#059~MSIE~5.0#059~WINDOWS~95)</customerBrowserType>
     <customerANI>17A00206</customerANI>
     <customerANIInformationIdentifier>02</customerANIInformationIdentifier>
  </orderContext>
…
</duplicate>
    

travelContext

Champs Commentaires
Le nom de la balise est travelContext Nom de l'élément
departureDate
passengerName
originAirport
numberOfRoutingCities
routingCityList
numberOfAirlineCarriers
airlineCarrierList
fareBasis
numberOfPassengers
destinationAirport
reservationCode

Concernant les deux listes routingCityList et airlineCarrierList , leurs éléments doivent être fournis de la manière suivante :

      <routingCityList> 
<routingCity>value1</routingCity> 
<routingCity>value2</routingCity>
… 
</ routingCityList 
    
  • Exemple de requête duplicate/travelContext
      <duplicate …>
…
  <travelContext>
    <departureDate>201702270</departureDate>
    <passengerName>Arnaud Durand</passengerName>
    <originAirport>ORLY1</originAirport>
    <numberOfRoutingCities>2</numberOfRoutingCities>
    <routingCityList>
      <routingCity>PARIS</routingCity>
      <routingCity>SEOUL</routingCity>
    </routingCityList>
    <numberOfAirlineCarriers>2</numberOfAirlineCarriers>
    <airlineCarrierList>
      <airlineCarrier>1234</airlineCarrier>
      <airlineCarrier>KAL</airlineCarrier>
    </airlineCarrierList>
    <fareBasis>123456789</fareBasis>
    <numberOfPassengers>1</numberOfPassengers>
    <destinationAirport>LILLE</destinationAirport>
    <reservationCode>RESERVATIONCODE</reservationCode>
  </travelContext>
…
</duplicate>
    

deliveryData

Champs Commentaires
Le nom de la balise est deliveryData Nom de l'élément
method
  • Exemple de requête duplicate/deliveryData
      <duplicate …>
…
  <deliveryData>
        <method>A2</method>
  </deliveryData>
…
</duplicate>
    

deliveryContact

Champs Commentaires
Le nom de la balise est deliveryContact Nom de l'élément
firstName
lastName
phone
mobile
  • Exemple de requête duplicate/deliveryContact
      <duplicate …>
…
  <deliveryContact>
       <firstName>Pierre</firstName>
       <lastName>Dupont</lastName>
       <mobile>06666666</mobile>
       <phone>0521360011</phone>
  </deliveryContact>
…
</duplicate>
    

deliveryAddress

Champs Commentaires
Le nom de la balise est deliveryAddress Nom de l'élément
additionalAddress1
additionalAddress2
additionalAddress3
country
zipCode
  • Exemple de requête duplicate/deliveryAddress
      <duplicate …>
…
  <deliveryAddress>
        <additionalAddress1>80 Quai Voltaire, Bezons</additionalAddress1>
        <country>FRA</country>
        <zipCode>95870</zipCode>
  </deliveryAddress>
…
</duplicate>
    

holderData

Champs Commentaires
Le nom de la balise est holderData Nom de l'élément
birthDate
  • Exemple de requête cardOrder/holderData
      <cardOrder …>
…
  <holderData>
   <birthdate>19450902</birthdate>
  </holderData>
…
</cardOrder>
    

holderContact

Champs Commentaires
Le nom de la balise est holderContact Nom de l'élément
firstName
lastName
gender Non utilisé pour la fonction duplicate .
phone Non utilisé pour la fonction duplicate .
email Non utilisé pour la fonction duplicate .
  • Exemple de requête directDebitOrder/holderContact
      <directDebitOrder …>
…
  <holderContact>
       <firstName>Pierre</firstName>
       <lastName>Dupont</lastName>
       <gender>M</gender>
       <phone>0123456789</phone>
       <email>john.doe@mail.com</email>
  </holderContact>
…
</directDebitOrder>
    

holderAddress

Champs Commentaires
Le nom de la balise est holderAddress Nom de l'élément
additionalAddress1
additionalAddress2
additionalAddress3
city
country
streetName
streetNumber
postbox
state
zipCode
  • Exemple de requête directDebitOrder/holderAddress
      <directDebitOrder …>
…
  <holderAddress>
        <city>Bezons</city>
        <country>FRA</country>
        <streetName>Quai Voltaire</streetName>
        <streetNumber>80</streetNumber>
        <zipCode>95870</zipCode>
  </holderAddress>
…
</directDebitOrder>
    

billingContact

Champs Commentaires
Le nom de la balise est billingContact Nom de l'élément
phone
mobile
  • Exemple de requête duplicate/billingContact
      <duplicate …>
…
  <billingContact>
       <phone>0521360011</phone>
       <mobile>06666666</email>
  </billingContact>
…
</duplicate>
    

billingAddress

Champs Commentaires
Le nom de la balise est billingAddress Nom de l'élément
additionalAddress1
additionalAddress2
additionalAddress3
zipCode
  • Exemple de requête duplicate/billingAddress
      <duplicate …>
…
  <billingAddress>
        <additionalAddress1>80 Quai Voltaire, Bezons</additionalAddress1>
        <zipCode>95870</zipCode>
  </billingAddress>
…
</duplicate>
    

fraudData

Note: les éléments « autorisés » d'un type particulier ne peuvent être fournis en même temps que les éléments « interdits » du même type. Par exemple, allowedCardArea et deniedCardArea sont incompatibles.
Champs Commentaires
Le nom de la balise est fraudData Nom de l'élément
bypass3DS
bypassCtrlList
bypassInfoList
allowedCardCountryList
deniedCardCountryList
allowedCardArea Pour usage futur
deniedCardArea Pour usage futur
allowedIpCountryList
deniedIpCountryList
allowedIpArea Pour usage futur
deniedIpArea Pour usage futur
riskManagementDynamicSettingList
  • Exemple de requête duplicate/fraudData
      <duplicate …>
…
  <fraudData>
       <deniedIpCountryList>
              <country>ATG</country>
              <country>FRA</country>
              <country>DNK</country>
       </deniedIpCountryList>
  </fraudData>
…
</duplicate>
    

riskManagementDynamicSettingList

Champs Commentaires
Le nom de la balise est riskManagementDynamicSettingList Nom de l'élément
riskManagementDynamicSetting
Champs Commentaires
Le nom de la balise est RiskManagementDynamicSetting Nom de l'élément
riskManagementDynamicParam
riskManagementDynamicValue
  • Exemple de requête fraudData/riskManagementDynamicSettingList
      <duplicate>
…
    <riskManagementDynamicSettingList>
      <riskManagementDynamicSetting>
         <riskManagementDynamicParam>AllowedIpCountryList</riskManagementDynamicParam>
         <riskManagementDynamicValue>FRA,BEL</riskManagementDynamicValue>
      </riskManagementDynamicSetting>
      <riskManagementDynamicSetting>
         <riskManagementDynamicParam>DeniedIpCountryList</riskManagementDynamicParam>
         <riskManagementDynamicValue>DEU</riskManagementDynamicValue>
      </riskManagementDynamicSetting>
    </riskManagementDynamicSettingList>
</fraudData> 
</duplicate>
    

riskManagementCustomDataList

Champs Commentaires
Le nom de la balise est riskManagementCustomDataList Nom de l'élément
riskManagementCustomData
Champs Commentaires
Le nom de la balise est riskManagementCustomData Nom de l'élément
riskManagementCustomSequence
riskManagementCustomValue
  • Exemple de requête cardOrder/riskManagementCustomDataList
      <cardOrder …>
…
  <riskManagementCustomDataList>
     <riskManagementCustomData>
        <riskManagementCustomSequence>1</riskManagementCustomSequence>
        <riskManagementCustomValue>1</riskManagementCustomValue>
     </riskManagementCustomData >
  </riskManagementCustomDataList>
…
</cardOrder>
    

preAuthorisationRuleResultList

Champs Commentaires
Le nom de la balise est preAuthorisationRuleResultList Nom de l’élément
ruleResult
  • Exemple de réponse du champ preAuthorisationRuleResultList
          <preAuthorisationRuleResultList>
        <ruleResult>
        …
        </ruleResult>
        <ruleResult>
        …
        </ruleResult>
    </preAuthorisationRuleResultList>
    
Champs Commentaires
Le nom de la balise est ruleResult Nom de l’élément
ruleCode
ruleType
ruleWeight
ruleSetting
ruleResultIndicator
ruleDetailedInfo
  • Exemple de l’élément ruleResult
        <ruleResult>
            <ruleCode>EC</ruleCode>
            <ruleType>NG</ruleType>
            <ruleWeight>D</ruleWeight>
            <ruleSetting>N</ruleSetting>
            <ruleResultIndicator>U</ruleResultIndicator>
            <ruleDetailedInfo>MAX=2:2</ruleDetailedInf>
        </ruleResult>
    

preAuthenticationRuleResultList

Champs Commentaires
Le nom de la balise est preAuthenticationRuleResultList Nom de l’élément
ruleResult Veuillez voir ruleResult dans le duplicate response  0.
  • Exemple de réponse du champ preAuthenticationRuleResultList
      <preAuthenticationRuleResultList>
        <ruleResult>
        …
        </ruleResult>
        <ruleResult>
        …
        </ruleResult>
    </preAuthenticationRuleResultList>
    

Voir ci dessus le détail de l’élément ruleResult .

authenticationData

Champs Commentaires
Le nom de la balise est authenticationData Nom de l'élément
CardAuthPolicy
Champs Commentaires
Le nom de la balise est CardAuthPolicy Nom de l'élément
checkAVS
ignoreCSCCheckResult
ignorePostcodeCheckResult
ignoreAddressCheckResult
automaticReverse
  • Exemple de requête duplicate/authenticationData
      <duplicate …>
…
  <authenticationData>
      <CardAuthPolicy>
          <checkAVS>Y</checkAVS>
          <ignoreCSCCheckResult>N</ignoreCSCCheckResult>
          <ignorePostcodeCheckResult>N</ignorePostcodeCheckResult>
          <ignoreAddressCheckResult>N</ignoreAddressCheckResult>
          <automaticReverse>Y</automaticReverse>
      </CardAuthPolicy>
  </authenticationData>
…
</duplicate>
    

Analyser les erreurs lors de la vérification du fichier

Il y a plusieurs niveaux de codes réponses lors du traitement d'un fichier par Sogenactif Office Batch . Plusieurs vérifications globales sont effectuées avant que le fichier ne soit traité. Si l'une de ces vérifications échoue, le fichier est entièrement refusé ( processingResponseCode n'est égal ni à 00 ni à 01).

Le fichier de réponses retourné contient le code de résultat global du traitement dans le champ processingResponseCode présent dans l'en-tête du fichier.

Codes de résultat global du traitement

Code Signification
00 Fichier traité correctement . Le fichier contient la liste des opérations
01 Fichier traité correctement. Une opération a été associée à un commerçant qui n'est pas lié à l'identifiant de remettant . Le champ officeBatchResponseCode sera valorisé à 80 par l'opération.
02 Fichier déjà traité. Le numéro de séquence du fichier est inférieur à ce qu’il devrait être. Le numéro correct est envoyé dans le message qui décrit l'erreur.
03 Rupture de séquence dans le numéro de séquence du fichier . Le numéro de séquence du fichier est supérieur à ce qu’il devrait être. Le numéro correct est envoyé dans le message qui décrit l'erreur.
04 Problème technique . Problème interne
05 Fichier trop grand
06 Le nombre d'opérations dépasse la quantité maximale autorisée . Le nombre maximal d'opérations a été atteint (100 000 opérations. Cette limite peut être inférieure si vous n'utilisez pas la dernière version du connecteur).
07 Le nombre d'opérations compté est différent du nombre indiqué dans le champ nbRecord .
08 Opération en double
09 Enregistrement invalide
10 Format de fichier invalide . Le format du fichier est invalide (la description de l'erreur sera retournée dans la balise error-details ).
11 Remettant invalide. Le remettant déclaré dans l'en-tête est invalide.
Autres codes Fichier invalide (ces codes concernent les versions plus anciennes de Sogenactif Office Batch ).
Code réponse Cause Solution
Différent de 00 et 01 Redémarrage du traitement Le fichier de requêtes doit être renvoyé en intégralité avec le même numéro de séquence de fichier.
03 Rupture de numéro de séquence du fichier Le fichier a été complètement refusé. Si nécessaire, le numéro de séquence doit être corrigé et le fichier renvoyé.
04 Erreur technique

Une opération a provoqué une erreur technique. Le traitement du fichier n'a pas été interrompu. Dans ce cas, le traitement peut être très rapide, car toutes les opérations avec le code 25 ou 90 seront refusées (champ responseCode ).

Pour l'heure, Société Générale n'a pas fourni de mécanisme pour différer le traitement dans l'attente qu'une connexion soit de nouveau établie.

Analyser les erreurs causées par une opération

Chaque opération est considérée comme indépendante. Chaque opération a son propre code de réponse stocké (champ officeBatchResponseCode ). Le code indique le champ qui est à l'origine du problème.

Si une opération échoue, le traitement n'est pas interrompu. L'opération est refusée avec le code-réponse Sogenactif classique (champ responseCode ).

Codes Champs en question
00 Aucun (tous les champs sont corrects.)
01 merchantId error
03 transactionReference error
04 merchantTransactionDateTime error
05 amount error
06 captureDay error
07 captureMode error
08 operationAmount error
09 operationOrigin error
11 currencyCode error
12 customerIpAddress error
13 customerEmail error
14 customerId error
16 orderId error
17 orderChannel error
18 transactionOrigin error
19 returnContext error
20 fromTransactionReference error
21 cardExpiryDate error
22 cardNumber error
23 cardCSCValue error
24 cardEffectiveDate error
25 cardSeqNumber error
26 paymentMeanBrand error
27 authorisationId error
28 merchantWalletId error
29 paymentMeanId error
30 paymentPattern error
31 number error
32 statementReference error
33 panType error
34 mandateId error
35 valueDate error
36 paymentMeanAlias error
37 account error
38 bankCode error
39 transactionActors error
45 Date fields format error
46 settlementMode error
47 comment error
48 validationIndicator error
50 s10TransactionId error
51 s10TransactionIdDate error
52 s10FromTransactionId error
53 s10FromTransactionIdDate error
54 fraudData error
55 riskManagementDynamicParam error
56 riskManagementDynamicValue error
57 riskManagementDynamicSettingList error
58 fraudListReason error
59 fraudListType error
60 fraudListLevel error
61 fraudListElementType error
62 fraudListElementValue error
63 lastRecoveryIndicator error
80 Commerçant non enregistré pour Sogenactif Office Batch /non lié au remettant déclaré dans l'en-tête

Étape 3 : tester sur l’environnement de recette client

L’objectif est de valider que la structure du fichier et la syntaxe des requêtes sont correctes. Pour cette 1ère étape, il n’y a pas de connexion vers l’acquéreur de paiement : les demandes d’autorisations carte sont simulées. Les transactions sont stockées dans le back office Sogenactif et vous pouvez tester les opérations de caisse sur ces transactions.

Contactez l’assistance technique pour configurer une boutique sur l’environnement de recette et demander la mise en place d’un transfert de fichier entre votre site et Sogenactif .

Étape 4 : valider le passage en production

Commencez par soumettre un fichier contenant un nombre limité d’opérations afin de valider le passage en production. Vérifiez dans le fichier réponse que toutes les opérations se sont bien déroulées :

  • Surveillez le taux d’acceptation (nombre de responseCode  00/nombre total d’opérations).
  • Vérifiez la nature des refus non bancaires.
    • Problème technique : responseCode  90, 97, 99,
    • Fraude acquéreur : responseCode  34.

Annexes

Vous trouverez ci-dessous les schémas XML correspondant à chaque service disponible dans Sogenactif Office Batch .

XSD du service office

Fichier requête

      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

<xs:element name="file">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="header" />
        <xs:element ref="body" />
        <xs:element ref="end" />
      </xs:sequence>
      <xs:attribute name="type" type="xs:string" use="required" fixed="request" />
      <xs:attribute name="format" type="xs:string" use="required"/>
      <xs:attribute name="version" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

<xs:element name="header">
    <xs:complexType>
      <xs:all>
        <xs:element name="remitterId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="date" type="xs:date" maxOccurs="1" minOccurs="1"/>
        <xs:element name="time" type="xs:time" maxOccurs="1" minOccurs="1"/>
        <xs:element name="sequence" type="xs:string" maxOccurs="1" minOccurs="1"/>
      </xs:all>
    </xs:complexType>
  </xs:element>

<xs:element name="body">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="validate" />
        <xs:element ref="refund" />
        <xs:element ref="duplicate" />
        <xs:element ref="cardOrder" />
        <xs:element ref="directDebitOrder" />
        <xs:element ref="cancel" />
        <xs:element ref="credit" />
        <xs:element ref="walletOrder" />
        <xs:element ref="recycle" />
        <xs:element ref="acceptChallenge" />
        <xs:element ref="refuseChallenge" />
        <xs:element ref="walletCredit" />
      </xs:choice>
    </xs:complexType>
  </xs:element>

  <xs:element name="end">
    <xs:complexType>
      <xs:attribute name="nbRecord" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

<xs:element name="cardOrder">
<xs:complexType>
      <xs:all>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="captureDay" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureMode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="cardCSCValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="cardEffectiveDate" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="cardExpiryDate" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="cardNumber" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="cardSeqNumber" type="xs:short" maxOccurs="1" minOccurs="0"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="customerEmail" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="fraudData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantTransactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderChannel" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentPattern" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="panType" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="paymentMeanData" maxOccurs="1" minOccurs="0" />
        <xs:element name="holderData" type="holderData" maxOccurs="1" minOccurs="0" />
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="riskManagementCustomDataList" maxOccurs="1" minOccurs="0" />
        <xs:element ref="shoppingCartDetail" maxOccurs="1" minOccurs="0" />
        <xs:element name="paymentMeanBrand" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanBrandSelectionStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="orderContext" maxOccurs="1" minOccurs="0" />
        <xs:element ref="travelContext" maxOccurs="1" minOccurs="0" />
        <xs:element name="deliveryContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryData" type="DeliveryData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="authenticationData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element name="initialSchemeTransactionIdentifier" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="directDebitOrder">
    <xs:complexType>
      <xs:all>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="captureDay" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureMode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="fraudData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="instalmentData" minOccurs="0" maxOccurs="1" />
        <xs:element name="mandateId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantTransactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentPattern" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderChannel" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="valueDate" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="riskManagementCustomDataList" maxOccurs="1" minOccurs="0" />
        <xs:element ref="shoppingCartDetail" maxOccurs="1" minOccurs="0" />
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="credit">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="cardEffectiveDate" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="cardExpiryDate" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="cardNumber" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="cardCSCValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="cardSeqNumber" type="xs:short" maxOccurs="1" minOccurs="0"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="customerEmail" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderChannel" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanBrand" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="panType" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0" />
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="cancel">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="operationOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="refund">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="operationAmount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="operationOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="shoppingCartDetail" maxOccurs="1" minOccurs="0" />
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="duplicate">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="captureDay" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureMode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerEmail" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="fraudData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="fromTransactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantTransactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderChannel" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="fromMerchantId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="s10FromTransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="orderContext" maxOccurs="1" minOccurs="0" />
        <xs:element ref="travelContext" maxOccurs="1" minOccurs="0" />
        <xs:element name="deliveryContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryData" type="DeliveryData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="authenticationData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="shoppingCartDetail" maxOccurs="1" minOccurs="0" />
        <xs:element name="paymentMeanData" minOccurs="0" maxOccurs="1" />
            <xs:complexType>
                <xs:all>
                    <xs:element name="paypal" type="duplicate.paymentMeanData.paypal" minOccurs="0" maxOccurs="1"/>
                    <xs:element name="bcacup" type="duplicate.paymentMeanData.bcacup" minOccurs="0" maxOccurs="1"/>
                </xs:all>
            </xs:complexType>
        </xs:element>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

	<xs:complexType name="duplicate.paymentMeanData.paypal">
		<xs:all>
			<xs:element name="invoiceId" type="xs:string" minOccurs="0" />
		</xs:all>
	</xs:complexType>
	<xs:complexType name="duplicate.paymentMeanData.bcacup">
		<xs:all>
			<xs:element name="settlementMode" type="xs:string" minOccurs="0" />
		</xs:all>
	</xs:complexType>

<xs:element name="recycle">
    <xs:complexType>
      <xs:all>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="captureDay" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureMode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="fromTransactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantTransactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="s10FromTransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element name="lastRecoveryIndicator" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="orderContext" maxOccurs="1" minOccurs="0" />
        <xs:element ref="travelContext" maxOccurs="1" minOccurs="0" />
        <xs:element name="deliveryContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryData" type="DeliveryData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingAddress" type="Address" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="validate">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="operationAmount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="operationOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
                <xs:element name="lastRecoveryIndicator" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="walletOrder">
      <xs:complexType>
        <xs:all>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="captureDay" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureMode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="customerEmail" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="fraudData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantTransactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderChannel" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="cardCSCValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentPattern" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="orderContext" maxOccurs="1" minOccurs="0" />
        <xs:element ref="travelContext" maxOccurs="1" minOccurs="0" />
        <xs:element name="deliveryContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryData" type="DeliveryData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="authenticationData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element name="initialSchemeTransactionIdentifier" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

  <xs:element name="walletCredit">
      <xs:complexType>
        <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="customerEmail" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderChannel" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0" />
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

  <xs:element name="acceptChallenge">
    <xs:complexType>
      <xs:all>
        <xs:element name="comment" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="operationOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="validationIndicator" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="refuseChallenge">
    <xs:complexType>
      <xs:all>
        <xs:element name="comment" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="operationOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

  <xs:element name="fraudData">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="bypass3DS" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="bypassCtrlList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="ctrl"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="bypassInfoList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="info"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:choice maxOccurs="1" minOccurs="0">
          <xs:element name="allowedCardCountryList"
            type="CountryList">
          </xs:element>
          <xs:element name="deniedCardCountryList"
            type="CountryList">
          </xs:element>
        </xs:choice>
        <xs:choice maxOccurs="1" minOccurs="0">
          <xs:element name="allowedCardArea"
            type="xs:string">
          </xs:element>
          <xs:element name="deniedCardArea"
            type="xs:string">
          </xs:element>
        </xs:choice>
        <xs:choice maxOccurs="1" minOccurs="0">
          <xs:element name="allowedIpCountryList"
            type="CountryList">
          </xs:element>
          <xs:element name="deniedIpCountryList"
            type="CountryList">
          </xs:element>
        </xs:choice>
        <xs:choice maxOccurs="1" minOccurs="0">
          <xs:element name="allowedIpArea" type="xs:string"></xs:element>
          <xs:element name="deniedIpArea" type="xs:string"></xs:element>
        </xs:choice>
        <xs:element minOccurs="0" name="riskManagementDynamicSettingList">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" minOccurs="0" name="riskManagementDynamicSetting" type="RiskManagementDynamicSetting"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

<xs:complexType name="CountryList">
    <xs:sequence>
      <xs:element name="country" type="xs:string" maxOccurs="unbounded" minOccurs="1"></xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RiskManagementDynamicSetting">
    <xs:sequence>
      <xs:element name="riskManagementDynamicParam" type="xs:string" maxOccurs="1" minOccurs="1"></xs:element>
      <xs:element name="riskManagementDynamicValue" type="xs:string" maxOccurs="1" minOccurs="1"></xs:element>
    </xs:sequence>
  </xs:complexType>

<xs:complexType name="Contact">
    <xs:all>
      <xs:element name="email" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="firstName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="lastName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="gender" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="phone" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="mobile" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>

<xs:complexType name="Address">
    <xs:all>
      <xs:element name="additionalAddress1" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="additionalAddress2" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="additionalAddress3" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="city" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="country" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="streetName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="streetNumber" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="zipCode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="state" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="postbox" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="DeliveryData">
    <xs:all>
      <xs:element name="deliveryMethod" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>

  <xs:element name="instalmentData">
    <xs:complexType>
      <xs:all>
        <xs:element name="number" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="datesList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="date"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="transactionReferencesList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="transactionReference"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="amountsList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="amount"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="s10TransactionIdsList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="s10TransactionId"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

<xs:element name="paymentMeanData">
    <xs:complexType>
      <xs:all>
        <xs:element name="accord" type="accord" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="cofinoga" type="cofinoga" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="accord">
    <xs:all>
      <xs:element name="settlementMode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="cofinoga">
    <xs:all>
      <xs:element name="settlementMode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="holderData">
    <xs:all>
      <xs:element name="birthDate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>

  <xs:element name="s10TransactionReference">
    <xs:complexType>
      <xs:all>
        <xs:element name="s10TransactionId" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="s10TransactionIdDate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

<xs:element name="s10FromTransactionReference">
    <xs:complexType>
      <xs:all>
        <xs:element name="s10FromTransactionId" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="s10FromTransactionIdDate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

<xs:element name="riskManagementCustomDataList">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="riskManagementCustomData" maxOccurs="unbounded" minOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

<xs:element name="riskManagementCustomData">
    <xs:complexType>
      <xs:all>
        <xs:element name="riskManagementCustomSequence" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="riskManagementCustomValue" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

<xs:element name="shoppingCartDetail">
    <xs:complexType>
      <xs:all>
        <xs:element name="shoppingCartTotalAmount" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="shoppingCartTotalQuantity" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="shoppingCartTotalTaxAmount" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="mainProduct" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="ShoppingCartItemList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element ref="shoppingCartItem" maxOccurs="unbounded" minOccurs="1"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:element name="shoppingCartItem">
    <xs:complexType>
      <xs:all>
        <xs:element name="productName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productDescription" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productCode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productSKU" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productUnitAmount" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productQuantity" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productTaxRate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productUnitTaxAmount" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productCategory" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

<xs:element name="orderContext">
    <xs:complexType>
      <xs:all>
        <xs:element name="customerHostName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="customerBrowserType" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="customerANI" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="customerANIInformationIdentifier" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:element name="travelContext">
    <xs:complexType>
      <xs:all>
        <xs:element name="departureDate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="passengerName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="originAirport" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="numberOfRoutingCities" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="routingCityList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="routingCity" type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="numberOfAirlineCarriers" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="airlineCarrierList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="airlineCarrier" type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="fareBasis" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="numberOfPassengers" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="destinationAirport" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="reservationCode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

<xs:element name="authenticationData">
    <xs:complexType>
      <xs:all>
        <xs:element name="cardAuthPolicy" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:all>
              <xs:element name="checkAVS" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
              <xs:element name="ignoreCSCCheckResult" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
              <xs:element name="ignorePostcodeCheckResult" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
              <xs:element name="ignoreAddressCheckResult" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
              <xs:element name="automaticReverse" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
            </xs:all>
          </xs:complexType>
        </xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>
</xs:schema>
    

Fichier réponse

      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

  <xs:element name="file">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="header" />
        <xs:element ref="error-details" minOccurs="0" />
        <xs:element ref="body" minOccurs="0" />
        <xs:element ref="end" />
      </xs:sequence>
      <xs:attribute name="type" type="xs:string" use="required" fixed="response" />
      <xs:attribute name="format" type="xs:string" use="required"/>
      <xs:attribute name="version" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="header">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="remitterId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="date" type="xs:date" maxOccurs="1" minOccurs="1"/>
        <xs:element name="time" type="xs:time" maxOccurs="1" minOccurs="1"/>
        <xs:element name="sequence" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="processingResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="beginProcessTime" type="xs:dateTime" maxOccurs="1" minOccurs="1"/>
        <xs:element name="endProcessTime" type="xs:dateTime" maxOccurs="1" minOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="body">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="validate" />
        <xs:element ref="refund" />
        <xs:element ref="duplicate" />
        <xs:element ref="cardOrder" />
        <xs:element ref="directDebitOrder" />
        <xs:element ref="cancel" />
        <xs:element ref="credit" />
        <xs:element ref="walletOrder" />
        <xs:element ref="recycle" />
        <xs:element ref="acceptChallenge" />
        <xs:element ref="refuseChallenge" />
        <xs:element ref="walletCredit" />
      </xs:choice>
    </xs:complexType>
  </xs:element>
  
  <!-- Error details for error response file -->
  <xs:element name="error-details" type="xs:string" />
  
  <xs:element name="end">
    <xs:complexType>
      <xs:attribute name="nbRecord" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>  

  
  <xs:element name="cardOrder">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="captureDay" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureMode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="customerEmail" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="fraudData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantTransactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderChannel" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentPattern" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="panType" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="paymentMeanData" maxOccurs="1" minOccurs="0" />
        <xs:element name="holderData" type="holderData" maxOccurs="1" minOccurs="0" />
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="orderContext" maxOccurs="1" minOccurs="0" />
        <xs:element ref="travelContext" maxOccurs="1" minOccurs="0" />
        <xs:element name="deliveryContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryData" type="DeliveryData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="authenticationData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element name="initialSchemeTransactionIdentifier" type="xs:string" maxOccurs="1" minOccurs="0"/>

        <!-- RESPONSE -->
        <xs:element name="acquirerResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorisationId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="complementaryCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="complementaryInfo" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="guaranteeIndicator" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAuthentRelegation" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAuthentStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="maskedPan" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="tokenPan" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorMessageReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="acquirerResponseMessage" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanTradingName" type="xs:string" maxOccurs="1" minOccurs="0"/>
      
        <xs:element ref="riskManagementCustomDataList" maxOccurs="1" minOccurs="0" />
        <xs:element ref="shoppingCartDetail" maxOccurs="1" minOccurs="0" />
        <xs:element ref="cardData" maxOccurs="1" minOccurs="0" />
        
        <xs:element name="recurringResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <!-- RMS fields -->
        <xs:element name="preAuthorisationProfile" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="preAuthorisationProfileValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element minOccurs="0" name="preAuthorisationRuleResultList">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" minOccurs="0" name="ruleResult" type="RuleResult"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="paymentMeanBrand" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanBrandSelectionStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionPlatform" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="cardCSCResultCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="avsPostcodeResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="avsAddressResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorisationTypeLabel" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="schemeTransactionIdentifier" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentAccountReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="directDebitOrder">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="captureDay" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureMode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="fraudData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="instalmentData" minOccurs="0" maxOccurs="1" />
        <xs:element name="mandateId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantTransactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentPattern" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderChannel" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="valueDate" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        
        <!-- RESPONSE -->
        <xs:element name="acquirerResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorisationId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureLimitDate" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="creditorId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="guaranteeIndicator" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAuthentRelegation" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAuthentStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="maskedPan" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionActors" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        
        <xs:element ref="riskManagementCustomDataList" maxOccurs="1" minOccurs="0" />
        <xs:element ref="shoppingCartDetail" maxOccurs="1" minOccurs="0" />
                <!-- RMS fields -->
                <xs:element name="preAuthorisationProfile" type="xs:string" maxOccurs="1" minOccurs="0"/>
                <xs:element name="preAuthorisationProfileValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
                <xs:element minOccurs="0" name="preAuthorisationRuleResultList">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element maxOccurs="unbounded" minOccurs="0" name="ruleResult" type="RuleResult"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
        <xs:element name="transactionPlatform" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="secureReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

  <xs:element name="credit">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="customerEmail" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanBrand" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="panType" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0" />
        
        <!-- RESPONSE -->
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="acquirerResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorisationId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="maskedPan" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="newStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="operationDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionPlatform" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="cancel">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="operationOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        
        <!-- RESPONSE -->
        <xs:element name="operationDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="newStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="newAmount" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="refund">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="operationAmount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="operationOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="shoppingCartDetail" maxOccurs="1" minOccurs="0" />

        <!-- RESPONSE -->
        <xs:element name="operationDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="newStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="newAmount" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorisationId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="acquirerResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="duplicate">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="captureDay" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureMode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerEmail" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="fraudData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="fromTransactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantTransactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderChannel" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="fromMerchantId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="s10FromTransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="orderContext" maxOccurs="1" minOccurs="0" />
        <xs:element ref="travelContext" maxOccurs="1" minOccurs="0" />
        <xs:element name="deliveryContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryData" type="DeliveryData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="authenticationData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="shoppingCartDetail" maxOccurs="1" minOccurs="0" />

        <!-- RESPONSE -->
        <xs:element name="authorisationId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="acquirerResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="complementaryCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="complementaryInfo" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="scoreColor" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="scoreInfo" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="scoreProfile" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="scoreThreshold" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="scoreValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="maskedPan" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="panExpiryDate" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanBrand" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="cardData" maxOccurs="1" minOccurs="0" />
        <xs:element name="avsPostcodeResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="avsAddressResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="schemeTransactionIdentifier" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentAccountReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <!-- RMS fields -->
        <xs:element name="preAuthorisationProfile" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="preAuthorisationProfileValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element minOccurs="0" name="preAuthorisationRuleResultList">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" minOccurs="0" name="ruleResult" type="RuleResult"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="paymentMeanBrandSelectionStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionPlatform" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="validate">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="operationAmount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="operationOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element name="lastRecoveryIndicator" type="xs:string" maxOccurs="1" minOccurs="0"/>
        
        <!-- RESPONSE -->
        <xs:element name="operationDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="newStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="newAmount" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorisationId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="acquirerResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="captureLimitDate" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="schemeTransactionIdentifier" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentAccountReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="walletOrder">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="captureDay" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureMode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="customerEmail" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="fraudData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantTransactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderChannel" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentPattern" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="orderContext" maxOccurs="1" minOccurs="0" />
        <xs:element ref="travelContext" maxOccurs="1" minOccurs="0" />
        <xs:element name="deliveryContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryData" type="DeliveryData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="authenticationData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element name="initialSchemeTransactionIdentifier" type="xs:string" maxOccurs="1" minOccurs="0"/>

        <!-- RESPONSE -->
        <xs:element name="acquirerResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorisationId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="complementaryCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="complementaryInfo" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="guaranteeIndicator" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAuthentRelegation" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderAuthentStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="maskedPan" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="tokenPan" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="cardData" maxOccurs="1" minOccurs="0" />
        <xs:element name="cardCSCResultCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="avsPostcodeResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="avsAddressResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <!-- RMS fields -->
        <xs:element name="preAuthorisationProfile" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="preAuthorisationProfileValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element minOccurs="0" name="preAuthorisationRuleResultList">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" minOccurs="0" name="ruleResult" type="RuleResult"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="transactionPlatform" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorMessageReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorisationTypeLabel" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="schemeTransactionIdentifier" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentAccountReference" type="xs:string" maxOccurs="1" minOccurs="0"/>

      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

  <xs:element name="walletCredit">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="customerEmail" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerIpAddress" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderChannel" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="orderId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="returnContext" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" /> 
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0" /> 

        <!-- RESPONSE -->
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="acquirerResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorisationId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="maskedPan" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanBrand" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="newStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="operationDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="transactionPlatform" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

  <xs:element name="recycle">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="amount" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="captureDay" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureMode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="currencyCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="fromTransactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantTransactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="statementReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="s10FromTransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element name="lastRecoveryIndicator" type="xs:string" maxOccurs="1" minOccurs="0"/> 
        <xs:element ref="orderContext" maxOccurs="1" minOccurs="0" />
        <xs:element ref="travelContext" maxOccurs="1" minOccurs="0" />
        <xs:element name="deliveryContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryAddress" type="Address" maxOccurs="1" minOccurs="0"/>
        <xs:element name="deliveryData" type="DeliveryData" maxOccurs="1" minOccurs="0"/>
        <xs:element name="holderContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingContact" type="Contact" maxOccurs="1" minOccurs="0"/>
        <xs:element name="billingAddress" type="Address" maxOccurs="1" minOccurs="0"/>

        <!-- RESPONSE -->
        <xs:element name="acquirerResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorisationId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="complementaryCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="complementaryInfo" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="maskedPan" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="panExpiryDate" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanBrand" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="scoreColor" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="scoreInfo" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="scoreProfile" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="scoreThreshold" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="scoreValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="cardData" maxOccurs="1" minOccurs="0" />
        <xs:element name="schemeTransactionIdentifier" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentAccountReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <!-- RMS fields -->
        <xs:element name="preAuthorisationProfile" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="preAuthorisationProfileValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element minOccurs="0" name="preAuthorisationRuleResultList">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" minOccurs="0" name="ruleResult" type="RuleResult"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="preAuthenticationColor" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="preAuthenticationInfo" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="preAuthenticationProfile" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="preAuthenticationProfileValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="preAuthenticationThreshold" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="preAuthenticationValue" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element minOccurs="0" name="preAuthenticationRuleResultList">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" minOccurs="0" name="ruleResult" type="RuleResult"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="paymentMeanBrandSelectionStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionPlatform" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

  <xs:element name="acceptChallenge">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="comment" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="operationOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="validationIndicator" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        <xs:element ref="orderContext" maxOccurs="1" minOccurs="0" />
        <xs:element ref="travelContext" maxOccurs="1" minOccurs="0" />
        
        <!-- RESPONSE -->
        <xs:element name="acquirerResponseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="authorisationId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="captureLimitDate" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="newStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="operationDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="schemeTransactionIdentifier" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentAccountReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="refuseChallenge">
    <xs:complexType>
      <xs:all>
        <!-- REQUEST -->
        <xs:element name="comment" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="operationOrigin" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionReference" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="s10TransactionReference" maxOccurs="1" minOccurs="0" />
        
        <!-- RESPONSE -->
        <xs:element name="newStatus" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="operationDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>        
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

  <xs:element name="fraudData">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="bypass3DS" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="bypassCtrlList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="ctrl"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="bypassInfoList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="info"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:choice maxOccurs="1" minOccurs="0">
          <xs:element name="allowedCardCountryList"
            type="CountryList">
          </xs:element>
          <xs:element name="deniedCardCountryList"
            type="CountryList">
          </xs:element>
        </xs:choice>
        <xs:choice maxOccurs="1" minOccurs="0">
          <xs:element name="allowedCardArea"
            type="xs:string">
          </xs:element>
          <xs:element name="deniedCardArea"
            type="xs:string">
          </xs:element>
        </xs:choice>
        <xs:choice maxOccurs="1" minOccurs="0">
          <xs:element name="allowedIpCountryList"
            type="CountryList">
          </xs:element>
          <xs:element name="deniedIpCountryList"
            type="CountryList">
          </xs:element>
        </xs:choice>
        <xs:choice maxOccurs="1" minOccurs="0">
          <xs:element name="allowedIpArea" type="xs:string"></xs:element>
          <xs:element name="deniedIpArea" type="xs:string"></xs:element>
        </xs:choice>
        <xs:element minOccurs="0" name="riskManagementDynamicSettingList">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" minOccurs="0" name="riskManagementDynamicSetting" type="RiskManagementDynamicSetting"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  
  <xs:complexType name="CountryList">
    <xs:sequence>
      <xs:element name="country" type="xs:string" maxOccurs="unbounded" minOccurs="1"></xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RiskManagementDynamicSetting">
    <xs:sequence>
      <xs:element name="riskManagementDynamicParam" type="xs:string" maxOccurs="1" minOccurs="1"></xs:element>
      <xs:element name="riskManagementDynamicValue" type="xs:string" maxOccurs="1" minOccurs="1"></xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Contact">
    <xs:all>
      <xs:element name="email" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="firstName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="lastName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="gender" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="phone" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="mobile" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="Address">
    <xs:all>
      <xs:element name="additionalAddress1" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="additionalAddress2" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="additionalAddress3" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="city" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="country" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="streetName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="streetNumber" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="zipCode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="state" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="postbox" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="DeliveryData">
    <xs:all>
      <xs:element name="deliveryMethod" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>

  <xs:element name="instalmentData">
    <xs:complexType>
      <xs:all>
        <xs:element name="number" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="datesList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="date"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="transactionReferencesList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="transactionReference"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="amountsList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="amount"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="s10TransactionIdsList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="s10TransactionId"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>


  <xs:element name="paymentMeanData">
    <xs:complexType>
      <xs:all>
        <xs:element name="accord" type="accord" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="cofinoga" type="cofinoga" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="accord">
    <xs:all>
      <xs:element name="additionalAuthorisationNumber" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="settlementMode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="cofinoga">
    <xs:all>
      <xs:element name="settlementMode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>
  
  <xs:complexType name="holderData">
    <xs:all>
      <xs:element name="birthDate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>


  <xs:element name="s10TransactionReference">
    <xs:complexType>
      <xs:all>
        <xs:element name="s10TransactionId" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="s10TransactionIdDate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:element name="s10FromTransactionReference">
    <xs:complexType>
      <xs:all>
        <xs:element name="s10FromTransactionId" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="s10FromTransactionIdDate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>


  <xs:element name="riskManagementCustomDataList">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="riskManagementCustomData"
          type="xs:string" maxOccurs="unbounded" minOccurs="1">
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="riskManagementCustomData">
    <xs:complexType>
      <xs:all>
        <xs:element name="riskManagementCustomSequence" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="riskManagementCustomValue" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:element name="shoppingCartDetail">
    <xs:complexType>
      <xs:all>
        <xs:element name="shoppingCartTotalAmount" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="shoppingCartTotalQuantity" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="shoppingCartTotalTaxAmount" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="mainProduct" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="ShoppingCartItemList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="shoppingCartItem"
                type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:element name="shoppingCartItem">
    <xs:complexType>
      <xs:all>
        <xs:element name="productName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productDescription" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productCode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productSKU" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productUnitAmount" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productQuantity" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productTaxRate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productUnitTaxAmount" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="productCategory" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>  

  <xs:element name="cardData">
    <xs:complexType>
      <xs:all>
        <xs:element name="cardProductCode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="cardProductName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="cardProductProfile" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="cardScheme" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="issuerCode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="issuerCountryCode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
<xs:element name="cardProductUsageLabel" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="RuleResult">
    <xs:sequence>
      <xs:element name="ruleCode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="ruleType" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="ruleWeight" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="ruleSetting" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="ruleResultIndicator" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="ruleDetailedInfo" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="orderContext">
    <xs:complexType>
      <xs:all>
        <xs:element name="customerHostName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="customerBrowserType" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="customerANI" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="customerANIInformationIdentifier" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>  

  <xs:element name="travelContext">
    <xs:complexType>
      <xs:all>
        <xs:element name="departureDate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="passengerName" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="originAirport" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="numberOfRoutingCities" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="routingCityList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="routingCity" type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="numberOfAirlineCarriers" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="airlineCarrierList" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="airlineCarrier" type="xs:string" maxOccurs="unbounded" minOccurs="1">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="fareBasis" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="numberOfPassengers" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="destinationAirport" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
        <xs:element name="reservationCode" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>  

  <xs:element name="authenticationData">
    <xs:complexType>
      <xs:all>
        <xs:element name="cardAuthPolicy" maxOccurs="1" minOccurs="0">
          <xs:complexType>
            <xs:all>
              <xs:element name="checkAVS" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
              <xs:element name="ignoreCSCCheckResult" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
              <xs:element name="ignorePostcodeCheckResult" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
              <xs:element name="ignoreAddressCheckResult" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
              <xs:element name="automaticReverse" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
            </xs:all>
          </xs:complexType>
        </xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>

</xs:schema>
    

XSD du service fraud

Fichier requête

      <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

<xs:element name="file">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="header"/>
        <xs:element ref="body"/>
        <xs:element ref="end"/>
      </xs:sequence>
      <xs:attribute fixed="request" name="type" type="xs:string" use="required"/>
      <xs:attribute name="format" type="xs:string" use="required"/>
      <xs:attribute name="version" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

<xs:element name="header">
    <xs:complexType>
      <xs:all>
        <xs:element maxOccurs="1" minOccurs="1" name="remitterId" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="date" type="xs:date"/>
        <xs:element maxOccurs="1" minOccurs="1" name="time" type="xs:time"/>
        <xs:element maxOccurs="1" minOccurs="1" name="sequence" type="xs:string"/>
      </xs:all>
    </xs:complexType>
  </xs:element>

<xs:element name="body">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded" minOccurs="0">
        <xs:element ref="addToFraudList"/>
        <xs:element ref="removeFromFraudList"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>

<xs:element name="addToFraudList">
    <xs:complexType>
      <xs:all>
        <xs:element maxOccurs="1" minOccurs="1" name="merchantId" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="0" name="fraudListReasonCode" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListType" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListLevel" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListElementType" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListElementValue" type="xs:string"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

<xs:element name="removeFromFraudList">
    <xs:complexType>
      <xs:all>
        <xs:element maxOccurs="1" minOccurs="1" name="merchantId" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListType" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListLevel" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListElementType" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListElementValue" type="xs:string"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="end">
    <xs:complexType>
      <xs:attribute name="nbRecord" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
    

Fichier réponse

      <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

  <xs:element name="file">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="header"/>
        <xs:element minOccurs="0" ref="error-details"/>
        <xs:element minOccurs="0" ref="body"/>
        <xs:element ref="end"/>
      </xs:sequence>
      <xs:attribute fixed="response" name="type" type="xs:string" use="required"/>
      <xs:attribute name="format" type="xs:string" use="required"/>
      <xs:attribute name="version" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="header">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="1" minOccurs="1" name="remitterId" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="date" type="xs:date"/>
        <xs:element maxOccurs="1" minOccurs="1" name="time" type="xs:time"/>
        <xs:element maxOccurs="1" minOccurs="1" name="sequence" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="processingResponseCode" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="beginProcessTime" type="xs:dateTime"/>
        <xs:element maxOccurs="1" minOccurs="1" name="endProcessTime" type="xs:dateTime"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

<xs:element name="body">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded" minOccurs="0">
        <xs:element ref="addToFraudList"/>
        <xs:element ref="removeFromFraudList"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>

<!-- Error details for error response file -->
  <xs:element name="error-details" type="xs:string"/>

<xs:element name="end">
    <xs:complexType>
      <xs:attribute name="nbRecord" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>  

<xs:element name="addToFraudList">
    <xs:complexType>
      <xs:all>
        <xs:element maxOccurs="1" minOccurs="1" name="merchantId" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListType" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListLevel" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListElementType" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListElementValue" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="officeBatchResponseCode" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="0" name="responseCode" type="xs:string"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

  
  <xs:element name="removeFromFraudList">
    <xs:complexType>
      <xs:all>
        <xs:element maxOccurs="1" minOccurs="1" name="merchantId" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListType" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListLevel" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListElementType" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="fraudListElementValue" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="1" name="officeBatchResponseCode" type="xs:string"/>
        <xs:element maxOccurs="1" minOccurs="0" name="responseCode" type="xs:string"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

</xs:schema>
    

XSD du service wallet

Fichier requête

      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

<xs:element name="file">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="header" />
        <xs:element ref="body" />
        <xs:element ref="end" />
      </xs:sequence>
      <xs:attribute name="type" type="xs:string" use="required" fixed="request" />
      <xs:attribute name="format" type="xs:string" use="required"/>
      <xs:attribute name="version" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

<xs:element name="header">
    <xs:complexType>
      <xs:all>
        <xs:element name="remitterId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="date" type="xs:date" maxOccurs="1" minOccurs="1"/>
        <xs:element name="time" type="xs:time" maxOccurs="1" minOccurs="1"/>
        <xs:element name="sequence" type="xs:string" maxOccurs="1" minOccurs="1"/>
      </xs:all>
    </xs:complexType>
  </xs:element>

  <xs:element name="body">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="addCard" />
        <xs:element ref="addDirectDebit" />
        <xs:element ref="deletePaymentMean" />
        <xs:element ref="updatePaymentMean" />
        <xs:element ref="signOff" />
        <xs:element ref="addIssuerWallet" />
      </xs:choice>
    </xs:complexType>
  </xs:element>

<xs:element name="addCard">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="paymentMeanAlias" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="cardExpiryDate" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="cardNumber" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="paymentMeanBrand" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="addDirectDebit">
    <xs:complexType>
      <xs:all>
        <xs:element name="customerAccount" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="customerBankCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="mandateId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="paymentMeanAlias" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanBrand" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionActors" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="deletePaymentMean">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="1"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="updatePaymentMean">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="paymentMeanAlias" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="signOff">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="addIssuerWallet">
 <xs:complexType>
  <xs:all>
   <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
   <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
   <xs:element name="paymentMeanAlias" type="xs:string" maxOccurs="1" minOccurs="1"/>
   <xs:element name="issuerWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
   <xs:element name="issuerWalletType" type="xs:string" maxOccurs="1" minOccurs="1"/>
  </xs:all>
  <xs:attribute name="recordSequence" type="xs:string" use="required" />
 </xs:complexType>
</xs:element>

  <xs:element name="end">
    <xs:complexType>
      <xs:attribute name="nbRecord" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

</xs:schema>
    

Fichier réponse

      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

<xs:element name="file">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="header" />
        <xs:element ref="error-details" minOccurs="0" />
        <xs:element ref="body" minOccurs="0" />
        <xs:element ref="end" />
      </xs:sequence>
      <xs:attribute name="type" type="xs:string" use="required" fixed="response" />
      <xs:attribute name="format" type="xs:string" use="required"/>
      <xs:attribute name="version" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>

<xs:element name="header">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="remitterId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="date" type="xs:date" maxOccurs="1" minOccurs="1"/>
        <xs:element name="time" type="xs:time" maxOccurs="1" minOccurs="1"/>
        <xs:element name="sequence" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="processingResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="beginProcessTime" type="xs:dateTime" maxOccurs="1" minOccurs="1"/>
        <xs:element name="endProcessTime" type="xs:dateTime" maxOccurs="1" minOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="body">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="addCard" />
        <xs:element ref="addDirectDebit" />
        <xs:element ref="deletePaymentMean" />
        <xs:element ref="updatePaymentMean" />
        <xs:element ref="signOff" />
        <xs:element ref="addIssuerWallet" />
      </xs:choice>
    </xs:complexType>
  </xs:element>

  <!-- Error details for error response file -->
  <xs:element name="error-details" type="xs:string" />

<xs:element name="end">
    <xs:complexType>
      <xs:attribute name="nbRecord" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>  

<xs:element name="addCard">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="paymentMeanAlias" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="cardExpiryDate" type="xs:string" maxOccurs="1" minOccurs="1"/>

<xs:element name="maskedPan" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="walletCreationDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

  <xs:element name="addDirectDebit">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="paymentMeanAlias" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanBrand" type="xs:string" maxOccurs="1" minOccurs="0"/>

        <xs:element name="maskedPan" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="transactionActors" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="walletCreationDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="deletePaymentMean">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="1"/>

<xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="walletActionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>        
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="updatePaymentMean">
    <xs:complexType>
      <xs:all>
        <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="paymentMeanAlias" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="0"/>


        <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="walletActionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>  
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

<xs:element name="signOff">
      <xs:complexType>
        <xs:all>
         <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>

<xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
        <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="0"/>
        <xs:element name="walletActionDateTime" type="xs:string" maxOccurs="1" minOccurs="0"/>  
      </xs:all>
      <xs:attribute name="recordSequence" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>

  <xs:complexType name="walletPaymentMeanData">
    <xs:all>
      <xs:element name="maskedPan" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="panExpiryDate" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="paymentMeanAlias" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="paymentMeanBrand" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
      <xs:element name="transactionActors" type="xs:string" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:all>
  </xs:complexType>

<xs:element name="addIssuerWallet">
<xs:complexType>
  <xs:all>
   <!-- REQUEST -->
         <xs:element name="merchantId" type="xs:string" maxOccurs="1" minOccurs="1"/>
         <xs:element name="merchantWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
         <xs:element name="paymentMeanAlias" type="xs:string" maxOccurs="1" minOccurs="1"/>
         <xs:element name="issuerWalletId" type="xs:string" maxOccurs="1" minOccurs="1"/>
         <xs:element name="issuerWalletType" type="xs:string" maxOccurs="1" minOccurs="1"/>
   <!-- RESPONSE -->
         <xs:element name="paymentMeanId" type="xs:string" maxOccurs="1" minOccurs="0"/>
         <xs:element name="officeBatchResponseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
         <xs:element name="responseCode" type="xs:string" maxOccurs="1" minOccurs="1"/>
         <xs:element name="walletCreationDateTime" type="xs:string" maxOccurs="1" minOccurs="1"/>        
  </xs:all>
  <xs:attribute name="recordSequence" type="xs:string" use="required" />
</xs:complexType>
</xs:element>

</xs:schema>