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 |
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"
}
]
}
]
}
}| Element | Type | Description | Taille | Obligatoire |
|---|---|---|---|---|
| apiVersion | String (chaîne) | Numéro de version de l’API. | V20 | Obligatoire |
| apiToken | String (chaîne) | Identifiant attribué par Moneris. | V50 | Facultatif |
| storeId | String (chaîne) | ID du magasin du demandeur. | V50 | Obligatoire |
| istConfigCode | String (chaîne) | Code de configuration d’intégration fourni par Moneris. | V25 | Obligatoire |
| postBackUrl | String (chaîne) | Ce champ est obligatoire pour l’intégration postback et combinée. | V2000 | Conditionnel |
| polling | String (chaîne) | Ce champ est obligatoire pour l’intégration combinée. | V5 | Conditionnel |
| 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 | Obligatoire |
| 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 |
| 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 |
| modifier | String (chaîne) | Énumération qui classe davantage la transaction. | V24 | Facultatif |
| terminalId | String (chaîne) | ID du terminal de destination. | F8 | Obligatoire |
| cashBack | String (chaîne) | Si la valeur est « true », le terminal invitera le titulaire de la carte à demander un retrait en argent. | V5 | 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",
"apiToken": "example_apiToken",
"storeId": "example_storeId",
"istConfigCode": "example_istConfigCode",
"polling": "true",
"postBackUrl": "https://example.client.url",
"dataId": "example_dataId",
"dataTimestamp": "1969-12-31 23:59:59",
"data": {
"request": [
{
"orderId": "example_orderId",
"idempotencyKey": "example_idempotencyKey",
"terminalId": "example_terminalId",
"username": "example_username",
"modifier": "example_modifier",
"linkId": "example_linkId",
"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 |
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"
}
]
}
}| Élément | Type | Description | Taille | Obligatoire |
|---|---|---|---|---|
| receipt | Object (objet) | Contient le message de données de réponse | — | — |
| apiVersion | String (chaîne) | Numéro de version de l’API | V20 | Obligatoire |
| statusCode | String (chaîne) | Code d’état pour l’ensemble de la requête de transaction | V4 | Obligatoire |
| status | String (chaîne) | Description du statusCode (code d’état) | 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 requête (AAAA-MM-JJ HH:MM:SS) | F19 | Obligatoire |
| data | Object (objet) | Objet contenant toutes les requêtes de transaction | — | — |
| response | Array (tableau) | Contient les données applicables à la requête de transaction | — | — |
| transactionId | String (chaîne) | Identifiant unique pour cette requête | V50 | Obligatoire |
| idempotencyKey | String (chaîne) | Identifiant unique de transaction pour éviter les requêtes 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 requête individuelle | V4 | Obligatoire |
| status | String (chaîne) | Description du statusCode (code d’état) 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 | Obligatoire |
| totalAmount | String (chaîne) | Renvoi du montant total de la transaction à partir de la requête | V9 | Obligatoire |
| remainingAmount | String (chaîne) | Montant restant dû | V3 | Conditionnel |
| tenderType | String (chaîne) | Type de paiement : Crédit, Débit, 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 espèces saisi par l’utilisateur | V9 | Conditionnel |
| surcharge | String (chaîne) | Montant de la surtaxe sur la transaction | V9 | Facultatif |
| completed | String (chaîne) | "true" ou "false" | V5 | Obligatoire |
| cloudTicket | String (chaîne) | Identifiant de référence unique de la requête cloud | V100 | Obligatoire |
| receipt | String (chaîne) | Données de reçu financier envoyées en encodage ISO-8895-1 | V4000 | Conditionnel |
| receiptChoice | String (chaîne) | Choix du mode de remise du reçu au titulaire de la carte au moment de la transaction. Valeurs valides : PRINT (option par défaut), EMAIL, SMS, NONE. | V10 | Conditionnel |
| orderId | String (chaîne) | Le terminal renvoie soit l’orderId (identifiant de commande) de la requête, soit génère un nouvel identifiant unique si aucun orderId n’était présent | V50 | 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 échelonnée par Visa | V5 | Facultatif |
| receiptExtension | String (chaîne) | Données de transaction DCC pour reçus au format compact | V275 | Conditionnel |
Exemple de réponse
{
"receipt": {
"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",
"linkId": "example_linkId",
"statusCode": "example_statusCode",
"status": "example_status",
"idempotencyKey": "example_idempotencyKey",
"cloudTicket": "example_cloudTicket",
"completed": "true",
"responseCode": "example_responseCode",
"iso": "example_iso",
"tipAmount": "100",
"cashback": "100",
"surcharge": "100",
"approvedAmount": "1300",
"tenderType": "example_tenderType",
"cardType": "example_cardType",
"sequenceNum": "example_sequenceNum",
"realTimeUniqueId": "example_realTimeUniqueId",
"authCode": "example_authCode",
"formFactor": "example_formFactor",
"maskedPan": "example_maskedPan",
"action": "purchase",
"terminalId": "example_terminalId",
"receipt": "example_receipt"
}
]
}
}
}Erreurs
Si votre réponse contient des erreurs, consultez la page Erreurs pour une description détaillée de chacune.
Mise à jour il y a 4 jours

