Achat

Vue d'ensemble

La commande purchase (achat) vous permet d’initier une transaction pour un montant égal au champ totalAmount (montant total) spécifié dans le corps de la requête. Vous pouvez également diviser la transaction en plusieurs montants plus petits, ce qu’on appelle une transaction partielle.

Cela se produit lorsqu’un client utilise une carte-cadeau avec un solde inférieur au montant total de l’achat. Des transactions supplémentaires doivent alors être initiées jusqu’à ce que le champ remainingAmount (montant restant) de la réponse soit à zéro. La première transaction du flux partiel retournera un remainingAmount qui sera réutilisé dans les transactions suivantes pour sauter l’écran de sélection de pourboire. Cela évite que le client soit invité à laisser un pourboire à chaque transaction.

Liste des scénarios de codage qui utilisent cet endpoint (le point de terminaison) :

  1. Flux de transaction standard

  2. Flux de transaction avec approbation partielle

  3. Fonctionnalité fiscale

  4. Flux de terminal – Transaction annulée

  5. Requête idempotente

📘

REMARQUE

Chaque transaction dans un flux partiel est considérée comme une transaction distincte et produira son propre reçu.


Structure de la requête

ElementTypeDescriptionTailleObligatoire
apiVersion String (chaîne) Numéro de version de l’API. V20 Obligatoire
istConfigCode String (chaîne) Code de configuration d’intégration fourni par Moneris. V25 Obligatoire
dataId String (chaîne) Identifiant unique défini par le commerçant pour l’objet de données. V50 Obligatoire
dataTimestamp String (chaîne) Date et heure de la requête (AAAA-MM-JJ HH:MM:SS). F19 Obligatoire
data Object (objet) Objet contenant toutes les requêtes de transaction.
request Array (tableau) Contient les données applicables à la requête de transaction.
orderId String (chaîne) ID de commande provenant de l’achat. V50 Facultatif
idempotencyKey String (chaîne) Identifiant unique de transaction pour éviter une requête en double. V50 Obligatoire
linkId String (chaîne) Identifiant utilisé pour regrouper les transactions liées. V50 Facultatif
terminalId String (chaîne) ID du terminal de destination. F8 Facultatif
userName String (chaîne) Identifiant unique pour le caissier / l’utilisateur. V30 Facultatif
customIdData String (chaîne) Champ personnalisé. V50 Facultatif
action String (chaîne) purchase. V50 Obligatoire
totalAmount String (chaîne) Montant total de la transaction. V9 Obligatoire
remainingAmount String (chaîne) Montant pour les transactions à autorisation partielle. V9 Facultatif
safAllowed String (chaîne) Bascule pour SAF. V5 Facultatif
dynamicDescriptor String (chaîne) Description définie par le commerçant. V20 Facultatif
cashBack String (chaîne) Si la valeur est « true », le terminal invitera le titulaire de la carte à demander un retrait en argent. V5 Facultatif
progressStatus String (chaîne) Si la valeur est définie sur « True », le terminal retournera la progression à l’ECR.
Remarque : Cette fonctionnalité est uniquement disponible avec l’intégration directe.
V5 Facultatif
modifier String (chaîne) Énumération qui classe davantage la transaction. V24 Facultatif
tipAmount String (chaîne) Montant du pourboire provenant de l’ECR. V9 Facultatif
language String (chaîne) Valeurs valides « EN » et « FR ». Si aucune valeur n’est fournie, l’application de paiement utilisera la langue définie dans TMS. F2 Facultatif
subtotalAmount String (chaîne) Montant sans taxes ni frais. V9 Facultatif
taxes Array (tableau) Maximum de 5 objets de taxe.
taxName String (chaîne) Nom à afficher sur le reçu (hst, gst, etc.). V15 Facultatif
taxAmount String (chaîne) Montant correspondant. V9 Conditionnel

Exemple de requête

{
  "apiVersion": "3.0",
  "istConfigCode": "example_istConfigCode",
  "dataId": "example_dataId",
  "dataTimestamp": "1969-12-31 23:59:59",
  "data": {
    "request": [
      {
        "idempotencyKey": "example_idempotencyKey",
        "action": "purchase",
        "totalAmount": "example_totalAmount",
        "subtotalAmount": "10000",
        "taxes": [
          {
            "taxAmount": "1300",
            "taxName": "HST"
          },
          {
            "taxAmount": "200",
            "taxName": "Tourist Fee"
          },
          {
            "taxAmount": "100",
            "taxName": "Eco Fee"
          }
        ]
      }
    ]
  }
}

Structure de la réponse

