Menu

3DS 2.2 3RI

 PREREQUIS

  • Afin de réaliser une transaction en 3DS 2.0 3RI, il faut que l'utilisateur est déjà réalisé une transaction 3DS 2.0 avec une authentification BRW.
  • Une fois celle-ci effectuée, gardez l' acsTransId qui est envoyé, il faudra le passer dans threeDSReqPriorRef.

1)3DS AUTHENTICATION RI

  •    L'appel devra être adressé vers l’url suivante de l’API CentralPay : « 3ds2/authentication »
  •    L' acsTransId que vous avez gardez de l'authentification BRW doit être mit dans threeDSReqPriorRef.
  •    Si l’api vous retourne un statut de transaction (« transStatus ») à "Y" l'authentification 3RI est autorisé.
  •    Voici les valeurs possible de transStatus et leur signification :
    • Y = Vérification de l'authentification réussie.
    • N = Non authentifié /Compte non vérifié. Transaction refusée.
    • U = L'authentification/la vérification du compte n'a pas pu être effectuée. Problème technique ou autre, comme indiqué dans ARes ou RReq.
    • A = Traitement des tentatives effectué. Non authentifié/vérifié, mais une preuve de tentative d'authentification/vérification est fournie.  
    • C = Challenge requis. Une authentification supplémentaire est requise en utilisant le CReq/CRes.
    • D = Challenge requis. Authentification découplée confirmée.
    • R = Authentification/vérification du compte rejetée. l'émetteur rejette l'authentification/vérification et demande de ne pas tenter d'autorisation.
    • I = Information seulement. Reconnaissance de la préférence du demandeur pour le défi 3DS.

Exemple d'appel 3RI (curl code)  :


curl --location --request POST 'https://test-api.centralpay.net/v2/rest/3ds2/authentication' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Authorization: Basic ZG9jdGVzdDo0STlISlJUZA==' \
--data-urlencode 'customerId=aae4d8c0-a555-4c2f-bfdf-18d5636b78a4' \
--data-urlencode 'cardId=44d0691b-b117-4799-ba07-31e0b02c5b08' \
--data-urlencode 'pointOfSaleId=08960d92-874b-4447-800b-aaa53fa976f5' \
--data-urlencode 'deviceChannel=03' \
--data-urlencode 'messageCategory=02' \
--data-urlencode 'acctType=03' \
--data-urlencode 'cardExpiryDate=9999' \
--data-urlencode 'purchaseAmount=4880' \
--data-urlencode 'purchaseCurrency=978' \ 
--data-urlencode 'purchaseExponent=2' \
--data-urlencode 'purchaseDate=20230101122345' \
--data-urlencode 'recurringExpiry=20330101' \
--data-urlencode 'recurringFrequency=0' \
--data-urlencode 'chAccAgeInd=03' \
--data-urlencode 'chAccChange=20220901' \
--data-urlencode 'chAccDate=20220901' \
--data-urlencode 'email=support@centralpay.eu' \
--data-urlencode 'nbPurchaseAccount=2' \
--data-urlencode 'paymentAccAge=20221001' \
--data-urlencode 'paymentAccInd=03' \
--data-urlencode 'threeDSReqPriorAuthMethod=02' \
--data-urlencode 'threeDSReqPriorAuthTimestamp=202209010123' \
--data-urlencode 'threeDSReqPriorRef=7d031b8e-7fb7-4215-b866-eaacb395002f' \
--data-urlencode 'threeDSRequestorDecReqInd=N' \
--data-urlencode 'threeDSRequestorAuthenticationInd=02' \
--data-urlencode 'threeDSRequestorChallengeInd=02' \
--data-urlencode 'threeRIInd=01'

