Guides
Log In
Guides

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
apiVersionString (chaîne)Numéro de version de l’API.V20Obligatoire
istConfigCodeString (chaîne)Code de configuration d’intégration fourni par Moneris.V25Obligatoire
dataIdString (chaîne)Identifiant unique défini par le commerçant pour l’objet de données.V50Obligatoire
dataTimestampString (chaîne)Date et heure de la requête (AAAA-MM-JJ HH:MM:SS).F19Obligatoire
dataObject (objet)Objet contenant toutes les requêtes de transaction.
requestArray (tableau)Contient les données applicables à la requête de transaction.
orderIdString (chaîne)ID de commande provenant de l’achat.V50Facultatif
idempotencyKeyString (chaîne)Identifiant unique de transaction pour éviter une requête en double.V50Obligatoire
linkIdString (chaîne)Identifiant utilisé pour regrouper les transactions liées.V50Facultatif
terminalIdString (chaîne)ID du terminal de destination.F8Facultatif
userNameString (chaîne)Identifiant unique pour le caissier / l’utilisateur.V30Facultatif
customIdDataString (chaîne)Champ personnalisé.V50Facultatif
actionString (chaîne)« purchase ».V50Obligatoire
totalAmountString (chaîne)Montant total de la transaction.V9Obligatoire
remainingAmountString (chaîne)Montant pour les transactions à autorisation partielle.V9Facultatif
safAllowedString (chaîne)Bascule pour SAF.V5Facultatif
dynamicDescriptorString (chaîne)Description définie par le commerçant.V20Facultatif
cashBackString (chaîne)Si la valeur est « true », le terminal invitera le titulaire de la carte à demander un retrait en argent.V5Facultatif
progressStatusString (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.
V5Facultatif
modifierString (chaîne)Énumération qui classe davantage la transaction.V24Facultatif
tipAmountString (chaîne)Montant du pourboire provenant de l’ECR.V9Facultatif
languageString (chaîne)Valeurs valides « EN » et « FR ». Si aucune valeur n’est fournie, l’application de paiement utilisera la langue définie dans TMS.F2Facultatif
subtotalAmountString (chaîne)Montant sans taxes ni frais.V9Facultatif
taxesArray (tableau)Maximum de 5 objets de taxe.
taxNameString (chaîne)Nom à afficher sur le reçu (hst, gst, etc.).V15Facultatif
taxAmountString (chaîne)Montant correspondant.V9Conditionnel
{
  "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
apiVersionString (chaîne)Numéro de version de l’APIV20Obligatoire
statusCodeString (chaîne)Code d’état pour la demande de transaction globaleV4Obligatoire
statusString (chaîne)Description du statusCodeV4Obligatoire
dataIdString (chaîne)Identifiant unique défini par le commerçant pour l’objet de donnéesV50Obligatoire
dataTimestampString (chaîne)Date et heure de la demande (AAAA-MM-JJ HH:MM:SS)F19Obligatoire
dataObject (objet)Objet qui contient toutes les demandes de transaction
responseArray (tableau)Contient les données applicables à la demande de transaction
orderIdString (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 demandeV50Obligatoire
transactionIdString (chaîne)Identifiant unique pour cette demandeV50Obligatoire
idempotencyKeyString (chaîne)Identifiant unique de transaction pour éviter une demande en doubleV50Obligatoire
linkIdString (chaîne)Identifiant utilisé pour regrouper les transactions liéesV50Facultatif
actionString (chaîne)"purchase"V50Obligatoire
statusCodeString (chaîne)Code d’état pour la demande individuelleV4Obligatoire
statusString (chaîne)Description du statusCode individuelV50Obligatoire
safString (chaîne)Identifiant pour la transaction SAFV5Obligatoire
safCounterString (chaîne)Nombre de transactions SAF non traitéesV3Conditionnel
approvedAmountString (chaîne)Montant du paiement reçu / approuvéV9Conditionnel
totalAmountString (chaîne)Rappel du montant total de la transaction à partir de la demandeV9Obligatoire
remainingAmountString (chaîne)Montant restant dûV9Obligatoire
tenderTypeString (chaîne)Type de paiement : Credit (crédit), Debit (débit), Gift (cadeau), etc.V50Obligatoire
cardTypeString (chaîne)Type de carte : V, M, P, AX, etc.V2Conditionnel
cardNameString (chaîne)Nom de la carte : Visa, MasterCard, Interac, Amex, etc.V25Conditionnel
sequenceNumString (chaîne)Numéro de séquenceV18Conditionnel
realTimeUniqueIdString (chaîne)Identifiant unique de transaction Moneris en temps réelF15Conditionnel
responseCodeString (chaîne)Code de réponse de l’hôte MonerisV3Conditionnel
isoString (chaîne)Code de réponse ISOV2Conditionnel
authCodeString (chaîne)Code d’autorisation renvoyé par l’institution émettriceV8Conditionnel
formFactorString (chaîne)Données spécifiques EMVF2Conditionnel
maskedPanString (chaîne)Numéro de compte principal (PAN) masquéV21Conditionnel
tipAmountString (chaîne)Montant du pourboire saisi par l’utilisateurV9Conditionnel
cashBackString (chaîne)Montant de remise en argentV9Conditionnel
surchargeString (chaîne)Montant de la surtaxe sur la transactionV9Conditionnel
receiptString (chaîne)Données du reçu financier envoyées en encodage ISO-8895-1V4000Conditionnel
receiptChoiceString (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.V10Conditionnel
completedString (chaîne)"true" ou "false"V5Obligatoire
terminalIdString (chaîne)ID du terminal de destinationF8Obligatoire
dccOptInString (chaîne)Ce champ indique une transaction avec conversion dynamique de devise (DCC)V5Facultatif
installmentOptInString (chaîne)Ce champ indique une transaction à paiements échelonnés par VisaV5Facultatif
receiptExtensionString (chaîne)Données de transaction DCC pour les reçus au format compactV275Conditionnel
{
  "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.