Titulaire de la carte présent

Les paiements par titulaire de la carte présent (CHP) font référence à des transactions utilisant un terminal de point de vente (PDV). Le terminal peut lire les données de la carte par :

  • lecture d'une carte EMV
  • technologie NFC (Near Field Communication) à partir d'une carte sans contact
  • lecture d'une carte avec bande magnétique
  • saisie du numéro de carte

La prise en charge des méthodes ci-dessus n'est disponible que pour DirectAPI version 40 et ultérieure.

Un paiement CHP est initié par un terminal et envoyé à la passerelle en tant que transaction Verify (Vérifier), Authorize (Autoriser), Capture (Collecter), Pay (Payer) ou Refund (Rembourser). Par exemple, les transactions autorisées hors ligne par la puce figurant sur la carte sont envoyées en tant que transaction Capture (Collecter) uniquement et les transactions nécessitant une autorisation de la part de l'émetteur utilisent une transaction Authorize (Autoriser) en ligne, suivie d'une transaction Capture (Collecter).

Les transactions CHP interagissent avec de nombreuses autres fonctionnalités de la passerelle. Vous pouvez :

  • créer un jeton pour la carte,
  • rembourser à l'aide de la même intégration que vos transactions de commerce électronique ou via l'IU,
  • unifier les rapports de commerce électronique et CHP.

Conditions préalables Copied to Clipboard

Les transactions en présence de titulaire de carte doivent être activées par votre Your payment service provider et par votre acquéreur.

Champs communs utilisés pour les transactions CHP Copied to Clipboard

Les champs d'API suivants sont pertinents pour toutes les intégrations avec titulaire de la carte présent via la passerelle.

Champs obligatoires
  • transaction.source=CARD_PRESENT: si vous ne renseignez pas ce champ, la source de transaction par défaut configurée sur votre lien d'acquéreur par votre your payment service provider sera utilisée. [REST][NVP]


  • sourceOfFunds.type=CARD [REST][NVP]

  • order.amount [REST][NVP]

  • order.currency [REST][NVP]

  • numéro de carte : le numéro de carte est obligatoire, mais, suivant la manière dont la carte est lue, par saisie clavier, bande magnétique ou puce EMV, vous pouvez l'indiquer dans :

    • sourceOfFunds.provided.card.number pour les transactions saisies.
    • sourceOfFunds.provided.card.track1 et/ou sourceOfFunds.provided.card.track2 pour les transactions par bande magnétique ou

      les équivalents de la balise EMV, balise 56 et balise 57, respectivement, fournis dans sourceOfFunds.provided.card.emvRequest pour les transactions sans contact où les données de la carte sont dans le format de la bande magnétique.
    • La balise 5A dans sourceOfFunds.provided.card.emvRequest pour les transactions EMV (avec/sans contact) où les données de la carte sont dans le format EMV.
    • sourceOfFunds.provided.card.p2pe.payload pour les transactions P2PE (Point-to-Point Encryption) où les données de la carte sont au format crypté DUKPT.

  • identifiant du terminal : L'identifiant du terminal est obligatoire, mais, suivant la manière dont la carte est lue, par saisie clavier, bande magnétique ou puce EMV, vous pouvez l'indiquer dans :

Champs facultatifs

