Cas d'utilisation
Voici une liste non exhaustive des cas d'utilisation avec la création du formToken
(lors de l'appel au web service Charge/createPayment).
Créer un paiement en plusieurs fois
Définition
Le paiement en plusieurs fois consiste à échelonner les paiements avec la création d'échéances sur une durée déterminée.
Ce mode de paiement est une facilité de paiement proposée à l’acheteur, connue aussi sous le nom de BNPL (Buy Now Pay Later).
- La première échéance est réalisée lors de l'achat.
- Les échéances suivantes sont débitées en différé.
Le paiement en plusieurs en fois avec un organisme de crédit fonctionne de manière différente. L'organisme de crédit (Alma, Cofidis, ...) vous règle la totalité du montant de la commande et se charge de débiter les futures échéances auprès de l'acheteur.
Disponibilité
Cette fonctionnalité est disponible :
- Uniquement pour le paiement par cartes pour créer des paiements 2, 3 ou 4 fois.
- Selon le mode d'affichage du formulaire de paiement.
Mode d'affichage | Description | Disponibilité |
---|---|---|
Mode liste (voir : lien) | Le formulaire s'affiche directement avec les champs embarqués | |
Mode pop-in (voir : lien ) | Non disponible | |
Mode liste avec carte embarquée (voir : lien) | Le formulaire s'affiche directement avec les champs embarqués |
Intégration
1. Créer un échéancier simple (avec montants et dates d'échéances fixes)
Prérequis
- soumis à option et/ou en fonction de votre offre
Exemple de requête
Paiement en 2 fois
Champs obligatoires :
- Montant : 100,00 EUR.
- Règle :
- Nombre d’échéances : 2.
- Période (en jours) entre chaque échéance : 7 jours.
Champs recommandés :
- Montant du premier paiement : 50,00 EUR .
- Référence de la commande : "myOrderId-1234".
{ "amount":10000, "currency":"EUR", "orderId":"myOrderId-1234", "transactionOptions":{ "installmentOptions":[ { "firstAmount":5000, "count":2, "period":7 } ] } }
Le premier paiement de 50,00 EUR est créé à J+0.
Le deuxième paiement de 50,00 EUR est créé à J+7.
La description et l'intégralité de tous les champs sont disponibles (menu à gauche) : Charge/CreatePayment.
Paiement en 3 fois
Champs obligatoires :
- Montant : 100,00 EUR.
- Règle :
- Nombre d’échéances : 3.
- Période (en jours) entre chaque échéance : 7 jours.
Champs recommandés :
- Montant du premier paiement : 50,00 EUR .
- Référence de la commande : "myOrderId-1234".
{ "amount":10000, "currency":"EUR", "orderId":"myOrderId-1234", "transactionOptions":{ "installmentOptions":[ { "firstAmount":5000, "count":3, "period":7 } ] } }
Le premier paiement de 50,00 EUR est créé à J+0.
Le deuxième paiement de 25,00 EUR est créé à J+7.
Le troisième paiement de 25,00 EUR est créé à J+14.
La description et l'intégralité de tous les champs sont disponibles (menu à gauche) : Charge/CreatePayment.
Paiement en 4 fois
Champs obligatoires :
- Montant : 200,00 EUR.
- Règle :
- Nombre d’échéances : 4.
- Période (en jours) entre chaque échéance : 7 jours.
Champs recommandés :
- Montant du premier paiement : 50,00 EUR .
- Référence de la commande : "myOrderId-1234".
{ "amount":20000, "currency":"EUR", "orderId":"myOrderId-1234", "transactionOptions":{ "installmentOptions":[ { "firstAmount":5000, "count":4, "period":7 } ] } }
Le premier paiement de 50,00 EUR est créé à J+0.
Le deuxième paiement de 50,00 EUR est créé à J+7.
Le troisième paiement de 50,00 EUR est créé à J+14.
Le quatrième paiement de 50,00 EUR est créé à J+21.
La description et l'intégralité de tous les champs sont disponibles (menu à gauche) : Charge/CreatePayment.
Paiement en 2 et 3 fois
Champs obligatoires :
- Montant : 100,00 EUR.
- Règle :
- Nombre d’échéances : 2 et 3.
- Période (en jours) entre chaque échéance :
- 7 jours pour le paiement en 2 fois.
- 10 jours pour le paiement en 3 fois.
Champs recommandés :
- Montant du premier paiement : 50,00 EUR .
- Référence de la commande : "myOrderId-1234".
{ "amount":10000, "currency":"EUR", "orderId":"myOrderId-1234", "transactionOptions":{ "installmentOptions":[ { "firstAmount":5000, "count":2, "period":7 }, { "firstAmount":5000, "count":3, "period":10 } ] } }
2. Créer un écheancier avancé (avec montants et dates d'échéances variables)
Prérequis
- soumis à l’option *"Paiement en plusieurs fois avancé"* - non prise en compte de la *valeur du champ Capture Delay* (délai de remise en banque)
Exemple de requête
Paiement en 2 fois
Champs obligatoires :
- Montant : 100,00 EUR.
- Règle : Paiement en 2 fois (date au format ISO-8601).
- le 1 er Avril pour un montant de 50,00 EUR .
- le 1 er Mai pour un montant de 50,00 EUR .
Champs recommandés :
- Référence de la commande : "myOrderId-1234".
{ "amount":10000, "currency":"EUR", "orderId":"myOrderId-1234", "transactionOptions":{ "installmentOptions":[ { "schedules":[ { "date":"2025-04-01T00:00:00+00:00", "amount":5000 }, { "date":"2025-05-01T00:00:00+00:00", "amount":5000 } ] } ] } }
La description et l'intégralité de tous les champs sont disponibles (menu à gauche) : Charge/CreatePayment.
Paiement en 3 fois
Champs obligatoires :
- Montant : 100,00 EUR.
- Règle : Paiement en 3 fois (date au format ISO-8601)
- le 1er Avril pour un montant de 50,00 EUR .
- le 1er Mai pour un montant de 30,00 EUR .
- le 1er Juin pour un montant de 20,00 EUR .
Champs recommandés :
- Référence de la commande : "myOrderId-1234".
{ "amount":10000, "currency":"EUR", "orderId":"myOrderId-1234", "transactionOptions":{ "installmentOptions":[ { "schedules":[ { "date":"2025-04-16T00:00:00+00:00", "amount":5000 }, { "date":"2025-05-20T00:00:00+00:00", "amount":3000 }, { "date":"2025-06-01T00:00:00+00:00", "amount":2000 } ] } ] } }
La description et l'intégralité de tous les champs sont disponibles (menu à gauche) : Charge/CreatePayment.
openPaiement en 4 fois
Champs obligatoires :
- Montant : 120,00 EUR.
- Règle : Paiement en 4 fois (date au format ISO-8601)
- le 1er Avril pour un montant de 50,00 EUR .
- le 1er Mai pour un montant de 30,00 EUR .
- le 1er Juin pour un montant de 20,00 EUR .
- le 1er Juillet pour un montant de 20,00 EUR .
Champs recommandés :
- Référence de la commande : "myOrderId-1234".
{ "amount":12000, "currency":"EUR", "orderId":"myOrderId-1234", "transactionOptions":{ "installmentOptions":[ { "schedules":[ { "date":"2025-04-01T00:00:00+00:00", "amount":5000 }, { "date":"2025-05-01T00:00:00+00:00", "amount":3000 }, { "date":"2025-06-01T00:00:00+00:00", "amount":2000 }, { "date": "2025-07-01T00:00:00+00:00", "amount": 2000 } ] } ] } }
La description et l'intégralité de tous les champs sont disponibles (menu à gauche) : Charge/CreatePayment.
Paiement en 2 et 3 fois
Champs obligatoires :
Montant : 100,00 EUR.
Pour le paiement en 2 fois :
- le 1er Avril pour un montant de 50,00 EUR .
- le 1er Mai pour un montant de 50,00 EUR .
- Pour le paiement en 3 fois :
- le 1er Avril pour un montant de 50,00 EUR .
- le 1er Mai pour un montant de 30,00 EUR .
- le 1er Juin pour un montant de 20,00 EUR .
Champs recommandés :
- Référence de la commande : "myOrderId-1234".
{ "amount":10000, "currency":"EUR", "orderId":"myOrderId-1234", "transactionOptions": { "installmentOptions": [ { "schedules": [ { "date": "2025-04-01T00:00:00+00:00", "amount": 5000 }, { "date": "2025-05-01T00:00:00+00:00", "amount": 5000 } ] }, { "schedules": [ { "date": "2025-04-01T00:00:00+00:00", "amount": 5000 }, { "date": "2025-05-01T00:00:00+00:00", "amount": 2500 }, { "date": "2025-06-01T00:00:00+00:00", "amount": 2500 } ] } ] } }
Réponse
Exemple de réponse
{ "webService": "Charge/CreatePayment", "version": "V4", "applicationVersion": "5.5.0", "status": "SUCCESS", "answer": { { "shopId": "12345678", "cardOrderCycle": "CLOSED", "orderCycle": "CLOSED", "orderStatus": "PAID", "serverDate": "[DATE ISO-8601]", "orderDetails": { "orderTotalAmount": 10000, "orderEffectiveAmount": 10000, "orderPaidAmount": 10000, "orderCurrency": "EUR", "mode": "TEST", "orderId": "myOrderId-1234", "metadata": null, "updatedDna": null, "_type": "V4/OrderDetails" }, "customer": { "billingDetails": { "address": null, "category": null, "cellPhoneNumber": null, "city": "Lisboa", "country": null, "district": null, "firstName": "John", "identityCode": null, "identityType": null, "language": "FR", "lastName": "Doe", "phoneNumber": "+351 210312700", "state": null, "streetNumber": null, "title": null, "zipCode": "1000-001", "legalName": null, "_type": "V4/Customer/BillingDetails" }, "email": "main@example.com", "reference": null, "shippingDetails": { "address": null, "address2": null, "category": null, "city": null, "country": null, "deliveryCompanyName": null, "district": null, "firstName": null, "identityCode": null, "lastName": null, "legalName": null, "phoneNumber": null, "shippingMethod": null, "shippingSpeed": null, "state": null, "streetNumber": null, "zipCode": null, "_type": "V4/Customer/ShippingDetails" }, "extraDetails": { "browserAccept": null, "fingerPrintId": null, "ipAddress": "[IP ADRESS]", "browserUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36", "_type": "V4/Customer/ExtraDetails" }, "shoppingCart": { "insuranceAmount": null, "shippingAmount": null, "taxAmount": null, "cartItemInfo": null, "_type": "V4/Customer/ShoppingCart" }, "_type": "V4/Customer/Customer" }, "transactions": [ { "shopId": "12345678", "uuid": "5762bfc8cf1e412ea8e76ad343ec5232", "amount": 10000, "currency": "EUR", "paymentMethodType": "CARD", "paymentMethodToken": null, "status": "PAID", "detailedStatus": "AUTHORISED", "operationType": "DEBIT", "effectiveStrongAuthentication": "ENABLED", "creationDate": "[DATE ISO-8601]", "errorCode": null, "errorMessage": null, "detailedErrorCode": null, "detailedErrorMessage": null, "metadata": { "orderInfo": "test", "orderInfo2": "test2" }, "transactionDetails": { "liabilityShift": "YES", "effectiveAmount": 5000, "effectiveCurrency": "EUR", "creationContext": "CHARGE", "cardDetails": { "paymentSource": "EC", "manualValidation": "NO", "expectedCaptureDate": "[DATE ISO-8601]", "effectiveBrand": "VISA", "pan": "497011XXXXXX1003", "expiryMonth": 12, "expiryYear": 2025, "country": "FR", "issuerCode": 17807, "issuerName": "BP Occitane", "effectiveProductCode": null, "legacyTransId": "942629", "legacyTransDate": "[DATE ISO-8601]", "paymentMethodSource": "NEW", "authorizationResponse": { "amount": 5000, "currency": "EUR", "authorizationDate": "[DATE ISO-8601]"", "authorizationNumber": "3fc386", "authorizationResult": "0", "authorizationMode": "FULL", "_type": "V4/PaymentMethod/Details/Cards/CardAuthorizationResponse" }, "captureResponse": { "refundAmount": null, "refundCurrency": null, "captureDate": null, "captureFileNumber": null, "effectiveRefundAmount": null, "effectiveRefundCurrency": null, "_type": "V4/PaymentMethod/Details/Cards/CardCaptureResponse" }, "threeDSResponse": { "authenticationResultData": { "transactionCondition": null, "enrolled": null, "status": null, "eci": null, "xid": null, "cavvAlgorithm": null, "cavv": null, "signValid": null, "brand": null, "_type": "V4/PaymentMethod/Details/Cards/CardAuthenticationResponse" }, "_type": "V4/PaymentMethod/Details/Cards/ThreeDSResponse" }, "authenticationResponse": { "id": "3aa32136-42d9-49ea-a91b-8dc455a974d6", "operationSessionId": "43b3143dfbf7466cba5b6ec3a17f56fd", "protocol": { "name": "THREEDS", "version": "2.1.0", "network": "VISA", "challengePreference": "CHALLENGE_MANDATED", "simulation": true, "_type": "V4/Charge/Authenticate/Protocol" }, "value": { "authenticationType": "CHALLENGE", "authenticationId": { "authenticationIdType": "dsTransId", "value": "aeb8ba19-3a19-4c69-a9f8-9c6d7cb317fb", "_type": "V4/Charge/Authenticate/AuthenticationId" }, "authenticationValue": { "authenticationValueType": "CAVV", "value": "q**************************=", "_type": "V4/Charge/Authenticate/AuthenticationValue" }, "status": "SUCCESS", "commerceIndicator": "05", "extension": { "authenticationType": "THREEDS_V2", "threeDSServerTransID": "3aa32136-42d9-49ea-a91b-8dc455a974d6", "dsTransID": "aeb8ba19-3a19-4c69-a9f8-9c6d7cb317fb", "acsTransID": "c6dee769-ccdf-4f79-a8b5-5f24aee5841c", "requestorName": "So easy to test", "_type": "V4/Charge/Authenticate/AuthenticationResultExtensionThreedsV2" }, "reason": { "_type": "V4/Charge/Authenticate/AuthenticationResultReason" }, "_type": "V4/Charge/Authenticate/AuthenticationResult" }, "_type": "V4/AuthenticationResponseData" }, "installmentNumber": null, "installmentCode": null, "markAuthorizationResponse": { "amount": null, "currency": null, "authorizationDate": null, "authorizationNumber": null, "authorizationResult": null, "_type": "V4/PaymentMethod/Details/Cards/MarkAuthorizationResponse" }, "cardHolderName": null, "cardHolderPan": "497011XXXXXX1003", "cardHolderExpiryMonth": 12, "cardHolderExpiryYear": 2025, "identityDocumentNumber": null, "identityDocumentType": null, "initialIssuerTransactionIdentifier": "6790783855558831", "productCategory": "DEBIT", "nature": "CONSUMER_CARD", "sequenceType": "MULTI_PAYMENT", "_type": "V4/PaymentMethod/Details/CardDetails" }, "paymentMethodDetails": { "id": "497011XXXXXX1003", "paymentSource": "EC", "manualValidation": "NO", "expectedCaptureDate": "[DATE ISO-8601]", "effectiveBrand": "VISA", "expiryMonth": 12, "expiryYear": 2025, "country": "FR", "issuerCode": 17807, "issuerName": "BP Occitane", "effectiveProductCode": null, "legacyTransId": "942629", "legacyTransDate": "[DATE ISO-8601]", "paymentMethodSource": "NEW", "authorizationResponse": { "amount": 5000, "currency": "EUR", "authorizationDate": "[DATE ISO-8601]", "authorizationNumber": "3fc386", "authorizationResult": "0", "authorizationMode": "FULL", "_type": "V4/PaymentMethod/Details/Cards/CardAuthorizationResponse" }, "captureResponse": { "refundAmount": null, "refundCurrency": null, "captureDate": null, "captureFileNumber": null, "effectiveRefundAmount": null, "effectiveRefundCurrency": null, "_type": "V4/PaymentMethod/Details/Cards/CardCaptureResponse" }, "authenticationResponse": { (...) "subscriptionDetails": { "subscriptionId": null, "_type": "V4/PaymentMethod/Details/SubscriptionDetails" }, "parentTransactionUuid": null, "mid": "1549425", "sequenceNumber": 1, "taxAmount": null, "preTaxAmount": null, "taxRate": null, "externalTransactionId": null, "nsu": null, "tid": "001", "acquirerNetwork": "CB", "taxRefundAmount": null, "userInfo": "JS Client", "paymentMethodTokenPreviouslyRegistered": null, "occurrenceType": "UNITAIRE", "archivalReferenceId": "L01494262901", "useCase": null, "wallet": null, "_type": "V4/TransactionDetails" }, "_type": "V4/PaymentTransaction" } ], "subMerchantDetails": null, "_type": "V4/Payment" } }
Retrouvez la description et l'intégralité des champs dans notre playground : Payment
Gestion des erreurs
Tableau des erreurs
Code | Description |
---|---|
INT_009 | Le format du champ amount est invalide ou le champ n'est pas transmis. |
INT_010 | Le format du champ currency est invalide ou le champ n'est pas transmis. |
INT_928 | Le format du champ installmentOptions.firstAmount est invalide ou le champ n'est pas transmis. |
INT_929 | Le paramètre installmentOptions.count est invalide. |
INT_930 | Le paramètre installmentOptions.period est invalide. |
INT_931 | Le paramètre installmentOptions.schedules[] est invalide. |
INT_932 | Le paramètre installmentOptions.schedules[date] est invalide. |
INT_933 | Le format du champ installmentOptions.schedules[amount] est invalide ou le champ n'est pas transmis. |
INT_945 | Problème de combinaison entre les champs d'un écheancier simple et avancé. |
PSP_519 | Devise inconnue. |
PSP_606 | Devise non supportée par le contrat. |
PSP_610 | Aucun des contrats associés a votre boutique ne peut être utilisé. Ex : la date de la première échéance est supérieure à 90 jours, lors de la création d'un échéancier avancé. |
PSP_1007 | La date d'expiration de l'ordre de paiement ne peut etre antérieure à la date courante ni excédée 90 jours. |
Analyse du résultat du paiement
Pour la première échéance
Pour connaître le résultat du paiement, implémentez l’URL de notification à la fin du paiement (également appelée IPN). L'utilisation du champ ipnTargetUrl
est déconseillé.
Pour les autres échéances
- Configurez la notification sur autorisation par batch.
Voir : Notification sur autorisation par batch.
Cette notification est indispensable pour obtenir le résultat d’un paiement différé :
- En cas de paiement accepté.
- En cas de paiement refusé.
- Analysez cette notification comme l'IPN : Procédure.
Plus spécifiquement, vérifiez :
- le statut de la transaction avec le champ
orderStatus
. La valeur PAID signifie que la transaction a été acceptée (voir : Cycle de vie d'une transaction), - le champ
sequenceType
valorisé àMULTI_PAYMENT
pour du paiement en plusieurs fois, - le champ
occurrenceType
pour identifier si la transaction fait partie d'une série de paiements (abonnement ou paiement en N fois).
Transmettre le numéro de commande
Pour transmettre le numéro de commande, utilisez le champ orderId :
{ "orderId" : "CX-1254" }
Transmettre les données de l'acheteur
Le marchand peut transmettre l'adresse de facturation et les coordonnées de l'acheteur (adresse e-mail, civilité, numéro de téléphone etc.).
Ces données seront:
- visibles dans le
Back Office Expert , dans le détail de la transaction (onglet Acheteur), - retournées dans l'IPN, sans modification.
Pour cela, utilisez le champ customer:
Exemple
{ "customer": { "reference":"C2383333540", "email" : " <sample@example.net>", "billingDetails" : { "category" : "PRIVATE", "title" : "M", "firstName" : "Laurent", "lastName" : "DURANT", "streetNumber" : "109", "address" : "rue de l'innovation", "zipCode" : "31670", "city" : "LABEGE", "country" : "FR", "phoneNumber" : "0123456789", "cellPhoneNumber" :"0623456789" } } }
Transmettre les données de livraison
Le marchand peut transmettre les données de livraison de l'acheteur (adresse, civilité, numéro de téléphone etc.).
Ces données seront:
- visibles dans le
Back Office Expert , dans le détail de la transaction (onglet Livraison), - retournées dans l'IPN, sans modification.
Exemple pour une livraison de type "Retrait en magasin"
L'adresse de livraison est celle du magasin.
L'adresse de facturation est différente de l'adresse de livraison.
Le nom du destinataire de la livraison est celui de l'adresse de facturation.
{ "customer": { "shippingDetails": { "shippingMethod": "RECLAIM_IN_SHOP", "shippingSpeed": "STANDARD", "streetNumber": "230", "address": "avenue des Champs Elysées", "zipCode": "59170", "city": "CROIX", "country": "FR", "firstName": "Marie-Charlotte", "lastName": "GRIMALDI", "phoneNumber": "0328386789" } } }
Exemple pour une livraison de type "point relais"
L'adresse de livraison est celle du point relais.
Le nom du point relais est transmis dans la deuxième ligne d'adresse de livraison.
L'adresse du point relais est transmise dans la première ligne d'adresse de livraison.
Le nom du destinataire est celui de l'adresse de facturation.
L'adresse de facturation est différente de l'adresse de livraison.
{ "customer": { "shippingDetails": { "shippingMethod": "RELAY_POINT", "shippingSpeed": "STANDARD", "streetNumber": "100", "address": "avenue du parc Barbieux", "zipCode": "59170", "city": "CROIX", "country": "FR", "firstName": "Martine", "lastName": "DURAND", "phoneNumber": "0328386789", "deliveryCompanyName":"Chronospost" } } }
Transmettre le contenu du panier
Lors de la création d'un paiement, le marchand peut transmettre le contenu du panier de l'acheteur.
Ces données seront visibles dans le
Pour celà, utilisez le champ cartItemInfo (tableau d'objets json) lors de l'appel au Web Service Charge/CreatePayment.
Exemple pour définir 2 articles dans le panier
{ "customer": { "shoppingCart": { "cartItemInfo": [ { "productRef": "myRef1", "productAmount": "1200", "productLabel": "myLabel1", "productQty" : "1" }, { "productRef": "myRef2", "productAmount": "2400", "productLabel": "myLabel2", "productQty" : "1" } ] } } }
Remarques:
- Le champ cartItemInfo est toujours retourné à vide dans la réponse.
- Pour que l'onglet Panier s'affiche correctement dans le
Back Office Expert , vous devez transmettre au minimum le champ productAmount de chaque produit.
Transmettre les données du sous-marchand
Le facilitateur de paiement peut transmettre les données du sous-marchand concerné par la transaction.
Ces données seront :
- visibles dans le
Back Office Expert , dans le détail de la transaction (onglet Sous-marchand), - retournées dans l’IPN, sans modification.
Le tableau décrit les champs communs disponibles avec les informations sur le sous-marchand.
Nom du champ | Format | Description |
---|---|---|
subMerchantDetails.address1 | ans..255 | Adresse du sous-marchand. Transmis par le facilitateur de paiement. |
subMerchantDetails.address2 | ans..255 | Complément de l'adresse du sous-marchand.Transmis par le facilitateur de paiement. |
subMerchantDetails.city | an..128 | Ville du sous-marchand. Transmis par le facilitateur de paiement. |
subMerchantDetails.companyType | ans..60 | Type de société du sous-marchand. Transmis par le facilitateur de paiement. |
subMerchantDetails.country | a2 | Code pays de l'adresse du sous-marchand (norme ISO 3166 alpha-2). Transmis par le facilitateur de paiement. |
subMerchantDetails.facilitatorId | ans..128 | Identifiant du facilitateur de paiement. Transmis par le facilitateur de paiement. |
subMerchantDetails.legalNumber | ans..24 | Numéro légal du sous-marchand. Transmis par le facilitateur de paiement. |
subMerchantDetails.mcc | n4 | Code MCC du sous-marchand. Transmis par le facilitateur de paiement. |
subMerchantDetails.mid | n..64 | Numéro de contrat (MID) du sous-marchand.Transmis par le facilitateur de paiement. |
subMerchantDetails.name | ans..255 | Raison sociale du sous-marchand. Transmis par le facilitateur de paiement. |
subMerchantDetails.phoneNumber | an..32 | Numéro de téléphone du sous-marchand. Transmis par le facilitateur de paiement. |
subMerchantDetails.softDescriptor | ans..255 | Libellé (soft descriptor) du sous-marchand qui apparaît sur le relevé d'opérations bancaires de l'acheteur.Transmis par le facilitateur de paiement. |
subMerchantDetails.state | ans..128 | Région de l'adresse du sous-marchand. Transmis par le facilitateur de paiement. |
subMerchantDetails.url | ans..128 | URL du sous-marchand. Transmis par le facilitateur de paiement. |
subMerchantDetails.zip | an..64 | Code postal du sous-marchand. Transmis par le facilitateur de paiement. |
Proposer l'enregistrement du moyen de paiement
Le marchand peut proposer à l'acheteur de faciliter ses achats en demandant l'enregistrement des données bancaires par la plateforme de paiement.
Grâce à cette opération, la plateforme de paiement attribue un jeton unique au moyen de paiement et le retourne au site marchand via le champ paymentMethodToken.
Ainsi lors de futurs achats, l'acheteur n'aura plus à saisir son moyen de paiement.
Cette solution apporte un niveau supplémentaire de sécurité aux paiements puisque seul transite le token utilisable uniquement par la plateforme de paiement.
Pour proposer à l'acheteur d'enregistrer son moyen de paiement au moment du paiement, utilisez le champ formAction avec la valeur ASK_REGISTER_PAY
{ "formAction" : "ASK_REGISTER_PAY", "customer": { "email": " <sample@example.net>" } }
Remarque
Le champ email devient obligatoire lors de l'enregistrement du moyen de paiement.
Lors de l'affichage du formulaire, une case à cocher apparaitra.
Par défaut, cette case est décochée.
Si l'acheteur accepte l'enregistrement de son moyen de paiement, il doit cocher la case.
Si le paiement est refusé, le moyen de paiement ne sera pas enregistré.
Forcer l'enregistrement du moyen de paiement
Si le marchand a avertit l'acheteur plus tôt dans le process d'achat, il peut "forcer" l'enregistrement du moyen de paiement sans afficher de case supplémentaire.
Pour celà, utilisez le champ formAction avec la valeur REGISTER_PAY:
{ "formAction" : "REGISTER_PAY", "customer": { "email": " <sample@example.net>" } }
Utiliser un moyen de paiement enregistré
Le marchand peut transmettre le token à débiter lors de l'initialisation du paiement.
Lors de l'affichage du formulaire, les champs kr-pan et kr-expiry seront automatiquement renseignés. L'acheteur n'aura plus qu'à saisir son code de sécurité (CVV) pour finaliser son achat.
Pour celà, il suffit de transmettre le token à débiter dans le champ paymentMethodToken et de valoriser le champ formAction à PAYMENT.
Cette valeur étant la valeur par défaut, le champ formAction n'est plus nécessaire.
{ "formAction" : "PAYMENT", "paymentMethodToken":"d3d9cc0d24a4400e9d123e9e1b8f1793", }
Utiliser un moyen de paiement enregistré sans afficher le formulaire embarqué
Ce mode permet de créer une transaction sans affichage du formulaire de paiement et sans authentification (appel de serveur à serveur).
{ "formAction" : "SILENT", "paymentMethodToken":"d3d9cc0d24a4400e9d123e9e1b8f1793", }
Remarque
- Ce cas d'utilisation n'utilise pas le client JavaScript, mais uniquement un appel serveur à serveur. Il n'y a pas de redirection vers l'url de retour spécifiée dans kr-post-url-success.
- La réponse ne contient pas de formToken mais directement un objet Transaction.
- Voir : Paiement 0 clic
Transmettre la préférence marchand
Utilisez le champ strongAuthentication (lien vers le playground : strongAuthentication).
Ce champ indique la préférence du marchand au sujet de l'authentification de l'acheteur.
- Sans interaction du porteur (frictionless).
- Avec interaction du porteur (authentification forte ou challenge).
- Pas de préférence du marchand.
Cas d'utilisation | Valeurs possibles |
---|---|
Avec interaction du porteur : Challenge |
|
| |
| |
Sans interaction du porteur : Frictionless | Avec l'option Frictionless 3DS2 :
Si la demande de Frictionless est acceptée, la transaction ne bénéficie pas du transfert de responsabilité en cas de contestation du porteur. Sans l'option Frictionless 3DS2, le choix de la préférence est délégué à l'émetteur de la carte (No Preference). |
Pas de préférence du marchand |
|
|
Tableau des exemptions pour le Frictionless (valeur DISABLED)
Exemption | Description |
---|---|
Transactions à faible montant | Pour les paiements en euro, vous pouvez demander
une exemption à l'authentification forte :
|
Safe'R by CB |
Le programme Safe'R by CB a pour objectif de répondre aux attentes des marchands à très faible risque et à la volumétrie importante (120.000 transactions CB / an). Vous pouvez demander une exemption à l'authentification forte : |
Augmenter les chances de frictionless en 3DS2
Transmettez ces données pour augmenter les chances de frictionless lors du paiement.
Liste des champs à transmettre
Paramètre | Description |
---|---|
customer.email | Adresse e-mail de l’acheteur |
customer.billingDetails.identityCode | Identifiant national. Permet d’identifier de façon unique chaque citoyen au sein d’un pays. CPF ou CNPJ au Brésil |
customer.billingDetails.streetNumber | Numéro de rue de l’adresse de facturation |
customer.billingDetails.address | Adresse postale |
customer.billingDetails.address2 | Deuxième ligne d'adresse |
customer.billingDetails.zipCode | Code postal |
customer.billingDetails.city | Ville |
customer.billingDetails.state | Etat / Région |
customer.billingDetails.country | Code pays suivant la norme ISO 3166 alpha-2 |
customer.billingDetails.phoneNumber | Numéro de téléphone |
customer.billingDetails.cellPhoneNumber | Numéro de téléphone mobile |
customer.shippingDetails.address | Adresse postale |
customer.shippingDetails.address2 | Deuxième ligne d’adresse |
customer.shippingDetails.zipCode | Code postal |
customer.shippingDetails.city | Ville |
customer.shippingDetails.state | Etat / Région |
customer.shippingDetails.country | Code pays suivant la norme ISO 3166 |
customer.shippingDetails.shippingMethod | Mode de livraison. |
customer.shippingDetails.shippingSpeed | Délai de livraison. |
Transmettre des données personnalisées
Lors de la création d'un paiement, le marchand peut transmettre des informations spécifiques à la plateforme de paiement pour répondre à des besoins métier.
Par exemple, transmettre un numéro de dossier, un numéro de contrat etc...
Ces informations seront :
- visibles dans le
Back Office Expert , dans le détail de la transaction (onglet Extras), - visibles dans l'e-mail de confirmation de paiement à destination du marchand,
- retournées dans l'URL de notification, sans modification.
Pour celà, utilisez les champs metadata (au format json) lors de l'appel au Web Service Charge/CreatePayment:
Exemple pour transmettre une donnée nommée "contract" et sa valeur:
{ "metadata": { "contract": "1245KL-78/ZE" } }
Surcharger l'URL de notification instantanée (déconseillé)
Vous pouvez surcharger l’URL de notification instantanée (également appelée IPN) dans le formulaire dans le cas où vous utilisez une seule boutique pour différents canaux de ventes, différentes typologies de paiement, différentes langues etc…
Cette fonctionnalité est incompatible avec l'exécution, depuis le
L’URL appelée sera celle configurée dans la règle de notification (voir chapitre Paramétrer les notifications).
Utilisez le champ ipnTargetUrl lors de l'initialisation du paiement pour surcharger l’URL de la page à notifier.
Si la valeur du champ ipnTargetUrl est erronée, le formulaire ne sera pas rejeté.
{ "ipnTargetUrl" : "<https://my.site/my-ipn>", }