3RI - Requestor-Initiated Authentication
Ce guide est destiné aux marchands PCI-DSS utilisant notre API pour réaliser les authentifications.
La version 2.2 du protocole 3-D Secure introduit les authentifications initiées par le marchand ou "3DS Requestor initiated (3RI) authentications".
3RI est utilisé notamment :
- lors du paiement d'une échéance d'un abonnement
- lors du paiement d'une énième échéance d'un paiement en plusieurs fois
- pour le paiement MOTO
Le cas d'utilisation est déterminé par la valeur des champs paymentSource
, useCase
et transactionInitiator
.
Voici quelques exemples d'utilisation de 3RI :
Cas d'utilisation | Étape du paiement | useCase | paymentSource | transactionInitiator |
---|---|---|---|---|
Abonnement à fréquence et montants fixes | Paiement d'une énième échéance | RECURRING_FIXED_TOTALAMOUNT | EC | MERCHANT |
Abonnement à fréquence et/ou montants variables | Paiement d'une énième échéance | RECURRING_ VARIABLE_TOTAL_AMOUNT | EC | MERCHANT |
Paiement en plusieurs fois | Paiement d'une énième échéance | INSTALLMENT | EC | MERCHANT |
Paiement par courrier | Paiement | PAYMENT | MAIL_ORDER | n/a |
Paiement par téléphone | Paiement | PAYMENT | TELEPHONE_ORDER | n/a |
Principe de fonctionnement
Le principe général s'applique aux authentifications "3RI".
Un seul appel au Web Service PCI/Charge/Authenticate est nécessaire, le marchand n'a pas d'instruction à traiter ni d'objet device
à transmettre.
Liste des champs relatifs à 3RI :
NOM | DESCRIPTION | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
amount | entier | Longueur : 1-12 | requis Montant de la transaction exprimé dans la plus petite fraction de la devise (par exemple : 30050 pour 30050 XPF). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
currency | chaine | Longueur : 3 | requis Code de la devise selon la norme ISO 4217 alpha-3 (par exemple : "XPF" pour le franc CFP). Valeurs possibles
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
productType | énumération | optionnel Type de produit concerné par la transaction. Valeurs possibles
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
transactionCategory | énumération | ignoré Catégorie de la transaction. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
paymentSource | énumération requis Source du paiement. Valeurs possibles
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
transactionInitiator | énumération | optionnel Initiateur de la transaction. Valeurs possibles
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
useCase | énumération | requis Cas d'utilisation de la transaction. Valeurs possibles
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
customer | objet JSON | requis Objet contenant les informations sur l'acheteur. Détails de l'objet
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
device | objet JSON | ignoré Objet contenant les informations sur le navigateur. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
paymentForm | objet JSON | requis Objet contenant les données de la carte. Détails de l'objet
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
protocolRequest | objet JSON | requis Objet contenant les informations sur le protocole d'authentification. Détails de l'objet
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
merchant | objet JSON | requis Objet contenant les informations sur le contrat. Détails de l'objet
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
recurring | objet JSON | optionnel Objet contenant les informations sur l'abonnement. Détails de l'objet
|
La réponse contient les données d'authentification utiles pour une future demande d'autorisation.
Cas d'utilisation
Abonnements
Étape 1 - Souscription à l'abonnement (porteur présent)
Appelez le Web Service PCI/Charge/Authenticate pour authentifier l'acheteur :
Fréquence et montants fixes | { "amount":"9990", "currency":"XPF", "recurring":{ "expiryDate": "2025-05-13", "frequency": { "unit": "DAY", "value": "30" } }, "transactionCategory":"PAYMENT", "productType":"GOODS_OR_SERVICE_PURCHASE", "merchant": { "mid":"9876357" }, "paymentForm": { "expiryMonth":"09", "expiryYear":"28", "networkPreference":"VISA", "pan":"4970110000000021" }, "device": { "acceptHeader":"text/html", "colorDepth":"32", "deviceType":"BROWSER", "ip":"69.89.31.226", "javaEnabled": true, "language":"FR", "screenHeight":"768", "screenWidth":"1258", "timeZoneOffset":"-120", "userAgent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101" }, "protocolRequest": { "name":"THREEDS", "version":"2", "challengePreference":"NO_PREFERENCE" } } |
Fréquence et/ou montants variables | { "amount":"9990", "currency":"XPF", "recurring":{ "expiryDate": "2025-05-13", "frequency": { "unit": "DAY", "value": "30" } }, "transactionCategory":"PAYMENT", "productType":"GOODS_OR_SERVICE_PURCHASE", "merchant": { "mid":"9876357" }, "paymentForm": { "expiryMonth":"09", "expiryYear":"28", "networkPreference":"VISA", "pan":"4970110000000021" }, "device": { "acceptHeader":"text/html", "colorDepth":"32", "deviceType":"BROWSER", "ip":"69.89.31.226", "javaEnabled": true, "language":"FR", "screenHeight":"768", "screenWidth":"1258", "timeZoneOffset":"-120", "userAgent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101" }, "protocolRequest": { "name":"THREEDS", "version":"2", "challengePreference":"NO_PREFERENCE" } } |
L'objet recurring
est requis pour définir la fréquence des échéances et la date de fin de l'abonnement.
Suivez le guide d'intégration du Web Service PCI/Charge/Authenticate pour le traitement des instructions et l'authentification du porteur.
Une fois le résultat final obtenu, vous pouvez procéder à la demande d'autorisation.
Étape 2 - Paiement des échéances (porteur non présent)
À chaque échéance, vous appelez le Web Service PCI/Charge/Authenticate pour demander une authentification 3RI.
L'objet recurring
est requis pour définir la fréquence des échéances et la date de fin de l'abonnement.
Vous devez transmettre les données de l'authentification, obtenues lors de la souscription de l'abonnement, dans l'objet previousAuthentication
:
Fréquence et montants fixes | { "amount":"9990", "currency":"XPF", "transactionInitiator": "MERCHANT", "useCase": "RECURRING_FIXED_TOTALAMOUNT", "recurring":{ "expiryDate": "2025-05-13", "frequency": { "unit": "DAY", "value": "30" } }, "productType":"GOODS_OR_SERVICE_PURCHASE", "merchant": { "mid":"9876357" }, "paymentForm": { "expiryMonth":"09", "expiryYear":"28", "networkPreference":"VISA", "pan":"4970110000000021" }, "customer": { "previousAuthentication": { "dsTransID":"18e46ff7-b882-4102-9af4-aef9f40ee6a6", "acsTransID":"410d9fb4-8db1-483e-9a80-f94c3a79017e", "dateTime": "2024-10-09T06:37:22+00:00", "effectiveAuthenticationType": "CHALLENGE" } }, "protocolRequest": { "name":"THREEDS", "version":"2" } } |
Fréquence et/ou montants variables | { "amount":"9990", "currency":"XPF", "transactionInitiator": "MERCHANT", "useCase": "RECURRING_VARIABLE_TOTAL_AMOUNT", "recurring":{ "expiryDate": "2025-05-13", "frequency": { "unit": "DAY", "value": "30" } }, "productType":"GOODS_OR_SERVICE_PURCHASE", "merchant": { "mid":"9876357" }, "paymentForm": { "expiryMonth":"09", "expiryYear":"28", "networkPreference":"VISA", "pan":"4970110000000021" }, "customer": { "previousAuthentication": { "dsTransID":"18e46ff7-b882-4102-9af4-aef9f40ee6a6", "acsTransID":"410d9fb4-8db1-483e-9a80-f94c3a79017e", "dateTime": "2024-10-09T06:37:22+00:00", "effectiveAuthenticationType": "CHALLENGE" } }, "protocolRequest": { "name":"THREEDS", "version":"2" } } |
La réponse contient les données d'authentification nécessaires à la demande d'autorisation pour le paiement de l'échéance.
Pour vous aider, voici une table de correspondance entre les données obtenues à l'étape 1 et les données requises à l'étape 2 :
Sortie étape 1 (porteur présent) | Entrée étape 2 (porteur non présent) |
---|---|
value.extension.dsTransID | customer.previousAuthentication.dsTransID |
value.extension.acsTransID | customer.previousAuthentication.acsTransID |
value.authenticationDateTime | customer.previousAuthentication.dateTime |
value.authenticationType | customer.previousAuthentication.effectiveAuthenticationType |
Paiements en plusieurs fois
Étape 1 : Paiement de la première échéance (porteur présent)
Appelez le Web Service PCI/Charge/Authenticate pour authentifier l'acheteur. L'authentification doit être demandée pour le montant total des échéances.
{ "amount":"12000", "currency":"XPF", "transactionCategory":"PAYMENT", "productType":"GOODS_OR_SERVICE_PURCHASE", "merchant": { "mid":"9876357" }, "paymentForm": { "expiryMonth":"09", "expiryYear":"28", "networkPreference":"VISA", "pan":"4970110000000021", "installmentNumber": "3" }, "device": { "acceptHeader":"text/html", "colorDepth":"32", "deviceType":"BROWSER", "ip":"69.89.31.226", "javaEnabled": true, "language":"FR", "screenHeight":"768", "screenWidth":"1258", "timeZoneOffset":"-120", "userAgent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101" }, "protocolRequest": { "name":"THREEDS", "version":"2", "challengePreference":"NO_PREFERENCE" } }
Dans cet exemple, le montant total des échéances est de 12000 XPF.
Le champ installmentNumber
est requis pour spécifier le nombre d'échéances (ex : "3" pour un paiement en 3 fois).
Suivez le guide d'intégration du Web Service PCI/Charge/Authenticate pour le traitement des instructions et l'authentification du porteur.
Une fois le résultat final obtenu, vous pouvez procéder à la demande d'autorisation pour le montant de la première échéance.
Étape 2 : Paiement d'une énième échéance (porteur non présent)
À chaque échéance, appelez le Web Service PCI/Charge/Authenticate pour demander une authentification 3RI pour le montant de l'échéance.
Vous devez transmettre les données de l'authentification obtenues lors du paiement de la première échéance, dans l'objet previousAuthentication
:
{ "amount":"4000", "currency":"XPF", "transactionInitiator": "MERCHANT", "useCase": "INSTALLMENT", "productType":"GOODS_OR_SERVICE_PURCHASE", "merchant": { "mid":"9876357" }, "paymentForm": { "expiryMonth":"09", "expiryYear":"28", "networkPreference":"VISA", "pan":"4970110000000021", "installmentNumber": "3" }, "customer": { "previousAuthentication": { "dsTransID":"18e46ff7-b882-4102-9af4-aef9f40ee6a6", "acsTransID":"410d9fb4-8db1-483e-9a80-f94c3a79017e", "dateTime": "2024-10-09T06:37:22+00:00", "effectiveAuthenticationType": "CHALLENGE" } }, "protocolRequest": { "name":"THREEDS", "version":"2" } }
Dans cet exemple, l'authentification est demandée pour un montant de 4000 XPF.
La réponse contient les données d'authentification nécessaires à la demande d'autorisation pour le paiement de l'échéance.
Pour vous aider, voici une table de correspondance entre les données obtenues à l'étape 1 et les données requises à l'étape 2 :
Sortie étape 1 (porteur présent) | Entrée étape 2 (porteur non présent) |
---|---|
value.extension.dsTransID | customer.previousAuthentication.dsTransID |
value.extension.acsTransID | customer.previousAuthentication.acsTransID |
value.authenticationDateTime | customer.previousAuthentication.dateTime |
value.authenticationType | customer.previousAuthentication.effectiveAuthenticationType |
Paiement MOTO
Appelez le Web Service PCI/Charge/Authenticate pour authentifier l'acheteur en précisant votre cas d'utilisation :
Paiement par téléphone | { "amount":"9990", "currency":"XPF", "paymentSource": "TELEPHONE_ORDER", "useCase": "PAYMENT", "productType":"GOODS_OR_SERVICE_PURCHASE", "merchant": { "mid":"9876357" }, "paymentForm": { "expiryMonth":"09", "expiryYear":"28", "networkPreference":"VISA", "pan":"4970110000000021" }, "protocolRequest": { "name":"THREEDS", "version":"2" } } |
Paiement par courrier | { "amount":"9990", "currency":"XPF", "paymentSource": "MAIL_ORDER", "useCase": "PAYMENT", "productType":"GOODS_OR_SERVICE_PURCHASE", "merchant": { "mid":"9876357" }, "paymentForm": { "expiryMonth":"09", "expiryYear":"28", "networkPreference":"VISA", "pan":"4970110000000021" }, "protocolRequest": { "name":"THREEDS", "version":"2" } } |
La réponse contient les données d'authentification nécessaires à la demande d'autorisation.