Assurez-vous que les champs de terminal PDV suivants sont correctement définis, en fonction de la manière dont le terminal génère les données de carte pour la transaction. Si les données pour ces champs sont disponibles, vous devez toujours les indiquer. La passerelle transmettra les données à l'acquéreur, comme requis. Si l'acquéreur demande un champ et si celui-ci n'est pas présent, la transaction échouera.

  • posTerminal.address
  • posTerminal.attended: Si vous ne renseignez pas ce champ, la passerelle utilise par défaut la valeur UNKNOWN_OR_UNSPECIFIED
  • posTerminal.authorizationMethod
  • posTerminal.cardHolderActivated: Si vous ne renseignez pas ce champ, la passerelle utilise par défaut la valeur NOT_CARDHOLDER_ACTIVATED
  • posTerminal.inputCapability: Ce champ est obligatoire pour les transactions EMV.
  • posTerminal.location: Ce champ est obligatoire pour les transactions EMV.
  • posTerminal.panEntryMode
  • posTerminal.pinEntryCapability
  • posTerminal.onlineReasonCode: Ce champ est obligatoire pour les transactions par puce et les transactions d'actions de secours par puce (notamment les annulations) pour toutes les transactions en ligne.
  • posTerminal.serialNumber
  • posTerminal.mobile.cardInputDevice: Ce champ s'applique aux appareils POS mobiles (mPOS), lorsque l'appareil accepte la saisie du code PIN par appuis ou à l'aide d'un clavier physique. Le logiciel du code PIN ne doit être utilisé que pour les appareils n'ayant pas de clavier permettant de prendre en charge le code PIN. Pour les exigences en matière d'intégration mPOS, voir Intégration en vue d'utiliser mPOS.
  • Référence de l'API POS Terminal (Terminal de point de vente) [REST][NVP]

  • order.gratuityAmount: Renseignez ce champ si le paiement inclut un montant de pourboire.
    [REST][NVP]

  • order.cashbackAmount: Renseignez ce champ si le paiement inclut un montant de remise.
    [REST][NVP]

  • order.cashAdvance: Renseignez ce champ si le paiement inclut un montant d'avance en espèces.
    [REST][NVP]

Traiter une transaction EMV Copied to Clipboard

Si les données de la carte ont été lues à partir de la puce de la carte (carte EMV uniquement),

  • Demandez ces balises EMV au terminal (balises prises en charge par la passerelle).
  • Indiquez les balises retournées dans le champ sourceOfFunds.provided.card.emvRequest en tant qu'objet JSON dans un protocole REST ou en tant qu'ensemble de champs dans un protocole NVP (accepté si le terminal ne fournit pas toutes les balises EMV prises en charge).
    Les valeurs de balise EMV doivent être formatées exactement comme retournées par le terminal — les valeurs binaires doivent être représentées en format hexadécimal.
  • Renseignez les champs obligatoires.
  • Si requis, renseignez les champs facultatifs.

sourceOfFunds.provided.card.emvRequest [REST][NVP]

Certaines des balises EMV prises en charge correspondent aux concepts de paiement de base, comme le numéro de compte principal. Ces concepts apparaissent également en tant que champ de demande d'API, comme sourceOfFunds.provided.card.number. Dans la documentation de référence d'API, la description de ces champs de demande d'API correspondants indique leurs liens. Par exemple, la description du champ sourceOfFunds.provided.card.number comporte le texte « Ce champ correspond à la balise EMV 5A ».

Si vous indiquez des données en tant que balise EMV, vous n'avez pas besoin d'indiquer ces mêmes données en tant que champ de demande d'API. La passerelle renseigne les champs de demande d'API correspondants avec les valeurs fournies dans les balises EMV, lorsqu'elles existent, et utilise ces valeurs pour tous les traitements internes, les messages de l'acquéreur et les réponses des transactions. Par exemple, si vous envoyez sourceOfFunds.provided.card.emvRequest.9F1C avec la valeur « Lane_03 », posTerminal.lane avec la valeur « Lane_03 » est envoyé à l'acquéreur et retourné dans la réponse de la transaction.

Vous pouvez indiquer les balises EMV à la place des champs de demande d'API.

Si requis, vous pouvez choisir d'indiquer les balises EMV et les champs de demande d'API correspondants dans la demande de transaction. Voir Utilisation avancée : Données de transaction dans les balises EMV et les champs de la demande de l'API.

Exemple de demande

Vous trouverez ci-dessous un exemple de demande EMV dans REST pour une collecte autonome, où l'autorisation a été effectuée hors ligne sur le terminal.

URL https://paymentgateway.commbank.com.au/api/rest/version/72/merchant/{merchantId}/order/{orderid}/transaction/{transactionid}
Méthode HTTP PUT