Explication de certains paramètres

  • deviceChannel 03 -> 3DS Requestor Initiated (3RI)
  • messageCategory 02 -> La valeur 02 force la transactions en 3RI.
  • purchaseAmount -> Montant de l'achat courant
  • purchaseCurrency -> Monnaie au format ISO
  • purchaseExponent  -> Unité mineur de la monnaie courante
  • purchaseDate  -> Date de l'achat
  • recurringExpiry  -> Date à laquelle il n'y aura plus d'autorisations qui pourront être effectuées
  • recurringFrequency  -> Nombre de jours minimums entres deux autorisations.
  • acctType -> Debit
  • chAccAgeInd -> Durée pendant laquelle le titulaire de la carte possède le compte auprès du demandeur 3DS. Les valeurs acceptées sont :
    • 01 -> Pas de compte
    • 02 -> Créé durant la transaction
    • 03 -> Moins de 30 jours
    • 04 -> Entre 30 et 60 jours
    • 05 -> Plus de 60 jours.
  • chAccChange -> Date à laquelle le compte du titulaire de la carte auprès du demandeur 3DS a été modifié pour la dernière fois. Format de la date = YYYYMMDD.
  • chAccDate -> Date à laquelle le titulaire de la carte a ouvert le compte auprès du demandeur 3DS. Format de la date = YYYYMMDD.
  • nbPurchaseAccount -> Nombre d'achats effectués avec ce compte de titulaire de carte au cours des six derniers mois.
  • paymentAccAge ->  Date à laquelle le compte de paiement a été inscrit sur le compte du titulaire de la carte auprès du demandeur 3DS.
  • paymentAccInd ->  Indique la durée pendant laquelle le compte de paiement a été inscrit sur le compte du titulaire de la carte auprès du demandeur 3DS. Les valeurs acceptées sont :
    • 01 -> Pas de compte
    • 02 -> Créé durant la transaction
    • 03 -> Moins de 30 jours
    • 04 -> Entre 30 et 60 jours
    • 05 -> Plus de 60 jours.
  • threeDSReqPriorAuthMethod 02 -> Vérification du porteur de carte effectué par l'ACS.
  • threeDSReqPriorAuthTimestamp -> Date et heure en UTC de l'authentification précédente. Le format de date accepté est YYYYMMDDHHMM.
  • threeDSReqPriorRef -> Le champ doit contenir la valeur "acsTransId" de la transaction 3DS BRW précédente.
  • threeDSRequestorDecReqInd N -> Ne pas utilisez l'authentification découplée.
  • threeDSRequestorAuthenticationInd 02 -> Transaction récurrente
  • threeDSRequestorChallengeInd 02 -> Pas de Challenge requis
  • threeRIInd 01 -> Transaction récurrente

Exemple de réponse :


    {
        "threeDSServerTransID": "67dc456c-6c7a-987f-92cf-f68752525d0c",
        "transStatus": "Y",
        "eci": "02",
        "contractId": "fb8736a5-8741-19b6-9d38-ec135888e0bf"
    }

2) Transaction

  • Les données suivantes sont nécessaire afin de valider une transaction en 3DS 2.0 :
    • 3ds[threeDSServerTransID] = threeDSServerTransID (ajouter le nouveau génerer par l'authentification 3RI)
    • 3ds[status] = transStatus
    • 3ds[eci] = eci
    • 3ds[xid] = Paramètre Custom destiné au marchands.
  • Lors d'une transaction en 3RI, il ne faut pas envoyer le 3ds[cavv].

Exemple d'une transaction 3DS 2.0 :


curl --location --request POST 'https://test-api.centralpay.net/v2/rest/transaction' \
--header 'Origin: https://example.centralpay.net' \
--header 'Authorization: Basic ZG9jdGVzdDo0STlISlJUZA==' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'currency=EUR' \
--data-urlencode 'amount=1500' \
--data-urlencode 'endUserIp=9.64.32.8' \
--data-urlencode 'endUserLanguage=ita' \
--data-urlencode 'merchantTransactionId=cpcg_12654de89ce44' \
--data-urlencode 'pointOfSaleId=1beb8574-cf4c-4b12-b065-d12b3f0eaa90' \
--data-urlencode 'browserUserAgent=Mozilla/5.0 (iPhone; CPU iPhone OS 16_1_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.1 Mobile/15E148 Safari/604.1' \
--data-urlencode 'browserAcceptLanguage=it_IT' \
--data-urlencode 'paymentRequestBreakdownId=5485d7e6-60c3-753c-94d3-682eaaf9ae6e' \
--data-urlencode 'email=support@centralpay.eu' \
--data-urlencode 'receiptEmail=support@centralpay.eu' \
--data-urlencode 'capture=true' \
--data-urlencode 'customerId=aae4d8c0-a555-4c2f-bfdf-18d5636b78a4' \ 
--data-urlencode 'cardId=44d0691b-b117-4799-ba07-31e0b02c5b08' \
--data-urlencode 'order[cardholderEmail]=support@centralpay.eu' \
--data-urlencode 'order[firstName]=John' \
--data-urlencode 'order[lastName]=Doe' \
--data-urlencode 'source=EC' \
--data-urlencode '3ds[xid]=35876533346561303461' \
--data-urlencode '3ds[eci]=02' \
--data-urlencode '3ds[status]=Y' \
--data-urlencode '3ds[threeDSServerTransID]=67dc456c-6c7a-987f-92cf-f68752525d0c'