Montant découplé
Introduction
L'introduction des directives SCA vous impose de relever de nouveaux défis, mais vous offre également de nouvelles opportunités.
L'une d'elles est la possibilité de traiter des montants différents lors de l'authentification (le contrôle 3-D Secure) et de l'autorisation (le paiement effectif). En le combinant avec notre fonctionnalité de tokenisation, les deux étapes peuvent se produire à différents moments, vous permettant de :
- Expéditions différées/partiellement fractionnées : Vous souhaitez offrir à vos clients des biens/services pour une période d'essai. Alternativement, certains biens/services ne sont pas disponibles au moment de la commande. Finalisez/facturez la livraison à un moment ultérieur – mais vos clients n'auront pas besoin de visiter votre magasin et de s'authentifier à nouveau !
- Augmenter un montant autorisé : Vous souhaitez ajouter une marge à un montant de base, car le montant final que vous voulez facturer est soit égal, soit supérieur au moment de la commande. Pensez au cas d'une réservation de chambre d'hôtel à l'avance, mais vous devez facturer plus sur la facture finale en raison de services supplémentaires pendant le séjour. Il n'y a pas besoin d'une transaction supplémentaire pour couvrir cette marge : authentifiez simplement la commande pour le montant maximum (montant de base + marge) et facturez entre le montant final dans la limite du montant authentifié.
En tokenisant la carte de vos clients lors de la première étape (l'authentification), vous pouvez compléter la transaction lors de la deuxième étape (le paiement effectif) pour l'un ou l'autre cas d'utilisation.
Le Montant découplé est disponible pour les méthodes de paiement suivantes :
- American Express
- MasterCard
- Visa
via la méthode d'intégration Server-to-server.
CInématique de paiement
- Votre client va sur votre page de paiement et saisit ses données carte pour finaliser l'achat.
- Vous envoyez la première requête CreatePayment à notre plateforme, incluant les propriétés obligatoires 3-D Secure. Selon le cas d'utilisation, des différences s'appliquent :
Cas d'utilisation "Expéditions différées/partiellement fractionnées"
Cas d'utilisation "Augmenter un montant autorisé" - Notre plateforme envoie une réponse contenant un objet merchantAction, vous demandant de déployer le 3-D Secure.
- Vous redirigez le client vers sa banque émettrice à l'redirectUrl. Les titulaires de cartes s'identifient.
- Nous soumettons la transaction financière réelle à l'acquéreur pour la traiter. Vous délivrez les biens/services.
- À un moment ultérieur, vous envoyez la deuxième requête CreatePayment à notre plateforme pour finaliser la transaction. Selon le cas d'utilisation, des différences s'appliquent :
Cas d'utilisation "Expéditions différées/partiellement fractionnées"
Cas d'utilisation "Augmenter un montant autorisé" - En sautant le 3-D Secure, nous soumettons la transaction financière réelle à l'acquéreur pour la traiter.
Intégration
Pour utiliser cette fonctionnalité, vous devez inclure des propriétés supplémentaires à votre requête.
Selon le cas d'utilisation et laquelle des deux étapes dans la cinématique de paiement que vous souhaitez effectuer, des différences s'appliquent :
Première requête
Deuxième requête
Effectuer la première requête pour les expéditions différées/partiellement fractionnées
Ajoutez les propriétés suivantes à une requête standard CreatePayment (y compris les propriétés 3-D Secure obligatoires) :
{
"Cardpaymentmethodspecificinput": {
"Paymentproductid": XXX,
"Threedsecure": {
"Authenticationamount": 27530
},
"Requiresapproval": true,
"Skipauthentication": false,
"Tokenize": true,
"Unscheduledcardonfilerequestor": "cardholderinitiated",
"Unscheduledcardonfilesequenceindicator": "first",
"Card": {
"Cvv": "451",
"Cardnumber": "4330264936344675",
"Expirydate": "1225",
"Cardholdername": "wile e. Coyote"
},
"Isrecurring": false,
"Transactionchannel": "ecommerce"
},
"Order": {
"Amountofmoney": {
"Currencycode": "eur",
"Amount": 0
},
"Customer": {
"Billingaddress": {
"Countrycode": "nl"
},
"device": {
"acceptHeader": "texthtml,application/xhtml+xml,application/
xml;q=0.9,/;q=0.8",
"ipAddress": "77.67.63.226",
"locale": "es",
"timezoneOffsetUtcMinutes": "-120",
"userAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36",
"browserData": {
"colorDepth": "32",
"javaEnabled": "true",
"screenHeight": "600",
"screenWidth": "400"
}
}
}
},
"References": {
"Merchantorderid": 123456,
"Merchantreference": "ogpc8xjurfpfitba6orrpkbupogpvd"
}
}
Propriétés | Remarques |
---|---|
order.amountOfMoney.amount |
Définir à "0" |
cardPaymentMethodSpecificInput |
threeDSecure.authenticationAmount : Le montant total que vous souhaitez facturer lors de la finalisation de la commande à la deuxième étape. unscheduledCardOnFileRequestor : Définir sur "cardholderinitiated" pour indiquer que vos clients initient cette transaction. unscheduledCardOnFileSequenceIndicator : Régler sur "first" pour indiquer qu'il s'agit de la première étape de cette transaction. |
Effectuer la première requête pour augmenter un montant autorisé
Ajoutez les propriétés suivantes à une requête standard CreatePayment (y compris les propriétés 3-D Secure obligatoires) :
{
"Cardpaymentmethodspecificinput": {
"Paymentproductid": XXX,
"Threedsecure": {
"Authenticationamount": 1200
},
"Requiresapproval": true,
"Tokenize": true,
"Unscheduledcardonfilerequestor": "cardholderinitiated",
"Unscheduledcardonfilesequenceindicator": "first",
"Card": {
"Cvv": "451",
"Cardnumber": "4330264936344675",
"Expirydate": "1225",
"Cardholdername": "wile e. Coyote"
},
"Isrecurring": false,
"Transactionchannel": "ecommerce"
},
"Order": {
"Amountofmoney": {
"Currencycode": "eur",
"Amount": 1000
},
"Customer": {
"Billingaddress": {
"Countrycode": "nl"
},
"device": {
"acceptHeader": "texthtml,application/xhtml+xml,application/
xml;q=0.9,/;q=0.8",
"ipAddress": "77.67.63.226",
"locale": "es",
"timezoneOffsetUtcMinutes": "-120",
"userAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36",
"browserData": {
"colorDepth": "32",
"javaEnabled": "true",
"screenHeight": "600",
"screenWidth": "400"
}
}
}
},
"References": {
"Merchantorderid": 123456,
"Merchantreference": "ogpc8xjurfpfitba6orrpkbupogpvd"
}
}
Propriétés | Remarques |
---|---|
order.amountOfMoney.amount |
Le montant de base minimum que vous souhaitez facturer lors de la finalisation de la commande à la deuxième étape. |
cardPaymentMethodSpecificInput |
threeDSecure.authenticationAmount : Le montant de base minimum + la marge. unscheduledCardOnFileRequestor : Régler sur "cardholderinitiated" pour indiquer que vos clients initient cette transaction. unscheduledCardOnFileSequenceIndicator : Régler sur "first" pour indiquer qu'il s'agit de la première étape de cette transaction. |
Effectuer la deuxième requête pour les expéditions différées/partiellement fractionnées
Ajoutez les propriétés suivantes à une requête standard CreatePayment :
{
"cardPaymentMethodSpecificInput": {
"PaymentProductId": XXX,
"ThreeDSecure": {
"RequiresApproval": true,
"SkipAuthentication": true,
"SkipFraudService": true,
},
"token": "f5a1bf4d98b141109d331b2b224212e0",
"unscheduledCardOnFileRequestor": "merchantInitiated",
"unscheduledCardOnFileSequenceIndicator": "subsequent",
"isRecurring": false,
"paymentProductId": 1,
"transactionChannel": "ECOMMERCE",
},
"order": {
"amountOfMoney": {
"currencyCode": "EUR",
"amount": 2753
},
"customer": {
"billingAddress": {
"countryCode": "NL"
}
},
}
}
Propriétés | Remarques |
---|---|
order.amountOfMoney.amount |
Le montant total que vous souhaitez facturer (égal à cardPaymentMethodSpecificInput.threeDSecure. authenticationAmount tel qu'envoyé à la première étape). |
cardPaymentMethodSpecificInput |
token : Réglez sur la valeur reçue dans notre réponse à la première étape. unscheduledCardOnFileRequestor : Réglez sur "merchantinitiated" pour indiquer qu'il s'agit de la deuxième étape de cette transaction. unscheduledCardOnFileSequenceIndicator : Réglez sur "subsequent" pour indiquer qu'il s'agit de la deuxième étape de cette transaction. |
Effectuer la deuxième requête pour augmenter un montant autorisé
Ajoutez les propriétés suivantes à une requête standard CreatePayment :
{
"cardPaymentMethodSpecificInput": {
"PaymentProductId": XXX,
"ThreeDSecure": {
"RequiresApproval": true,
"SkipAuthentication": true,
"SkipFraudService": true,
},
"token": "f5a1bf4d98b141109d331b2b224212e0",
"unscheduledCardOnFileRequestor": "merchantInitiated",
"unscheduledCardOnFileSequenceIndicator": "subsequent",
"isRecurring": false,
"paymentProductId": 1,
"transactionChannel": "ECOMMERCE",
},
"order": {
"amountOfMoney": {
"currencyCode": "EUR",
"amount": 200
},
"customer": {
"billingAddress": {
"countryCode": "NL"
}
},
}
}
Propriétés | Remarques |
---|---|
order.amountOfMoney.amount |
Un montant entre le minimum de base (égal à order.amountOfMoney.amount tel qu'envoyé à la première étape) et le montant maximum (égal à cardPaymentMethodSpecificInput.threeDSecure.authenticationAmount tel qu'envoyé à la première étape.
|
cardPaymentMethodSpecificInput |
token : Régler sur la valeur reçue dans notre réponse à la première étape. unscheduledCardOnFileRequestor : Régler sur "merchantinitiated" pour indiquer qu'il s'agit de la deuxième étape de cette transaction. unscheduledCardOnFileSequenceIndicator : Régler sur "subsequent" pour indiquer qu'il s'agit de la deuxième étape de cette transaction. |