ÉlémentTypeDescriptionTailleObligatoire
apiVersion String (chaîne) Numéro de version de l’API V20 Obligatoire
statusCode String (chaîne) Code d’état pour la demande de transaction globale V4 Obligatoire
status String (chaîne) Description du statusCode V4 Obligatoire
dataId String (chaîne) Identifiant unique défini par le commerçant pour l’objet de données V50 Obligatoire
dataTimestamp String (chaîne) Date et heure de la demande (AAAA-MM-JJ HH:MM:SS) F19 Obligatoire
data Object (objet) Objet qui contient toutes les demandes de transaction
response Array (tableau) Contient les données applicables à la demande de transaction
orderId String (chaîne) Le terminal renverra soit l’orderId de la demande, soit générera un nouvel orderId unique si aucun orderId n’était présent dans la demande V50 Obligatoire
transactionId String (chaîne) Identifiant unique pour cette demande V50 Obligatoire
idempotencyKey String (chaîne) Identifiant unique de transaction pour éviter une demande en double V50 Obligatoire
linkId String (chaîne) Identifiant utilisé pour regrouper les transactions liées V50 Facultatif
action String (chaîne) "purchase" V50 Obligatoire
statusCode String (chaîne) Code d’état pour la demande individuelle V4 Obligatoire
status String (chaîne) Description du statusCode individuel V50 Obligatoire
saf String (chaîne) Identifiant pour la transaction SAF V5 Obligatoire
safCounter String (chaîne) Nombre de transactions SAF non traitées V3 Conditionnel
approvedAmount String (chaîne) Montant du paiement reçu / approuvé V9 Conditionnel
totalAmount String (chaîne) Rappel du montant total de la transaction à partir de la demande V9 Obligatoire
remainingAmount String (chaîne) Montant restant dû V9 Obligatoire
tenderType String (chaîne) Type de paiement : Credit (crédit), Debit (débit), Gift (cadeau), etc. V50 Obligatoire
cardType String (chaîne) Type de carte : V, M, P, AX, etc. V2 Conditionnel
cardName String (chaîne) Nom de la carte : Visa, MasterCard, Interac, Amex, etc. V25 Conditionnel
sequenceNum String (chaîne) Numéro de séquence V18 Conditionnel
realTimeUniqueId String (chaîne) Identifiant unique de transaction Moneris en temps réel F15 Conditionnel
responseCode String (chaîne) Code de réponse de l’hôte Moneris V3 Conditionnel
iso String (chaîne) Code de réponse ISO V2 Conditionnel
authCode String (chaîne) Code d’autorisation renvoyé par l’institution émettrice V8 Conditionnel
formFactor String (chaîne) Données spécifiques EMV F2 Conditionnel
maskedPan String (chaîne) Numéro de compte principal (PAN) masqué V21 Conditionnel
tipAmount String (chaîne) Montant du pourboire saisi par l’utilisateur V9 Conditionnel
cashBack String (chaîne) Montant de remise en argent V9 Conditionnel
surcharge String (chaîne) Montant de la surtaxe sur la transaction V9 Conditionnel
receipt String (chaîne) Données du reçu financier envoyées en encodage ISO-8895-1 V4000 Conditionnel
receiptChoice String (chaîne) Les choix de retour du reçu au titulaire de carte au moment de la transaction. Les valeurs valides incluent : PRINT (option par défaut), EMAIL, SMS, NONE. V10 Conditionnel
completed String (chaîne) "true" ou "false" V5 Obligatoire
terminalId String (chaîne) ID du terminal de destination F8 Obligatoire
dccOptIn String (chaîne) Ce champ indique une transaction avec conversion dynamique de devise (DCC) V5 Facultatif
installmentOptIn String (chaîne) Ce champ indique une transaction à paiements échelonnés par Visa V5 Facultatif
receiptExtension String (chaîne) Données de transaction DCC pour les reçus au format compact V275 Conditionnel

Exemple de réponse

{
  "apiVersion": "3.0",
  "statusCode": "example_statusCode",
  "status": "example_status",
  "dataId": "example_dataId",
  "dataTimestamp": "1969-12-31 23:59:59",
  "data": {
    "response": [
      {
        "orderId": "example_orderId",
        "transactionId": "example_transactionId",
        "statusCode": "example_statusCode",
        "status": "example_status",
        "idempotencyKey": "example_idempotencyKey",
        "completed": "true",
        "saf": "false",
        "responseCode": "example_responseCode",
        "iso": "example_iso",
        "approvedAmount": "example_approvedAmount",
        "totalAmount": "example_totalAmount",
        "tenderType": "example_tenderType",
        "cardType": "example_cardType",
        "sequenceNum": "example_sequenceNum",
        "realTimeUniqueId": "example_realTimeUniqueId",
        "authCode": "example_authCode",
        "formFactor": "example_formFactor",
        "maskedPan": "example_maskedPan",
        "action": "purchase",
        "receipt": "example_receipt",
        "receiptChoice": "PRINT",
        "terminalId": "example_terminalId"
      }
    ]
  }
}

Erreurs

Si votre réponse contient des erreurs, consultez la page Erreurs pour une description détaillée de chacune.


Cette page vous a-t-elle aidé ?