Autenticación 3D Secure
La autenticación 3D Secure (3DS) está diseñada para proteger las compras en línea contra el fraude con tarjetas de crédito al permitirle autenticar al pagador antes de enviar una transacción AUTHORIZE o PAY. La función 3DS del motor de pagos y la autenticación dentro de Mobile SDK se limitan únicamente a 3DS2. Si 3DS no está disponible, la autenticación no continúa. Sin embargo, puede continuar igualmente con el pago si el motor de pagos le recomienda que lo haga. Para obtener más información sobre la función 3DS del motor de pagos en general, consulte Autenticación 3D Secure.
- Para autenticar al pagador:
- Utilice su servidor para actualizar la sesión con todos los detalles relevantes que pueden ayudar a que la autenticación se realice de forma más fluida.
- Solicite al SDK que realice la autenticación.
- Interprete los resultados devueltos por el SDK.
Actualización de la sesión con detalles de autenticación
Cuando realiza la autenticación de Mobile SDK (verificar la identidad de un titular de tarjeta en una aplicación móvil), el Mobile SDK recopila métricas del dispositivo para enviarlas al motor de pagos junto con la información de su transacción.
Facilite tanta información como sea posible sobre el pagador y la transacción para aumentar la probabilidad de que la autenticación sea correcta. Puede agregar los campos en la siguiente tabla a su sesión con una solicitud de UPDATE SESSION.
Campos opcionales de UPDATE SESSION
Campo | Descripción |
---|---|
order.merchantCategoryCode | Código de categoría de negocio Este valor solo es necesario si difiere del código definido para el vínculo del adquirente en su perfil de negocio. |
billing.address objeto | Dirección de facturación del pagador. Se recomienda encarecidamente que incluya esto en su solicitud siempre que sea posible. |
shipping.address objeto | Dirección donde se enviará este pedido. Se recomienda encarecidamente que incluya esto en su solicitud siempre que sea posible. |
customer objeto | Información asociada a la cuenta del pagador. Se recomienda encarecidamente que incluya esto en su solicitud siempre que sea posible. |
device
definido en la referencia de API solo es relevante para pagos mediante explorador. No lo utilice para la autenticación de pagadores mediante dispositivos móviles.Los campos anteriores ayudan al sistema a determinar cómo se debe autenticar al titular de la tarjeta o si es necesario hacerlo. Durante la autenticación, el usuario pasa por uno de los siguientes flujos de autenticación:
- Flujo fluido:
El servidor de control de acceso (ACS) ha recopilado suficiente información sobre el titular de la tarjeta para autenticarlo. No se necesita ninguna otra acción por parte del usuario.
- Flujo de desafío:
La ACS requiere que el titular de la tarjeta complete un paso de autenticación adicional, que consiste en ingresar una contraseña de un solo uso, iniciar sesión en su banco emisor o algo similar. El Mobile SDK integrado gestiona la visualización de una interfaz de dispositivo nativa para este desafío. La interfaz de usuario de estas pantallas se puede personalizar al proporcionar campos de personalización de interfaz de usuario al Mobile SDK durante la inicialización.
Para obtener más información, consulte Flujo de autenticación 3DS.
Realización de la autenticación
La autenticación del pagador se considera una transacción en sí misma en el motor de pagos y, por lo tanto, necesita un ID de transacción único.
Si está cobrando un pago por un pedido:
- Puede correlacionar un pago y una transacción de autenticación utilizando el mismo ID de pedido para cada transacción (por ejemplo, UUID).
- Cada transacción se muestra como una transacción independiente en Merchant Administration.
Para iniciar el proceso de autenticación en el SDK, llame a la función authenticate().
Código de ejemplo para iOS
let request = AuthenticationRequest (navController: navController, apiVersion: apiVersion, sessionId: sessionId, orderId: orderId, transactionId: authenticationTxnId) AuthenticationHandler.shared.authenticate(request) { (response) in // handle response }
authenticationTxnId
es una identificación única para esta transacción que la distingue de cualquier otra transacción dentro del mismo pedido. Cuando envía la solicitud de transacción de pago real (como PAY), el motor de pagos utiliza esta ID para buscar los resultados de autenticación que se almacenan cuando le solicita al SDK que autentique al pagador. El motor de pagos pasa los resultados de la autenticación al adquirente junto con la solicitud de transacción de pago.Código de ejemplo para Android
AuthenticationHandler.authenticate(activityContext, session, "your-auth- transaction-id", callback)
your-auth-transaction-id
es una identificación única para esta transacción que la distingue de cualquier otra transacción dentro del mismo pedido. Cuando envía la solicitud de transacción de pago real (como PAY), el motor de pagos utiliza esta ID para buscar los resultados de autenticación que se almacenan cuando le solicita al SDK que autentique al pagador. El motor de pagos pasa los resultados de la autenticación al adquirente junto con la solicitud de transacción de pago.Interpretación de la respuesta
La función authenticate
devuelve un objeto AuthenticationResponse
que contiene:
- información importante sobre el resultado;
- acciones realizadas durante la operación.
El campo más importante que se debe comprobar es response.recommendation
. Puede contener los siguientes valores:
- PROCEED: puede continuar con un pago o autorización.
- DO_NOT_PROCEED: algo falló durante la operación de autenticación. Utilice el objeto
AuthenticationError
para obtener más información.
Desde la API del motor de pagos versión 70 y superior, puede obtener los siguientes errores:
AuthenticationError.recommendation_ResubmitWithAlternativePaymentDetails
: Debe solicitar al pagador detalles de pago alternativos, por ejemplo, una nueva tarjeta u otro método de pago, y volver a enviar la solicitud con los nuevos detalles.AuthenticationError.recommendation_AbandonOrder
: El proveedor de servicios de pago (PSP), el esquema o el emisor le solicitan que abandone el pedido.AuthenticationError.recommendation_DoNotProceed
: El motor de pagos falla en la solicitud y no hay forma de que esta transacción se realice correctamente.
Si la autenticación falla, también puede examinar response.error para obtener más información sobre cualquier otro error enviado por el motor de pagos.
Código de ejemplo para iOS
AuthenticationHandler.shared.authenticate(request) { (response) in DispatchQueue.main.async { switch response.recommendation { case .doNotProceed: if let error = response.error { print ("SDK Error:\(error.localizedDescription)") if let authError = error as? AuthenticationError, authError == .recommendation_ResubmitWithAlternativePaymentDetails { //"Authentication not successful, re-enter card details" } } // "Authentication not successful" case .proceed: // Proceed to submit the payment, authorization etc } } }
Código de ejemplo para Android
AuthenticationHandler.authenticate(activityContext, session, "your-auth-transaction-id") { response -> when(response.recommendation) { AuthenticationRecommendation.PROCEED -> { // continue to payment/authorization } AuthenticationRecommendation.DO_NOT_PROCEED -> { if (response.error !=null) { if (response.error is AuthenticationError.RecommendationResubmitWithAlternativePaymentDetails) { // "Authentication not successful, re-enter card details } } else { // "Authentication not successful" } } } }