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) :
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
| Element | Type | Description | Taille | Obligatoire |
|---|---|---|---|---|
| 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 |
{
"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ément | Type | Description | Taille | Obligatoire |
|---|---|---|---|---|
| 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 |
{
"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.