{
    "apiOperation": "CAPTURE",
    "transaction": {
        "currency": "EUR",
        "amount": "10.99",
        "source": "CARD_PRESENT"
    },
    "sourceOfFunds": {
        "type": "CARD",
        "provided": {
            "card": {
                "number": "5457210089020012",
                "expiry": {
                    "month": "1",
                    "year": "39"
                },
                "emvRequest": {
                    "82": "0000",
                    "95": "0000000000",
                    "9F02": "000000001099",
                    "9A": "161021",
                    "5F2A": "840",
                    "9F1A": "840",
                    "9F10": "06011103A000000A0100000000000BB0ABAD",
                    "9F34": "1E0300",
                    "9F36": "0002",
                    "9C": "00",
                    "9F26": "D1F722D47FCA8273",
                    "9F27": "40",
                    "9F37": "2A4E1690",
                    "9F33": "E0B8C8"
                }
            }
        }
    },
    "posTerminal": {
        "inputCapability": "CONTACTLESS_CHIP",
        "panEntryMode": "CHIP",
        "pinEntryCapability": "PIN_SUPPORTED",
        "location": "MERCHANT_TERMINAL_ON_PREMISES",
        "lane": "Lane_03",
        "attended": "ATTENDED",
		"serialNumber":"123456789",
		"onlineReasonCode":"FORCED_BY_MERCHANT",
		"cardPresenceCapability":"CARD_PRESENT",
		"authorizationMethod":"OFFLINE",
		"address":
		{
			"country":"IRL",
			"city":"Dublin"
		}
    }
}
Exemple de réponse

{
  "gatewayEntryPoint": "WEB_SERVICES_API",
  "merchant": "TESTSMOKE-RETAIL",
  "order": {
    "amount": 10.99,
    "creationTime": "2017-06-06T09:42:54.280Z",
    "currency": "EUR",
    "id": "sa-dfc1b030-4520-48ec-a7e0-889999d7e4ab",
    "status": "CAPTURED",
    "totalAuthorizedAmount": 10.99,
    "totalCapturedAmount": 10.99,
    "totalRefundedAmount": 0
  },
  "posTerminal": {
    "address": {
      "city": "Dublin",
      "country": "IRL"
    },
    "attended": "ATTENDED",
    "authorizationMethod": "OFFLINE",
    "cardPresenceCapability": "CARD_PRESENT",
    "cardholderActivated": "NOT_CARDHOLDER_ACTIVATED",
    "inputCapability": "CONTACTLESS_CHIP",
    "lane": "Lane_03",
    "location": "MERCHANT_TERMINAL_ON_PREMISES",
    "onlineReasonCode": "FORCED_BY_MERCHANT",
    "panEntryMode": "CHIP",
    "pinEntryCapability": "PIN_SUPPORTED",
    "serialNumber": "123456789"
  },
  "response": {
    "gatewayCode": "APPROVED"
  },
  "result": "SUCCESS",
  "sourceOfFunds": {
    "provided": {
      "card": {
        "brand": "MASTERCARD",
        "emvRequest": {
          "82": "0000",
          "95": "0000000000",
          "5F2A": "840",
          "9A": "161021",
          "9C": "00",
          "9F02": "000000001099",
          "9F10": "06011103A000000A0100000000000BB0ABAD",
          "9F1A": "840",
          "9F26": "D1F722D47FCA8273",
          "9F27": "40",
          "9F33": "E0B8C8",
          "9F34": "1E0300",
          "9F36": "0002",
          "9F37": "2A4E1690"
        },
        "emvResponse": {
          "4D3E": "456",
          "5A2F": "123"
        },
        "expiry": {
          "month": "1",
          "year": "39"
        },
        "fundingMethod": "DEBIT",
        "issuer": "CAPITAL ONE BANK (CANADA BRANCH)",
        "number": "545721xxxxxx0012",
        "scheme": "MASTERCARD"
      }
    },
    "type": "CARD"
  },
  "timeOfRecord": "2017-06-06T09:42:54.280Z",
  "transaction": {
    "acquirer": {
      "batch": 1,
      "id": "FOOBANK",
      "merchantId": "11223344"
    },
    "amount": 10.99,
    "currency": "EUR",
    "frequency": "SINGLE",
    "id": "1",
    "receipt": "1706063974",
    "source": "CARD_PRESENT",
    "terminal": "0001",
    "type": "CAPTURE"
  },
  "version": "43"
}
Balises EMV prises en charge

