Achat
Aperçu
Un achat permet de traiter le paiement entre un commerçant et un client pour la vente de biens ou de services. En un seul appel API, ce paiement comprend l'autorisation des fonds sur la carte et leur prélèvement en vue du dépôt dans le compte bancaire du commerçant.
1. Recueillir les données du titulaire de carte
Avant d'envoyer l'appel API de serveur à serveur pour le paiement, recueillir les données de carte de crédit du titulaire afin de renseigner la transaction. Les options offertes sont les suivantes :
-
Transformation en jetons hébergée : Ce service de Moneris intègre à votre site Web une zone de saisie des données de carte hébergée sur les systèmes de Moneris, puis renvoie un jeton temporaire à utiliser pour le paiement. Votre site Web n'a ainsi pas à traiter directement les données de carte sensibles, ce qui réduit le fardeau de la certification de conformité aux normes de sécurité de l'industrie des cartes de paiement (PCI).
-
Jetons réseau : L'API Moneris prend en charge les paiements effectués avec des jetons émis par les réseaux de cartes. Les commerçants peuvent ainsi transmettre des jetons réseau par la plateforme Moneris pour le traitement des paiements. Ils bénéficient d'une meilleure protection des données de carte et d'une utilisation plus étendue des jetons que dans les modèles traditionnels fondés uniquement sur un coffre-fort.
-
Collecte par le commerçant : Il est possible de recueillir directement auprès du titulaire, sur votre site Web, le numéro de carte de crédit, la date d'expiration et le code de vérification de la carte, puis de traiter ces données tout au long du processus de paiement. Cette option exige la conformité PCI afin d'assurer la sécurité des données.
-
Mode de paiement enregistré : Si un mode de paiement a déjà été enregistré pour ce titulaire, par exemple sous forme de jeton permanent dans le service Moneris Vault ou de mode de paiement au moyen de notre API, il n'est pas nécessaire de le recueillir de nouveau lors des transactions subséquentes. Passer alors directement aux étapes suivantes. Lors de l'appel API, le mode de paiement enregistré remplace les données saisies par le titulaire.
-
Portefeuilles électroniques : L'API Moneris permet aux commerçants d'accepter les paiements effectués au moyen des portefeuilles électroniques pris en charge. Les clients utilisent ainsi le portefeuille de leur choix et profitent d'une expérience de paiement sécurisée et fluide.
Authentification 3-D Secure
Moneris recommande d'effectuer l'authentification 3-D Secure (3DS) avant le paiement afin de réduire la fraude sans présentation de la carte. Le protocole 3DS évalue les données de la transaction et de l'appareil, peut soumettre le titulaire à un défi d'authentification au besoin et peut entraîner un transfert de responsabilité pour les rétrofacturations admissibles liées à la fraude.
Si les fonctions 3-D Secure sont déjà activées dans votre compte de commerçant, consulter les pages ci-dessous pour les mettre en œuvre avant le flux de transaction de paiement. Lien vers l'aperçu de 3DS à ajouter.
3DS – Canal navigateur 3DS – À l'initiative du demandeur 3DS Data Only
2. Créer le paiement
Votre serveur lance le paiement en envoyant une requête API à Moneris. Utiliser le point de terminaison POST /payment pour soumettre les renseignements sur la transaction et effectuer un achat, qui regroupe l'autorisation et le règlement en un seul flux.
"AutomaticCapture" = "true"
Ce paramètre détermine si le paiement est réglé automatiquement. La valeur "false" est réservée au flux de préautorisation et de conclusion.
Pour créer la requête de paiement, il est essentiel de déterminer le mode de paiement qu'utilisera le client. Ce choix détermine les champs à inclure dans l'appel API et ceux qui peuvent être omis. Les exemples ci-dessous présentent des scénarios de paiement courants et précisent les champs requis dans chaque cas :
- Pour traiter un paiement au moyen d'un identifiant de mode de paiement existant (
paymentMethod = PAYMENT_METHOD_ID), il n'est pas nécessaire d'inclure d'objetcarddans la requête de transaction. Indiquer plutôt l'identifiant de mode de paiement applicable dans le champpaymentMethodIDde l'objetstorePaymentMethodIdRequest. Cette approche simplifie la requête et rend le processus de paiement plus efficace. - Pour une transaction effectuée avec une carte de crédit recueillie (
paymentMethodType = CARD), inclure toutes les données requises sur la carte et le titulaire afin que le paiement puisse être traité. Fournir ces renseignements dans les objets suivants :card,cardholderInformation,contactDetails,billingAddressetpaymentMethodSource. - Pour un paiement effectué avec Google Pay chiffré (
paymentMethodSource = GOOGLE_PAY_ENCRYPTED), soumettre l'objetstoreGooglePayEncryptedWalletRequest. Cet objet fournit les données du titulaire et le cryptogramme nécessaires au traitement sécurisé de la transaction. Dans ce flux, l'objetcardstandard n'est pas inclus. - Pour un paiement effectué avec des identifiants enregistrés, inclure l'objet
credentialOnFileInformationet y indiquer les valeurs correspondant au scénario applicable de transaction subséquente effectuée à l'initiative du commerçant. La transaction est ainsi correctement identifiée, ce qui facilite l'autorisation.
Pour en savoir plus sur les identifiants enregistrés : Consulter la page Identifiants enregistrés
Pour une première transaction, veiller à inclure l'objet
credentialOnFileInformationavec les valeurs appropriées. L'enregistrement d'un mode de paiement permanent exige d'informer le réseau de cartes de l'utilisation prévue des identifiants. Pour en savoir plus, consulter la page Identifiants enregistrés.
La section Paiements de la référence API présente les directives et les détails techniques nécessaires au traitement des transactions pour tous les modes de paiement pris en charge par l'API Moneris. Consulter cette ressource pour connaître les champs requis, choisir le flux de paiement approprié et offrir à vos clients une expérience de paiement fiable.
3. Réponse
Après la soumission d'un achat, Moneris envoie à votre serveur une réponse indiquant si la transaction a été approuvée ou refusée. Examiner le code d'état HTTP ainsi que l'objet transactionDetails du corps de la réponse pour connaître le résultat, appuyer les décisions d'affaires et déterminer la prochaine étape de l'expérience de paiement du client.
Pour en savoir plus sur les réponses, consulter le lien ci-dessous.
Accéder à la page Traitement des réponses
Exemples
{
"idempotencyKey": "5d8f812e-9969-4885-85bb-d03948eccac1",
"orderId": "1q2w3e4r5t6t78",
"invoiceNumber": "1a2s3d45v6",
"amount": {
"amount": "16000",
"currency": "CAD"
},
"customerId": "ci0105ARZ3NDEKTSV4RRFFQ69G5FAV",
"paymentMethod": {
"paymentMethodSource": "TEMPORARY_TOKEN",
"temporaryToken": "ot-y2mxjFqmqDisQQGB6hQ8xwQ2"
},
"ecommerceIndicator": "AUTHENTICATED_ECOMMERCE",
"automaticCapture": "true",
"customData": {
"property1": "string",
"property2": "string"
},
"dynamicDescriptor": "moneris",
"ipv4": "192.0.2.146",
"ipv6": "2345:0425:2CA1:0000:0000:0567:5673:23b5"
}{
"idempotencyKey": "5d8f812e-9969-4885-85bb-d03948eccac1",
"orderId": "1q2w3e4r5t6t78",
"invoiceNumber": "1a2s3d45v6",
"amount": {
"amount": "16000",
"currency": "CAD"
},
"customerId": "ci0105ARZ3NDEKTSV4RRFFQ69G5FAV",
"paymentMethod": {
"paymentMethodSource": "PERMANENT_TOKEN",
"permanentToken": "ot-y2mxjFqmqDisQQGB6hQ8xwQ2",
"credentialOnFileInformation": {
"paymentIndicator": "UNSCHEDULED_CREDENTIAL_ON_FILE",
"paymentInformation": "FIRST"
}
},
"ecommerceIndicator": "AUTHENTICATED_ECOMMERCE",
"automaticCapture": "true",
"customData": {
"property1": "string",
"property2": "string"
},
"dynamicDescriptor": "moneris",
"ipv4": "192.0.2.146",
"ipv6": "2345:0425:2CA1:0000:0000:0567:5673:23b5"
}{
"idempotencyKey": "5d8f812e-9969-4885-85bb-d03948eccac1",
"orderId": "1q2w3e4r5t6t78",
"invoiceNumber": "1a2s3d45v6",
"amount": {
"amount": "16000",
"currency": "CAD"
},
"customerId": "ci0105ARZ3NDEKTSV4RRFFQ69G5FAV",
"paymentMethod": {
"paymentMethodSource": "CARD",
"card": {
"cardNumber": "4242424242424242",
"expiryMonth": "1",
"expiryYear": "2028",
"cardSecurityCode": "123"
},
"storePaymentMethod": "DO_NOT_STORE"
},
"ecommerceIndicator": "AUTHENTICATED_ECOMMERCE",
"automaticCapture": "true",
"customData": {
"property1": "string",
"property2": "string"
},
"dynamicDescriptor": "moneris",
"ipv4": "192.0.2.146",
"ipv6": "2345:0425:2CA1:0000:0000:0567:5673:23b5"
}{
"idempotencyKey": "5d8f812e-9969-4885-85bb-d03948eccac1",
"orderId": "1q2w3e4r5t6t78",
"invoiceNumber": "1a2s3d45v6",
"amount": {
"amount": "16000",
"currency": "CAD"
},
"customerId": "ci0105ARZ3NDEKTSV4RRFFQ69G5FAV",
"paymentMethod": {
"paymentMethodSource": "PAYMENT_METHOD_ID",
"paymentMethodId": "pm0105ARZ3NDEKTSV4RRFFQ69G5FAV",
"storePaymentMethod": "DO_NOT_STORE"
},
"ecommerceIndicator": "AUTHENTICATED_ECOMMERCE",
"automaticCapture": "true",
"customData": {
"property1": "string",
"property2": "string"
},
"dynamicDescriptor": "moneris",
"ipv4": "192.0.2.146",
"ipv6": "2345:0425:2CA1:0000:0000:0567:5673:23b5"
}{
"idempotencyKey": "5d8f812e-9969-4885-85bb-d03948eccac1",
"orderId": "1q2w3e4r5t6t78",
"invoiceNumber": "1a2s3d45v6",
"amount": {
"amount": "16000",
"currency": "CAD"
},
"customerId": "ci0105ARZ3NDEKTSV4RRFFQ69G5FAV",
"paymentMethod": {
"paymentMethodSource": "APPLE_PAY_ENCRYPTED",
"displayName": "MasterCard 4079",
"cardBrand": "MASTERCARD",
"applePayVersion": "EC_V1",
"data": "ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SnpkV0lpT2lJeE1qTTBOVFkzT0Rrd0lpd2libUZ0WlNJNklrcHZh",
"signature": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6Ikpva",
"publicKeyHash": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6Ikpva",
"ephemeralPublicKey": "ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SnpkV0lpT2lJeE1qTTBOVFkzT0Rrd0lpd2libUZ0WlNJNklrcHZh",
"applePayTransactionId": "22iWw1ySnzwiav6ToJ7KOhkY49",
"walletIndicator": "IN_BROWSER"
},
"ecommerceIndicator": "AUTHENTICATED_ECOMMERCE",
"automaticCapture": "true",
"customData": {
"property1": "string",
"property2": "string"
},
"dynamicDescriptor": "moneris",
"ipv4": "192.0.2.146",
"ipv6": "2345:0425:2CA1:0000:0000:0567:5673:23b5"
}{
"idempotencyKey": "5d8f812e-9969-4885-85bb-d03948eccac1",
"orderId": "1q2w3e4r5t6t78",
"invoiceNumber": "1a2s3d45v6",
"amount": {
"amount": 16000,
"currency": "CAD"
},
"customerId": "ci0105ARZ3NDEKTSV4RRFFQ69G5FAV",
"paymentMethod": {
"paymentMethodSource": "CARD",
"card": {
"cardNumber": "4444333322221111", // Add the DPAN
"expiryMonth": "04",
"expiryYear": "2022",
"cardSecurityCode": 123
},
"networkTokenDetails": {
"networkTokenOptIn": "OPT_IN",
"tokenRequestorId": "add requestod id here",
"tokenCryptogram" : "add crytogram here"
},
"storePaymentMethod": "DO_NOT_STORE"
},
"ecommerceIndicator": "SSL_MERCHANT",
"automaticCapture": true,
"customData": {
"property1": "string",
"property2": "string",
},
"dynamicDescriptor": "moneris",
"ipv4": "104.75.173.179",
"ipv6": "2600:1401:2::8a"
}{
"idempotencyKey": "5d8f812e-9969-4885-85bb-d03948eccac1",
"orderId": "1q2w3e4r5t6t78",
"invoiceNumber": "1a2s3d45v6",
"amount": {
"amount": 16000,
"currency": "CAD"
},
"customerId": "ci0105ARZ3NDEKTSV4RRFFQ69G5FAV",
"paymentMethod": {
"konekTransactionType": "PURCHASE",
"paymentMethodSource": "KONEK",
"paymentConsentId": "add the consent Id"
},
"ecommerceIndicator": "SSL_MERCHANT",
"automaticCapture": true,
"customData": {
"property1": "string",
"property2": "string"
},
"dynamicDescriptor": "moneris",
"ipv4": "192.0.2.146",
"ipv6": "2345:0425:2CA1:0000:0000:0567:5673:23b5"
}{
"idempotencyKey": "5d8f812e-9969-4885-85bb-d03948eccac1",
"orderId": "1q2w3e4r5t6t78",
"invoiceNumber": "1a2s3d45v6",
"amount": {
"amount": 16000,
"currency": "CAD"
},
"customerId": "ci0105ARZ3NDEKTSV4RRFFQ69G5FAV",
"paymentMethod": {
"paymentMethodSource": "GOOGLE_PAY_ENCRYPTED",
"cardBrand": "VISA",
"googlePayProtocolVersion": "EC_V1",
"signedMessage": "add the encryptedMessage",
"signature": "add the signing key",
"walletIndicator": "IN_APPLICATION"
},
"ecommerceIndicator": "SSL_MERCHANT",
"automaticCapture": true,
"customData": {
"property1": "string",
"property2": "string"
},
"dynamicDescriptor": "moneris",
"ipv4": "192.0.2.146",
"ipv6": "2345:0425:2CA1:0000:0000:0567:5673:23b5"
}{
"idempotencyKey": "5d8f812e-9969-4885-85bb-d03948eccac1",
"orderId": "1q2w3e4r5t6t78",
"invoiceNumber": "1a2s3d45v6",
"amount": {
"amount": 16000,
"currency": "CAD"
},
"customerId": "ci0105ARZ3NDEKTSV4RRFFQ69G5FAV",
"paymentMethod": {
"paymentMethodSource": "APPLE_PAY_ENCRYPTED",
"displayName": "MasterCard 4079",
"cardBrand": "MASTERCARD",
"applePayVersion": "EC_V1",
"data": "add the encrypted payment data.",
"signature": "add the signing key",
"publicKeyHash": "add the certificate public key",
"ephemeralPublicKey": "add the ephemeral public key",
"applePayTransactionId": "add the unique identifier for a transaction",
"walletIndicator": "IN_BROWSER"
},
"ecommerceIndicator": "SSL_MERCHANT",
"automaticCapture": true,
"customData": {
"property1": "string",
"property2": "string"
},
"dynamicDescriptor": "moneris",
"ipv4": "192.0.2.146",
"ipv6": "2345:0425:2CA1:0000:0000:0567:5673:23b5"
}{
"idempotencyKey": "5d8f812e-9969-4885-85bb-d03948eccac1",
"orderId": "1q2w3e4r5t6t78",
"invoiceNumber": "1a2s3d45v6",
"amount": {
"amount": 16000,
"currency": "CAD"
},
"customerId": "ci0105ARZ3NDEKTSV4RRFFQ69G5FAV",
"paymentMethod": {
"paymentMethodSource": "PAYMENT_METHOD_ID",
"paymentMethodId": "pm0105ARZ3NDEKTSV4RRFFQ69G5FAV",
"storePaymentMethod": "DO_NOT_STORE"
},
"ecommerceIndicator": "add the ecommerce indicator",
"automaticCapture": true,
"threeDSecureData": {
"threeDSecureVersion": "2.2",
"threeDSecureAuthenticationValue": "add the CAVV Provided",
"threeDSecureServerTransactionId": "add direct server id",
"threeDSecureDirectoryServerTransactionId": "add the direct server identificator"
},
"customData": {
"property1": "string",
"property2": "string"
},
"dynamicDescriptor": "moneris",
"ipv4": "192.0.2.146",
"ipv6": "2345:0425:2CA1:0000:0000:0567:5673:23b5",
}Renseignements supplémentaires
Consulter les définitions de l'API
Consulter les points de terminaison, les formats de requête et de réponse ainsi que les méthodes d'authentification utilisés dans ce scénario.
Mise à jour avant-hier

