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 is used in particular:
- when paying an installment of a subscription
- when paying a later installment of a payment in installments
- for the MOTO payment
Le cas d'utilisation est déterminé par la valeur des champspaymentSource
,useCase
andtransactionInitiator
.
Voici quelques exemples d'utilisation de 3RI :
Use cases | Payment stages | useCase | paymentSource | transactionInitiator |
---|---|---|---|---|
Abonnement à fréquence et montants fixes | Payment of an nth installment | RECURRING_FIXED_TOTALAMOUNT | EC | MERCHANT |
Abonnement à fréquence et/ou montants variables | Payment of an nth installment | RECURRING_ VARIABLE_TOTAL_AMOUNT | EC | MERCHANT |
Payment in installments | Payment of an nth installment | INSTALLMENT | EC | MERCHANT |
Payment by post | Payment | PAYMENT | MAIL_ORDER | n/a |
Payment by phone | Payment | PAYMENT | TELEPHONE_ORDER | n/a |
Operating principle
Le principe général s'applique aux authentifications "3RI".
A single call to the Web ServicePCI/Charge/Authenticateis all that's needed, and the merchant has no instructions to process or objectsdevice
to transmit.
List of fields relating to3RI:
name | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
amount | Integer| Longueur : 1-12 |required Montant de la transaction exprimé dans la plus petite fraction de la devise (par exemple : 30050 pour 30050 XPF). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
currency | String| Longueur : 3 |required Code de la devise selon la norme ISO 4217 alpha-3 (par exemple : "XPF" pour le franc CFP). Possible values
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
productType | énumération|Optional Product type for which the transaction is made. Possible values
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
transactionCategory | énumération|ignoré Catégorie de la transaction. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
paymentSource | énumération required Source du paiement. Possible values
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
transactionInitiator | énumération|Optional Initiateur de la transaction. Possible values
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
useCase | énumération|required Cas d'utilisation de la transaction. Possible values
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
customer | objet JSON|required 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|required Object containing the card data. Détails de l'objet
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
protocolRequest | objet JSON|required Objet contenant les informations sur le protocole d'authentification. Détails de l'objet
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
merchant | objet JSON|required Object containing information about the contract. Détails de l'objet
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
recurring | objet JSON|Optional Objet contenant les informations sur l'abonnement. Détails de l'objet
|
The response contains authentication data for future authorization requests.
Use cases
Recurring payments
Step 1 - Subscription to the plan (cardholder present)
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.
Once the final result has been obtained, you can proceed with the authorization request.
Step 2 - Payment of installments (cardholder not present)
À 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" } } |
The response contains the authentication data required for requesting authorization for the installment payment.
To help you, here is a table of correspondence between the data obtained in step 1 and the data required in step 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 |
Payments in installments
Step 1: Payment of the first installment (cardholder present)
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.
Once the final result has been obtained, you can proceed with the authorization request for the amount of the first installment.
Step 2: Payment of a subsequent installment (cardholder not present)
À 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.
The response contains the authentication data required for requesting authorization for the installment payment.
To help you, here is a table of correspondence between the data obtained in step 1 and the data required in step 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 |
MOTO payment
Appelez le Web Service PCI/Charge/Authenticate pour authentifier l'acheteur en précisant votre cas d'utilisation :
Payment by 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" } } |
Payment by post | { "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" } } |
The response contains the authentication data required for the authorization request.