Vous trouverez ci-dessous une liste des balises EMV prises en charge par la passerelle. Si l'une de ces balises est retournée par le terminal, incluez-la dans le champ sourceOfFunds.provided.card.emvRequest.

La passerelle n'accepte que les balises EMV répertoriées dans la liste des balises EMV prises en charge— les demandes incluant d'autres balises sont rejetées.
Balise EMV
Nom
Obligatoire
4F Nom de l'identifiant de l'application (AID) -
56 Piste 1 -
57 Données équivalentes de la piste 2 -
5A Numéro de séquence PAN
(Application Primary Account)
-
5F24 Date d'expiration de l'application -
5F25 Date d'entrée en vigueur de l'application -
5F28 Code de pays de l'émetteur -
5F2A Code devise de la transaction -
5F34 Numéro de séquence PAN
(Application Primary Account)
-
82 Profil d'échange entre applications (AIP) Oui
84 Nom du fichier dédié -
87 Indicateur de priorité de l'application -
95 Résultat de la vérification du terminal (TVR) Oui
9A Date de la transaction Oui
9B Informations sur le statut de la transaction -
9C Type de transaction Oui
9F02 Montant autorisé Oui
9F03 Montant de remise -
9F06 Identifiant de l'application (AID) - Terminal -
9F07 Contrôle de l'utilisation de l'application -
9F08 Numéro de version de l'application - ICC -
9F09 Numéro de version de l'application - Terminal -
9F0D Code d'action de l'émetteur - Valeur par défaut -
9F0E Code d'action de l'émetteur - Refus -
9F0F Code d'action de l'émetteur - En ligne -
9F10 Données d'application de l'émetteur (IAD) Oui
9F1A Code pays du terminal Oui
9F1C Identification du terminal -
9F1E Numéro de série du périphérique d'interface (IFD) -
9F21 Heure de la transaction -
9F26 Cryptogramme de l'application (AC) Oui
9F27 Données d'informations du cryptogramme (CID) Oui
9F33 Capacités du terminal -
9F34 Résultats de la méthode de vérification du titulaire de la carte (CVM) Oui
9F35 Type de terminal -
9F36 Compteur de transactions de l'application Oui
9F37 Numéro imprévisible Oui
9F39 Mode de saisie du point de service (POS) -
9F40 Fonctionnalités supplémentaires du terminal -
9F41 Compteur de séquence de transaction -
9F49 Liste d'objets de données d'authentification de données dynamique (DDOL) -
9F53 Code de catégorie de transaction -
9F5A EMV (noyau 3) : identifiant du programme de l'application (ID du programme)
EMV (noyau 4) : identifiant du produit de l'adhésion
-
9F5B EMV (noyau 3) : résultats du script de l'émetteur
EMV (noyau 2) : DSDOL
EMV (noyau 4) : numéro d'adhésion du produit
-
9F66 EMV (noyau 2) : PUNATC (piste 2)
EMV
(noyau 3) : qualificateurs de transaction du terminal (TTQ)
-
9F6E Indicateur de facteur de formulaire -
9F7C Données exclusives du client (CED) -
Utilisation avancée : Données de transaction dans les balises EMV et les champs de la demande de l'API

Si vous indiquez les balises EMV et les champs de demande d'API correspondants dans la demande de transaction, la passerelle utilise la valeur fournie dans le champ de demande d'API correspondant. Par exemple, si vous envoyez sourceOfFunds.provided.card.emvRequest.9F1C avec la valeur « Lane_03 » et posTerminal.lane avec la valeur « Lane_04 », posTerminal.lane avec la valeur « Lane_04 » est envoyé à l'acquéreur et retourné avec la réponse de la transaction. Cela peut être très utile si vous voulez remplacer les balises EMV et contrôler les valeurs suivant les champs. Veuillez noter qu'une utilisation de ce type est plutôt rare et ne doit donc être prise en compte que si votre intégration la requiert.

Balises EMV prises en charge et champs de demande d'API correspondants

Le tableau ci-dessous répertorie les balises EMV lorsque la passerelle renseigne les champs de demande d'API correspondants avec les valeurs fournies dans les balises EMV.

