- Directives d'intégration
- Fonctionnalités prises en charge (Sécurité)
- Authentification du payeur RuPay
- Implémentation de l'authentification RuPay à l'aide de l'API d'authentification
Implémentation de l'authentification RuPay à l'aide de l'API d'authentification
Cette page décrit l'intégration de la passerelle pour utiliser l'authentification RuPay à l'aide de l'API d'authentification.
Flux d'authentification RuPay
Le diagramme ci-dessous illustre le flux d'authentification pour un paiement pour lequel le payeur est authentifié à l'aide de RuPay PaySecure.
Le flux pour une authentification RuPay réussie est le suivant :
- Un payeur navigue sur le site de votre magasin, sélectionne un ou plusieurs produits, accède à la page de paiement et choisit de payer avec une carte RuPay qui prend en charge RuPay PaySecure.
- Initiate Authentication (Initier l'authentification) : vous demandez à la passerelle de vérifier auprès de RuPay PaySecure si la carte est éligible pour l'authentification par le payeur RuPay.
- Si l'authentification RuPay du payeur est disponible, la passerelle retourne les détails de l'authentification dans la réponse.
- Authenticate Payer (Authentifier le payeur) : vous demandez à la passerelle d'effectuer l'authentification initiée. Appelez cette opération lorsque le payeur clique sur le bouton « Payer maintenant » sur la page de paiement.
- La passerelle retourne l'URL de redirection et l'ID de transaction d'authentification RuPay obtenue auprès de RuPay PaySecure dans la réponse Authenticate Payer (Authentifier le payeur).
- Vous redirigez le navigateur Web du payeur vers l'émetteur, où le payeur valide son mot de passe à usage unique. L'émetteur retourne le résultat de l'authentification à la passerelle. La passerelle redirige le payeur directement sur votre site Web.
- Utilisez l'ID de transaction d'authentification RuPay dans une opération de paiement : vous soumettez le paiement pour traitement.
- Vous affichez la page de confirmation de commande au payeur.
Intégration pour utiliser l'authentification du payeur RuPay
Cette rubrique explique comment intégrer la passerelle pour une utilisation de l'authentification du payeur RuPay.
Étape 1 : Initier l'authentification
L'opération Initiate Authentication (Initier l'authentification) est utilisée pour déterminer si l'authentification du payeur RuPay est disponible pour le commerçant pour une carte donnée. Si le type de carte est RuPay, la passerelle détermine l'éligibilité du BIN de la carte RuPay pour les transactions de commerce électronique.
Référence de l'API Initiate Authentication (Initier l'authentification) [REST] [NVP]
Vous pouvez initier l'authentification RuPay en renseignant les champs suivants dans la demande Initiate Authentication (Initier l'authentification) :
- session.id ou sourceOfFunds.provided.card ou sourceOfFunds.token : détails de la carte utilisée pour le paiement.
- order.currency : devise de la commande.
- transaction.id : identifiant unique de cette authentification de paiement.
- order.id : identifiant unique de cette commande.
Si l'authentification du payeur RuPay est disponible, la passerelle retourne authentification.version = RUPAY
, et les champs suivants :
response.gatewayCode
transaction.authenticationStatus
: fournit plus de détails sur le statut d'authentification.result
response.gatewayRecommendation
Pour déterminer l'étape suivante, vérifiez la recommandation de la passerelle fournie dans le champ response.gatewayRecommendation.
response.gatewayRecommendation |
Étape suivante |
---|---|
PROCEED | Vous pouvez procéder à l'authentification du payeur en utilisant l'opération Authenticate Payer (Authentifier le payeur). |
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | Demandez au payeur d'autres détails de paiement (par exemple, une nouvelle carte ou un autre mode de paiement) et soumettez à nouveau la demande avec les nouveaux détails. Ne soumettez pas à nouveau la même demande. |
Le tableau suivant présente la réponse Initiate Authentication (Initier l'authentification) pour les différents scénarios d'authentification RuPay.
État | response.gatewayRecommendation |
transaction.authenticationStatus |
response.gatewayCode |
result |
---|---|---|---|---|
|
PROCEED | AUTHENTICATION_AVAILABLE | AUTHENTICATION_IN_PROGRESS | SUCCESS |
|
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | AUTHENTICATION_NOT_SUPPORTED | DECLINED | FAILURE |
|
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | AUTHENTICATION_UNAVAILABLE | DECLINED | FAILURE |
|
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | AUTHENTICATION_NOT_SUPPORTED | DECLINED | FAILURE |
|
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | AUTHENTICATION_UNAVAILABLE | DECLINED | FAILURE |
URL | https://ap-gateway.mastercard.com/api/rest/version/72/merchant/{merchantId}/order/{orderid}/transaction/{RuPayAuthId} |
Méthode HTTP | PUT |
{ "apiOperation": "INITIATE_AUTHENTICATION", "order": { "currency": "INR" }, "sourceOfFunds": { "provided": { "card": { "number": "6074829900004946" } } } }
{ "authentication": { "version": "RUPAY" }, "merchant": "TESTMERCHANT", "order": { "authenticationStatus": "AUTHENTICATION_AVAILABLE", "creationTime": "2019-06-12T07:42:39.070Z", "currency": "INR", "id": "802014086", "merchantCategoryCode": "5411", "status": "AUTHENTICATION_INITIATED", "totalAuthorizedAmount": 0, "totalCapturedAmount": 0, "totalRefundedAmount": 0 }, "response": { "gatewayCode": "AUTHENTICATION_IN_PROGRESS", "gatewayRecommendation": "PROCEED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "number": "607484xxxxxx4936", "scheme": "RUPAY" } }, "type": "CARD" }, "timeOfRecord": "2019-06-12T07:42:39.070Z", "transaction": { "amount": 0, "authenticationStatus": "AUTHENTICATION_AVAILABLE", "currency": "INR", "id": "8286737", "type": "AUTHENTICATION" }, "version": "72" }
Étape 2 : Authentifier le payeur
Lorsque la réponse Initiate Authentication (Initier l'authentification) a indiqué que l'authentification était disponible (authentification.version = RUPAY) pour la carte RuPay, vous pouvez soumettre la demande Authenticate Payer (Authentifier le payeur). Vous devez appeler cette opération lorsque le payeur clique sur le bouton « Payer maintenant » sur la page de paiement.
L'opération Authenticate Payer (Authentifier le payeur) échange en toute sécurité les informations nécessaires, y compris le numéro de carte, entre la banque acquéreuse et RuPay PaySecure. PaySecure retourne un ID de transaction unique (tran_ID), qui peut être utilisé dans les opérations Authorization (Autorisation) ou Pay (Payer) ultérieures.
Référence de l'API Authenticate Payer (Authentifier le payeur) [REST] [NVP]
Vous devez soumettre cette opération en renseignant les champs obligatoires suivants :
- order.id : même order.id que dans l'opération Initiate Authentication (Initier l'authentification) précédente.
- transaction.id : même transaction.id que dans l'opération Initiate Authentication (Initier l'authentification) précédente.
- order.amount : montant total de la commande.
- order.currency : Devise de la commande.
- session.id ou sourceOfFunds.provided.card ou sourceOfFunds.token : détails de la carte utilisée pour le paiement.
- authentication.redirectResponseUrl : URL vers laquelle vous souhaitez rediriger le payeur après avoir terminé le processus d'authentification du payeur.
- device.browserDetails.acceptHeaders : contenu du champ d'en-tête de la demande Accept (Accepter) tel qu'il a été envoyé depuis le navigateur du payeur. Ceci est utilisé pour déterminer les types de contenu pris en charge par le navigateur.
- device.ipAddress : L'adresse IP de l'appareil utilisé par le payeur, au format IPv4 nnn.nnn.nnn.nnn. Le format IPv6 n'est pas pris en charge.
La demande Authenticate Payer (Authentifier le payeur) retourne les champs suivants :
response.gatewayCode
transaction.authenticationStatus
: fournit plus de détails sur le statut d'authentification.authentication.payerInteraction
: indique si l'interaction du payeur a été utilisée pour compléter le processus d'authentification.result
authentication.redirect.html
: code pour créer l'interface utilisateur d'authentification. Écrivez ce contenu dans un élément vide <DIV> étant le dernier élément de la rubrique <BODY> de votre page de paiement.response.gatewayRecommendation
Pour déterminer l'étape suivante, vérifiez la recommandation de la passerelle fournie dans le champ response.gatewayRecommendation.
response.gatewayRecommendation |
Étape suivante |
---|---|
PROCEED | Vous pouvez terminer le processus d'authentification en permettant au payeur de répondre à l'authentification par mot de passe à usage unique demandée par l'émetteur. |
DO_NOT_PROCEED_ABANDON_ORDER | Ne soumettez pas la même demande à nouveau. Le prestataire de services de paiement, le système ou l'émetteur vous demande d'abandonner la commande. |
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | Demandez au payeur d'autres détails de paiement (par exemple, une nouvelle carte ou un autre mode de paiement) et soumettez à nouveau la demande avec les nouveaux détails. Ne soumettez pas à nouveau la même demande. |
Si la passerelle vous recommande PROCEED
, collez le contenu du champ de réponse authentication.redirect.html
sur la page affichée au payeur.
Le tableau suivant présente la réponse Initiate Authentication (Initier l'authentification) pour les différents scénarios d'authentification RuPay.
État | response.gatewayRecommendation |
transaction.authenticationStatus |
authentication.payerInteraction |
response.gatewayCode |
result |
---|---|---|---|---|---|
|
PROCEED | AUTHENTICATION_PENDING | REQUIRED | PENDING | PENDING |
|
DO_NOT_PROCEED_ABANDON_ORDER | AUTHENTICATION_REJECTED | NOT_REQUIRED | DECLINED | FAILURE |
|
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | AUTHENTICATION_UNAVAILABLE | NOT_POSSIBLE | DECLINED | FAILURE |
|
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | AUTHENTICATION_UNAVAILABLE | NOT_POSSIBLE | DECLINED | FAILURE |
|
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | AUTHENTICATION_UNAVAILABLE | NOT_POSSIBLE | DECLINED | FAILURE |
|
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | AUTHENTICATION_UNAVAILABLE | NOT_POSSIBLE | DECLINED | FAILURE |
Authentification par mot de passe à usage unique
La passerelle redirige le navigateur du payeur vers l'UI de validation du mot de passe à usage unique de l'émetteur (en utilisant authentication.redirect.html
) où le payeur sera invité à entrer un mot de passe à usage unique valide, après quoi le payeur sera redirigé vers votre site Web. Les champs suivants sont retournés dans le rappel, une fois que le navigateur du payeur a été redirigé sur votre site Web.
- order.id
- transaction.id
- result
- response.gatewayRecommendation
Vous pouvez déterminer le résultat de l'authentification à l'aide de la valeur retournée dans le champ response.gatewayRecommendation
.
response.gatewayRecommendation |
Étape suivante |
---|---|
PROCEED | Vous pouvez procéder au paiement car l'authentification a été accordée. Si l'autorisation de paiement a réussi, procédez à la collecte des fonds et, le cas échéant, expédiez les marchandises. |
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | Demandez au payeur d'autres détails de paiement (par exemple, une nouvelle carte ou un autre mode de paiement) et soumettez à nouveau la demande avec les nouveaux détails. Ne soumettez pas à nouveau la même demande. |
La passerelle met à jour les champs de la réponse Authentication Payer (Authentification du payeur) après avoir récupéré les résultats de l'authentification par mot de passe à usage unique.
État | response.gatewayRecommendation |
transaction.authenticationStatus |
authentication.payerInteraction |
response.gatewayCode |
result |
---|---|---|---|---|---|
|
PROCEED | AUTHENTICATION_SUCCESSFUL | REQUIRED | APPROVED | SUCCESS |
|
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | AUTHENTICATION_FAILED | REQUIRED | DECLINED | FAILURE |
URL | https://ap-gateway.mastercard.com/api/rest/version/72/merchant/{merchantId}/order/{orderid}/transaction/{RuPayAuthId} |
Méthode HTTP | PUT |
{ "apiOperation": "AUTHENTICATE_PAYER", "order": { "amount": "33.00", "currency": "INR" }, "sourceOfFunds": { "provided": { "card": { "number": "6074849900004936", "expiry": { "month": "01", "year": "39" }, "securityCode": "111" } } }, "device": { "ipAddress": "103.14.160.193", "browser": "MOZILLA/4.0 (COMPATIBLE; MSIE 5.0; WINDOWS 95)", "browserDetails": { "acceptHeaders": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" } }, "authentication": { "redirectResponseUrl": "<host>/merchantSimulator/jsp/simple/output.jsp" } }
{ "authentication": { "method": "DYNAMIC", "payerInteraction": "REQUIRED", "redirectHtml": "document.getElementById('redirectToNpciForm').submit();", "version": "RUPAY" }, "merchant": "TESTMERCHANT", "order": { "authenticationStatus": "AUTHENTICATION_PENDING", "creationTime": "2019-06-12T07:53:52.190Z", "currency": "INR", "id": "983684879", "merchantCategoryCode": "5411", "status": "AUTHENTICATION_INITIATED", "totalAuthorizedAmount": 0, "totalCapturedAmount": 0, "totalRefundedAmount": 0 }, "response": { "gatewayCode": "PENDING", "gatewayRecommendation": "PROCEED" }, "result": "PENDING", "sourceOfFunds": { "provided": { "card": { "expiry": { "month": "1", "year": "39" }, "number": "607484xxxxxx4936", "scheme": "RUPAY" } }, "type": "CARD" }, "timeOfRecord": "2019-06-12T07:53:52.190Z", "transaction": { "acquirer": { "merchantId": "TESTMERCHANT" }, "amount": 33, "authenticationStatus": "AUTHENTICATION_PENDING", "currency": "INR", "id": "745991098", "type": "AUTHENTICATION" }, "version": "72" }
Étape 3 : Utiliser les résultats de l'authentification dans une opération de paiement
Lorsque le résultat de l'opération Authenticate Payer (Authentifier le payeur) indique que vous pouvez poursuivre le paiement (response.gatewayRecommendation=PROCEED), vous pouvez initier une opération Authorize (Autoriser) ou Pay (Payer). En plus des champs standard, vous devez renseigner les champs suivants :
- order.id : indiquez la valeur du champ order.id que vous avez fournie dans les opérations Initiate Authentication (Initier l'authentification) et Authenticate Payer (Authentifier le payeur).
- authentication.transactionId : indiquez la valeur du champ transaction.id que vous avez fournie dans les opérations Initiate Authentication (Initier l'authentification) et Authenticate Payer (Authentifier le payeur). Il est inutile d'inclure des champs du groupe de paramètres d'authentification, car la passerelle utilise le champ authentication.transactionId pour rechercher les résultats de l'authentification stockés lorsque vous lui demandez d'effectuer une authentification. La passerelle transmet les informations demandées à l'acquéreur.
Référence de l'API Authentication Transaction ID (ID de transaction d'authentification) [REST] [NVP]
URL | https://ap-gateway.mastercard.com/api/rest/version/72/merchant/{merchantId}/order/{orderid}/transaction/{transactionid} |
Méthode HTTP | PUT |
{ "apiOperation":"PAY", "order":{ "amount":"100", "currency":"INR" }, "sourceOfFunds":{ "provided":{ "card":{ "expiry":{ "month":"01", "year":"39" }, "number":"6074819900004939", "securityCode":"111" } }, "type":"CARD" }, "authentication": { "transactionId":"8286737" } }
{ "authentication": { "transactionId": "471707320" }, "authorizationResponse": { "transactionIdentifier": "500000000000000000000002347854" }, "gatewayEntryPoint": "WEB_SERVICES_API", "merchant": "TESTMERCHANT", "order": { "amount": 100.00, "chargeback": { "amount": 0, "currency": "INR" }, "creationTime": "2019-07-03T09:08:28.309Z", "currency": "INR", "id": "802014086", "merchantCategoryCode": "4511", "status": "CAPTURED", "totalAuthorizedAmount": 100.00, "totalCapturedAmount": 100.00, "totalRefundedAmount": 0.00 }, "response": { "acquirerCode": "00", "acquirerMessage": "Success", "gatewayCode": "APPROVED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "brand": "RUPAY", "expiry": { "month": "1", "year": "39" }, "fundingMethod": "DEBIT", "issuer": "DMBB9990001", "number": "607481xxxxxx4939", "scheme": "RUPAY", "storedOnFile": "NOT_STORED", "tags": "{\"RUPAY_BIN_STATUS_FLAG\":\"ACTIVE\",\"RUPAY_BIN_MESSAGE_TYPE\":\"SMS\"}" } }, "type": "CARD" }, "timeOfRecord": "2019-07-03T09:08:28.309Z", "transaction": { "acquirer": { "id": "<acquirer_id>", "merchantId": "423555234334123" }, "amount": 100.00, "authorizationCode": "143835", "currency": "INR", "frequency": "SINGLE", "id": "108379916", "receipt": "918409000035", "source": "INTERNET", "terminal": "88011019", "type": "PAYMENT" }, "version": "72" }