- Pautas de integración
- Características soportadas (seguridad)
- Autenticación de pagador de RuPay
- Implementación de la autenticación de RuPay utilizando la API de autenticación
Implementación de autenticación de RuPay mediante API de autenticación
Esta página describe cómo realizar la integración al motor de pagos para usar la autenticación de RuPay utilizando la API de autenticación.
Flujo de autenticación de RuPay
El siguiente diagrama ilustra el flujo de autenticación para un pago en el que el pagador se autentica utilizando RuPay PaySecure.
El flujo de autenticación para una autenticación de RuPay con éxito es el siguiente:
- Un pagador explora el sitio de la tienda, selecciona uno o más productos, se dirige a la página de pagos y selecciona pagar con una tarjeta RuPay que admite RuPay PaySecure.
- Iniciar autenticación: usted pide al motor de pagos que verifique con RuPay PaySecure si la tarjeta es válida para la autenticación del pagador de RuPay.
- Si la autenticación de RuPay del pagador está disponible, el motor de pagos devuelve los datos de autenticación en la respuesta.
- Autenticar al pagador: usted solicita al motor de pagos que realice la autenticación iniciada. Invoque esta operación cuando el pagador haga clic en el botón "Pagar ahora" en la página de pago.
- El motor de pagos devuelve la URL de redireccionamiento y el ID de transacción de autenticación de RuPay PaySecure en la respuesta Authenticate Payer.
- Usted redirige el explorador web del pagador al emisor, donde el pagador valida su OTP. El emisor devuelve el resultado de la autenticación al motor de pagos. El motor de pagos redirige al pagador directamente a su sitio web.
- Use la ID de transacción de la autenticación de RuPay en una operación de pago: usted envía el pago para procesamiento.
- La página de confirmación del pedido se le muestra al pagador.
Integración para usar la autenticación de pagador de RuPay
En esta sección se describe cómo realizar la integración al motor de pagos para usar la autenticación del pagador de RuPay.
Paso 1: Iniciar autenticación
La operación Initiate Authentication se utiliza para determinar si la autenticación del pagador de RuPay está disponible para el negocio para una determinada tarjeta. Si el tipo de tarjeta es RuPay, el motor de pagos determina la aptitud del BIN de la tarjeta RuPay para transacciones de comercio electrónico.
Referencia de la API de Initiate Authentication [REST] [NVP]
Para iniciar la autenticación de RuPay, complete los siguientes campos en la solicitud Initiate Authentication:
- session.id o sourceOfFunds.provided.card o sourceOfFunds.token: detalles de la tarjeta que se va a utilizar para el pago.
- order.currency: la moneda del pedido.
- transaction.id: identificador único para esta autenticación de pago.
- order.id: identificador único para este pedido.
Si la autenticación del pagador de RuPay está disponible, el motor de pagos devuelve authentication.version=RUPAY
y los siguientes campos:
response.gatewayCode
transaction.authenticationStatus
: proporciona más detalles sobre el estado de autenticación.result
response.gatewayRecommendation
Para determinar el siguiente paso, verifique las recomendaciones del motor de pagos que se proporcionan en el campo response.gatewayRecommendation.
response.gatewayRecommendation |
Siguiente paso |
---|---|
PROCEED | Puede proceder a autenticar al pagador utilizando la operación Authenticate Payer. |
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | Solicite al pagador detalles de pago alternativos (por ejemplo, una tarjeta nueva u otro método de pago) y vuelva a enviar la solicitud con los nuevos detalles. No vuelva a enviar la misma solicitud. |
La tabla siguiente muestra la respuesta de Initiate Authentication para los diversos escenarios de autenticación de Rupay.
Estado | 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://paymentgateway.commbank.com.au/api/rest/version/72/merchant/{merchantId}/order/{orderid}/transaction/{RuPayAuthId} |
Método 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" }
Paso 2: Autenticar al pagador
Cuando la respuesta de Initiate Authentication ha indicado que la autenticación debe estar disponible (authentication.version=RUPAY) para la tarjeta RuPay, puede enviar la solicitud Authenticate Payer. Debe invocar esta operación cuando el pagador haga clic en el botón "Pagar ahora" en la página de pago.
La operación Authenticate Payer intercambia de forma segura la información necesaria, incluido el número de tarjeta, entre el banco de su adquirente y RuPay PaySecure. PaySecure devuelve un ID de transacción único (tran_ID), que puede usarse en posteriores operaciones Authorization o Pay.
Referencia de la API de Authenticate Payer [REST] [NVP]
Debe enviar esta operación proporcionando los siguientes campos obligatorios:
- order.id: el mismo order.id que la operación Initiate Authentication que lo precedió.
- transaction.id: el mismo transaction.id que la operación Initiate Authentication que lo precedió.
- order.amount: el monto total del pedido.
- order.currency: la moneda del pedido.
- session.id o sourceOfFunds.provided.card o sourceOfFunds.token: detalles de la tarjeta que se va a utilizar para el pago.
- authentication.redirectResponseUrl: la URL a la que desea redirigir al pagador después de completar el proceso de autenticación del pagador.
- device.browserDetails.acceptHeaders: el contenido del campo Aceptar encabezado de solicitud enviado desde el explorador del pagador. Esto se utiliza para determinar qué tipos de contenido son compatibles con el explorador.
- device.ipAddress: La dirección IP del dispositivo utilizado por el pagador, en formato IPv4 nnn.nnn.nnn.nnn. El formato IPv6 no es compatible.
Authenticate Payer devuelve los siguientes campos:
response.gatewayCode
transaction.authenticationStatus
: proporciona más detalles sobre el estado de autenticación.authentication.payerInteraction
: indica si la interacción del pagador se usó para completar el proceso de autenticación.result
authentication.redirect.html
: código para crear la IU de autenticación. Escriba este contenido en un elemento <DIV> vacío, que sea el último elemento del cuerpo ( <BODY>) de su página de pago.response.gatewayRecommendation
Para determinar el siguiente paso, verifique las recomendaciones del motor de pagos que se proporcionan en el campo response.gatewayRecommendation.
response.gatewayRecommendation |
Siguiente paso |
---|---|
PROCEED | Puede proceder a completar el proceso de autenticación permitiendo que el pagador responda a la Autenticación con OTP solicitada por el emisor. |
DO_NOT_PROCEED_ABANDON_ORDER | No vuelva a enviar la misma solicitud. El proveedor de servicios de pago, el esquema o el emisor le solicitan que abandone el pedido. |
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | Solicite al pagador detalles de pago alternativos (por ejemplo, una tarjeta nueva u otro método de pago) y vuelva a enviar la solicitud con los nuevos detalles. No vuelva a enviar la misma solicitud. |
Si el motor de pagos le recomienda continuar (PROCEED
), pegue el contenido del campo de respuesta authentication.redirect.html
en la página que se muestra al pagador.
La tabla siguiente muestra la respuesta de Initiate Authentication para los diversos escenarios de autenticación de Rupay.
Estado | 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 |
Autenticación OTP
El motor de pagos redirige el explorador del pagador a la IU de validación con OTP del emisor (usando authentication.redirect.html
), donde se solicitará al pagador que introduzca una OTP válida, después de lo cual se le redirigirá a su sitio web. Los siguientes campos se devuelven en la devolución de llamada cuando el explorador del pagador se ha devuelto a su sitio web.
- order.id
- transaction.id
- result
- response.gatewayRecommendation
Puede determinar el resultado de la autenticación utilizando el valor devuelto en el campo response.gatewayRecommendation
.
response.gatewayRecommendation |
Siguiente paso |
---|---|
PROCEED | Puede proceder al pago porque la autenticación fue correcta. Si la autorización para el pago fue correcta, continúe con la captura de los fondos y, si procede, envíe la mercancía. |
RESUBMIT_WITH_ALTERNATIVE_PAYMENT_DETAILS | Solicite al pagador detalles de pago alternativos (por ejemplo, una tarjeta nueva u otro método de pago) y vuelva a enviar la solicitud con los nuevos detalles. No vuelva a enviar la misma solicitud. |
El motor de pagos actualiza los campos de respuesta de autenticación del pagador después de recuperar los resultados de la autenticación con OTP.
Estado | 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://paymentgateway.commbank.com.au/api/rest/version/72/merchant/{merchantId}/order/{orderid}/transaction/{RuPayAuthId} |
Método 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" }
Paso 3: Usar el resultado de la autenticación en una operación de pago
Cuando el resultado de la operación Authenticate Payer indica que se puede proceder con el pago (response.gatewayRecommendation=PROCEED), puede iniciar una operación Authorize o Pay. Además de los campos estándar, debe proporcionar los siguientes campos:
- order.id: proporcione el order.id que facilitó en las operaciones Initiate Authentication y Authenticate Payer.
- authentication.transactionId: proporcione el transaction.id que facilitó en las operaciones Initiate Authentication y Authenticate Payer. No es necesario incluir ninguno de los campos en el grupo de parámetros de autenticación, dado que el motor de pagos utilizará el authentication.transactionId para buscar los resultados de autenticación que almacenó cuando se le pidió que realizara la autenticación. El motor de pagos pasará la información requerida al adquirente.
Referencia de la API de ID de transacción de autenticación [REST] [NVP]
URL | https://paymentgateway.commbank.com.au/api/rest/version/72/merchant/{merchantId}/order/{orderid}/transaction/{transactionid} |
Método 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" }