Balise EMV
Nom de la balise EMV
Champ de demande d'API correspondant
56 Piste 1 sourceOfFunds.provided.card.track1
57 Données équivalentes de la piste 2 sourceOfFunds.provided.card.track2
5A Numéro de séquence PAN (Application Primary Account) sourceOfFunds.provided.card.number
5F24 Date d'expiration de l'application sourceOfFunds.provided.card.expiry.year
sourceOfFunds.provided.card.expiry.month
5F34 Numéro de séquence PAN sourceOfFunds.provided.card.sequenceNumber
9C Avance de trésorerie order.cashAdvance
9F03 Montant de remise order.cashbackAmount
9F1A Code pays du terminal posTerminal.address.country
9F1C Identification du terminal posTerminal.lane
9F1E Numéro de série du périphérique d'interface posTerminal.serialNumber
9F33 Capacités du terminal posTerminal.inputCapability
posTerminal.pinEntryCapability
9F35 Type de terminal posTerminal.attended
posTerminal.cardholderActivated
Réponse de la transaction EMV

La passerelle retourne le champ sourceOfFunds.provided.card.emvResponse dans la réponse Retrieve Order (Extraire la commande) et Retrieve Transaction (Extraire la transaction). Ce champ contient les données générées par l'émetteur, que la carte/l'appareil peut utiliser à des fins de vérification pour terminer ou refuser la transaction. Il peut également comporter des balises EMV supplémentaires de l'émetteur, notamment des balises répercutées par la demande.

Le tableau ci-dessous répertorie certaines des balises EMV pouvant être retournées par une réponse Authorization (Autorisation) en ligne.

Balise EMV Nom
8A Code de réponse de l'autorisation
89 Code d'autorisation
91 Données d'authentification de l'émetteur
71 Modèle de script de l'émetteur 1
72 Modèle de script de l'émetteur 2

Le champ sourceOfFunds.provided.card.emvRequest fourni dans la demande est répercuté dans la réponse de laquelle les balises EMV identifiées comme étant sensibles PCI sont exclues.

Annuler une transaction EMV

Votre acquéreur peut demander à ce que des éléments de données EMV supplémentaires soient inclus lors de l'annulation d'une transaction EMV. Par exemple, la balise EMV DF01 (Résultats du script de l'émetteur) peut être requise. Veuillez contacter votre acquéreur pour connaître ses besoins spécifiques.

Traiter une transaction par bande magnétique Copied to Clipboard

Si les données de piste de la carte sont lues à partir de la piste magnétique de la carte,

  • Indiquez les données de la piste 1 dans le champ sourceOfFunds.provided.card.track1 ou les données de la piste 2 dans le champ sourceOfFunds.provided.card.track2. Si les pistes 1 et 2 sont toutes deux disponibles sur le terminal, indiquez les deux balises dans la demande de transaction.
  • Renseignez les champs obligatoires.
  • Si requis, renseignez les champs facultatifs.

sourceOfFunds.provided.card.track1 [REST][NVP]

sourceOfFunds.provided.card.track2 [REST][NVP]

Les données de piste de carte doivent contenir les caractères sentinelles de début et de fin corrects, ainsi que le caractère LRC (Longitudinal Redundancy Check) de fin. Les données de la piste 3 ne sont pas prises en charge.
Exemple de demande

Vous trouverez ci-dessous un exemple de transaction Authorization (Autorisation) en ligne à l'aide des données de bande magnétique.

URL https://paymentgateway.commbank.com.au/api/rest/version/72/merchant/{merchantId}/order/{orderid}/transaction/{transactionid}
Méthode HTTP PUT

{
  "apiOperation": "AUTHORIZE",
  "order": {
    "amount": 80,
    "currency": "AUD"
  },
  "transaction": {
    "source": "CARD_PRESENT",
    "frequency": "SINGLE"
  },
  "sourceOfFunds": {
    "type": "CARD",
    "provided": {
      "card": {
        "number": "5457210089020012",
        "sequenceNumber": "015",
        "expiry": {
          "year": "39",
          "month": "01"
        },
        "track2": ";5123456789012346=17051019681143384001?",
        "track1": "%B5123456789012346^MR JOHN R SMITH           ^17051019681143300001  840      ?;"
      }
    }
  },
  "posTerminal": {
    "lane": "AdamLane",
    "panEntryMode": "SWIPE",
    "pinEntryCapability": "PIN_NOT_SUPPORTED",
    "attended": "UNATTENDED",
    "cardholderActivated": "SELF_SERVICE_TERMINAL",
    "inputCapability": "MAGNETIC_STRIPE",
    "location": "MERCHANT_TERMINAL_OFF_PREMISES"
   }
}
Exemple de réponse

{
    "authorizationResponse": {
        "posData": "1605S0100130",
        "transactionIdentifier": "AmexTidTest"
    },
    "gatewayEntryPoint": "WEB_SERVICES_API",
    "merchant": "TESTSMOKE-RETAIL",
    "order": {
        "amount": 80,
        "creationTime": "2017-05-31T07:49:46.351Z",
        "currency": "AUD",
        "id": "sa-e229682a-2163-47cf-b080-fb60dd148192",
        "status": "AUTHORIZED",
        "totalAuthorizedAmount": 80,
        "totalCapturedAmount": 0,
        "totalRefundedAmount": 0
    },
    "posTerminal": {
        "attended": "UNATTENDED",
        "cardholderActivated": "SELF_SERVICE_TERMINAL",
        "inputCapability": "MAGNETIC_STRIPE",
        "lane": "AdamLane",
        "location": "MERCHANT_TERMINAL_OFF_PREMISES",
        "panEntryMode": "SWIPE",
        "pinEntryCapability": "PIN_NOT_SUPPORTED"
    },
    "response": {
        "acquirerCode": "00",
        "gatewayCode": "APPROVED"
    },
    "result": "SUCCESS",
    "sourceOfFunds": {
        "provided": {
            "card": {
                "brand": "MASTERCARD",
                "expiry": {
                    "month": "1",
                    "year": "39"
                },
                "fundingMethod": "DEBIT",
                "issuer": "CAPITAL ONE BANK (CANADA BRANCH)",
                "number": "545721xxxxxx0012",
                "scheme": "MASTERCARD",
                "sequenceNumber": "015",
                "trackDataProvided": true
            }
        },
        "type": "CARD"
    },
    "timeOfRecord": "2017-05-31T07:49:46.351Z",
    "transaction": {
        "acquirer": {
            "batch": 1,
            "id": "SYSTEST_ACQ1",
            "merchantId": "12345678"
        },
        "amount": 80,
        "authorizationCode": "000001",
        "currency": "AUD",
        "frequency": "SINGLE",
        "id": "1",
        "receipt": "1705313",
        "source": "CARD_PRESENT",
        "terminal": "0006",
        "type": "AUTHORIZATION"
    },
    "version": "43"
}

Traiter une transaction saisie Copied to Clipboard

Si le numéro de carte a été saisi manuellement sur le clavier du terminal,

sourceOfFunds.provided.card.number[REST][NVP]

Exemple de demande

Vous trouverez ci-dessous un exemple de transaction Authorization (Autorisation) en ligne en utilisant un numéro de carte saisi manuellement.

URL https://paymentgateway.commbank.com.au/api/rest/version/72/merchant/{merchantId}/order/{orderid}/transaction/{transactionid}
Méthode HTTP PUT

{
  "posTerminal": {
    "serialNumber": "13130PP800781435",
    "cardholderActivated": "NOT_CARDHOLDER_ACTIVATED",
    "lane": "S2_Lane",
    "panEntryMode": "KEYED",
    "pinEntryCapability": "UNKNOWN",
    "attended": "ATTENDED",
    "inputCapability": "KEY_ENTRY",
    "location": "MERCHANT_TERMINAL_ON_PREMISES"
  },
  "apiOperation": "AUTHORIZE",
  "sourceOfFunds": {
    "type": "CARD",
    "provided": {
      "card": {
        "number": "5457210089020012",
        "sequenceNumber": "000",
        "expiry": {
          "year": "39",
          "month": "01"
        }
      }
    }
  },
  "order": {
    "amount": "100.00",
    "currency": "EUR"
  }, 
    "transaction": {
    "source": "CARD_PRESENT",
    "frequency": "SINGLE"
  }
}
Exemple de réponse

{
  "gatewayEntryPoint": "WEB_SERVICES_API",
  "merchant": "TESTSMOKE-RETAIL",
  "order": {
    "amount": 100,
    "creationTime": "2017-05-31T08:59:47.194Z",
    "currency": "EUR",
    "id": "sa-529e784a-e11d-474d-8012-c0790531bb0f",
    "status": "AUTHORIZED",
    "totalAuthorizedAmount": 100,
    "totalCapturedAmount": 0,
    "totalRefundedAmount": 0
  },
  "posTerminal": {
    "attended": "ATTENDED",
    "cardholderActivated": "NOT_CARDHOLDER_ACTIVATED",
    "inputCapability": "KEY_ENTRY",
    "lane": "S2_Lane",
    "location": "MERCHANT_TERMINAL_ON_PREMISES",
    "panEntryMode": "KEYED",
    "pinEntryCapability": "UNKNOWN",
    "serialNumber": "13130PP800781435"
  },
  "response": {
    "gatewayCode": "APPROVED"
  },
  "result": "SUCCESS",
  "sourceOfFunds": {
    "provided": {
      "card": {
        "brand": "MASTERCARD",
        "expiry": {
          "month": "1",
          "year": "39"
        },
        "fundingMethod": "DEBIT",
        "issuer": "CAPITAL ONE BANK (CANADA BRANCH)",
        "number": "545721xxxxxx0012",
        "scheme": "MASTERCARD",
        "sequenceNumber": "000"
      }
    },
    "type": "CARD"
  },
  "timeOfRecord": "2017-05-31T08:59:47.194Z",
  "transaction": {
    "acquirer": {
      "batch": 1,
      "id": "FOOBANK",
      "merchantId": "11223344"
    },
    "amount": 100,
    "authorizationCode": "471223",
    "currency": "EUR",
    "frequency": "SINGLE",
    "id": "1",
    "receipt": "170531475",
    "source": "CARD_PRESENT",
    "terminal": "0001",
    "type": "AUTHORIZATION"
  },
  "version": "43"
}

Traiter une transaction avec cryptage P2PE (Point-to-Point Encryption) Copied to Clipboard

P2PE est une norme mise en place par le conseil de normalisation pour la sécurité des données de l'ICP (PCI Security Standards Council). Avec la norme P2PE, les données de carte sensibles sont cryptées sur le terminal immédiatement après leur lecture. Cela renforce la sécurité des transactions avec titulaire de la carte présent et réduit vos obligations en matière de conformité ICP, car vous n'avez pas à manipuler des données sensibles.

CommWeb payment gateway prend en charge la norme P2PE à l'aide de DUKPT (Derived Unique Key Per Transaction) à compter de la version 40 de DirectAPI et versions ultérieures, uniquement pour Verifone dans l'UE.

Pour traiter une transaction P2PE :

  • Indiquez les données P2PE DUKPT du terminal dans les champs suivants :
    • sourceOfFunds.provided.card.p2pe.keySerialNumber: Vous devez fournir le numéro de série de la clé DUKPT fourni par le terminal.
    • sourceOfFunds.provided.card.p2pe.payload: Si ce champ est renseigné, sourceOfFunds.provided.card.number n'est pas obligatoire. La passerelle extrait toutes les informations appropriées de la carte à partir des données de paiement fournies.
    • posTerminal.serialNumber:
    • sourceOfFunds.provided.card.p2pe.cardBin
    • sourceOfFunds.provided.card.p2pe.encryptionState: Si vous ne renseignez pas ce champ, la passerelle prend par défaut la valeur de VALID
    • sourceOfFunds.provided.card.p2pe.initializationVector: Ce champ peut être ignoré si le terminal n'utilise pas de vecteur d'initialisation pour définir le cryptage.
  • Renseignez les champs obligatoires.
  • Si requis, renseignez les champs facultatifs.

Référence de l'API P2PE [REST][NVP]

Le tableau ci-dessous résume les contraintes de champ pour le groupe de paramètres sourceOfFunds.provided.card.p2pe.

Si le champ alors la passerelle...
sourceOfFunds.provided.card.p2pe. initializationVector
sourceOfFunds.provided.card.p2pe. keySerialNumber
sourceOfFunds.provided.card.p2pe. payload
est renseigné est renseigné n'est pas renseigné rejette la demande de transaction.
est renseigné est renseigné mais en texte clair avant ou après le décryptage est renseigné retourne une erreur et une entrée est générée dans le journal de sécurité.

Réponse de transaction

Le champ sourceOfFunds.provided.card.encryption retourne DUKPT (de la version 43 de DirectAPI et versions ultérieures) dans la réponse de la transaction afin d'indiquer que les données de carte ont été cryptées. Les champs du groupe de paramètres sourceOfFunds.provided.card.p2pe ne sont pas retournés dans la réponse.

Intégration en vue d'utiliser le PIN en ligne Copied to Clipboard

Le code PIN entré par le titulaire de la carte est crypté à la source, sur l'appareil utilisé pour la saisie du code PIN. CommWeb payment gateway prend en charge les données de code PIN en ligne cryptées par DUKPT (Derived Unique Key Per Transaction) dans la version 45 de DirectAPI et versions ultérieures.

  • Indiquez les données PIN cryptées par DUKPT du terminal dans les champs suivants :
    • sourceOfFunds.provided.card.pin.payload
    • sourceOfFunds.provided.card.pin.keySerialNumber
    • posTerminal.pinLengthCapability
    • sourceOfFunds.provided.card.pin.encryptionState

    Référence de l'API Online PIN (PIN en ligne) [REST][NVP]

  • Renseignez les champs obligatoires.
  • Si requis, renseignez les champs facultatifs.

Intégration en vue d'utiliser mPOS Copied to Clipboard

La passerelle prend en charge l'acceptation des paiements sur les appareils POS mobiles (mPOS) à partir de l'API version 56 et versions ultérieures. Pour activer cette fonctionnalité, indiquez les éléments suivants dans la transaction Verify (Vérifier), Authorize (Autoriser), Capture (Collecter), Pay (Payer) ou Refund (Rembourser) :

  • posTerminal.cardholderActivated=MPOS_ACCEPTANCE_DEVICE
  • Indiquez la valeur du lecteur de carte dans le champ posTerminal.mobile.cardInputDevice

    .
    • BUILT_IN: téléphone mobile ou tablette standard avec uniquement un lecteur sans contact intégré. Dans ce cas, le champ posTerminal.pinEntryCapability doit être défini sur SOFTWARE_ONLINE_PIN_ONLY, sinon la passerelle rejette la transaction.
    • INTEGRATED_DONGLE: terminal mobile dédié avec lecteur de carte intégré. Dans ce cas, le champ posTerminal.pinEntryCapability doit être défini sur PIN_SUPPORTED or OFFLINE_PIN_ONLY, sinon la passerelle rejette la transaction.
    • SEPARATE_DONGLE: appareil standard ou terminal mobile dédié, avec lecteur de carte séparé. Dans ce cas, le champ posTerminal.pinEntryCapability doit être défini sur PIN_SUPPORTED or OFFLINE_PIN_ONLY, sinon la passerelle rejette la transaction.

    Référence de l'API mPOS [REST][NVP]

  • Renseignez les champs obligatoires.
  • Si requis, renseignez les champs facultatifs.

Réponse de transaction

L'authentification par code PIN peut échouer si le payeur entre un code PIN non valide, dépasse le nombre autorisé de tentatives de saisie du code PIN ou ignore la saisie du code PIN lorsque celui-ci est requis pour terminer la transaction.

Dans ces cas où l'autorisation échoue en raison d'une erreur d'authentification par code PIN, la passerelle retourne des codes de réponse d'autorisation spécifiques. Vous pouvez réutiliser le même ID de commande sur la transaction suivante.

Test de l'intégration du titulaire de la carte présent Copied to Clipboard

Vous pouvez tester votre intégration en utilisant des cartes de test spécifiques à votre acquéreur.