From 17a0d6445b98a623b2a477da22b43407c24da5ab Mon Sep 17 00:00:00 2001 From: Leidy Arango Date: Tue, 1 Oct 2024 11:57:05 -0500 Subject: [PATCH 1/2] feat: detail BME recurring --- .../api/integration/session.mdx | 176 +++++++++++++++--- .../api/integration/session.mdx | 175 ++++++++++++++--- 2 files changed, 299 insertions(+), 52 deletions(-) diff --git a/src/pages/en/three-d-s-server/api/integration/session.mdx b/src/pages/en/three-d-s-server/api/integration/session.mdx index 73aebde..53a007f 100644 --- a/src/pages/en/three-d-s-server/api/integration/session.mdx +++ b/src/pages/en/three-d-s-server/api/integration/session.mdx @@ -526,17 +526,6 @@ Los atributos de la transacción de recurrencia para el **BME** son válidos si Cuando alguno de estos valores es el indicador en `threeRIInd`, se aplican las siguientes reglas para los indicadores de recurrencia sobre los datos del request base: -### Indicadores de Recurrencia `recurringInd` - -1. **amountInd** (Indicador de Monto): -- Si la transacción es variable, se establece el valor de `amountInd` en **02**: `VARIABLE_PURCHASE` (Compra Variable) -- Si el campo `purchaseAmount` está presente en la solicitud, se asigna el valor de `amountInd` a **01**: `FIXED_PURCHASE` (Compra Fija) - -2. **frequencyInd** (Indicador de Frecuencia): -- Si la transacción es variable, se establece el valor de `frequencyInd` en **02**: `VARIABLE_FREQUENCY` (Frecuencia Variable) -- Si el campo `recurringFrequency` está presente en la solicitud, se asigna el valor de `frequencyInd` a **01**: `FIXED_FREQUENCY` (Frecuencia Fija) - - **Datos Asociados a la Extensión del BME** Los siguientes datos se asociarán a la extensión del **BME** de acuerdo con los indicadores previamente mencionados: @@ -567,9 +556,7 @@ Cuando se cumple esta condición, el valor de `recurringCurrency` será añadido El campo `recurringExponent` será agregado a la extensión del **BME** bajo las siguientes condiciones: -- **Condición**: El valor de `threeRIInd` es igual a: -- **RECURRING_TRANSACTION (01)**, o -- **INSTALMENT_TRANSACTION (02)**. +- **Condición**: El valor de `threeRIInd` es igual a: **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. Cuando se cumple esta condición, el valor de `recurringExponent` será añadido a la extensión del **BME**, y corresponderá al valor proporcionado en el request base bajo el campo `purchaseExponent`. @@ -578,8 +565,7 @@ Cuando se cumple esta condición, el valor de `recurringExponent` será añadido El campo `recurringDate` será agregado a la extensión del **BME** bajo las siguientes condiciones: -- **Condición**: El valor de `recurringInd.frequencyInd` es igual a: -- **FIXED_FREQUENCY (01)**. +- **Condición**: El valor de `recurringInd.frequencyInd` es igual a: **FIXED_FREQUENCY (01)**. Si esta condición se cumple, el campo `recurringDate` será añadido a la extensión del **BME**, siempre y cuando esté presente en el request base en `bridgingMessageExtension.data.recurringData.recurringDate`. @@ -590,7 +576,7 @@ El valor de `recurringExpiry` es calculado automáticamente por el sistema segú - **Condición**: El valor de `threeRIInd` es igual a **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. - **Condición**: Si el valor de `deviceChannel` en los atributos es igual a **RI** y no existe un valor previo para `recurringExpiry` en el request base. - - El campo `recurringExpiry` se toma de los datos de los datos enviados en el request base. +- El campo `recurringExpiry` se toma de los datos de los datos enviados en el request base. ### 6. `recurringFrequency` @@ -606,21 +592,159 @@ Si esta condición se cumple, el valor de `recurringFrequency` se tomará direct El campo `recurringInd` se compone de dos subcampos: `amountInd` y `frequencyInd`. Ambos serán agregados a la extensión del **BME** bajo las siguientes condiciones: -#### Condiciones - -1. **Condición**: El valor de `threeRIInd` es igual a **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. +- **Condición**: El valor de `threeRIInd` es igual a **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. Cuando se cumple esta condición, los siguientes subcampos serán agregados: #### Subcampos -- **`amountInd`**: -- Se agregará el valor proporcionado en `bridgingMessageExtension.data.recurringData.recurringInd.amountInd` si está presente en el request base. -- Si no se proporciona un valor en el request base, él `amountInd` tendrá un valor por defecto de **FIXED_PURCHASE (01)**. +- **`amountInd`**: Se agregará el valor proporcionado en `bridgingMessageExtension.data.recurringData.recurringInd.amountInd` si está presente en el request base y +si no se proporciona un valor en el request base, él `amountInd` tendrá un valor por defecto de **FIXED_PURCHASE (01)**. + +- **`frequencyInd`**: Se agregará el valor proporcionado en `bridgingMessageExtension.data.recurringData.recurringInd.frequencyInd` si está presente en el request base y si no se proporciona un valor en el request base, él `frequencyInd` tendrá un valor por defecto de **FIXED_FREQUENCY (01)**. + +## Beneficios de la V2.3.1 del protocolo con el BME en 3DS con sus nuevos indicadores + +Ver más detalle en [Reglas a tener en cuenta de la session API con BME](/en/three-d-s-server/api/sessions/rules#elementos-que-podra-enviar-para-optimizar-el-uso-de-esta-extension-bme) + + +**threeDSRequestorAuthenticationInd:** usado en el request base como: threeDSAuthenticationInd, este campo incluye nuevos indicadores disponibles en la versión 2.3.1 + +- **BILLING_AGREEMENT (07):** Este indicador se refiere a un acuerdo de facturación entre el cliente y el comerciante, donde el cliente autoriza pagos recurrentes o futuros sin necesidad de autenticar cada transacción individualmente. Es común en suscripciones o servicios continuos donde los pagos se procesan periódicamente. + +- **SPLIT_SHIPMENT (08):** Indica que el pedido se enviará en múltiples envíos. Esto puede ocurrir cuando el comerciante no tiene todos los artículos en stock o por conveniencia logística. En este caso, el cargo total puede dividirse y procesarse en función de los envíos parciales. + +- **DELAYED_SHIPMENT (09):** Se refiere a una transacción en la que el envío del pedido se retrasa intencionalmente, ya sea por solicitud del cliente o por motivos logísticos del comerciante. El pago puede procesarse en el momento de la compra, pero el envío se llevará a cabo más tarde. + +- **SPLIT_PAYMENT (10):** Este indicador señala que el pago de una transacción se divide en varias partes, ya sea entre diferentes métodos de pago o en diferentes momentos. Por ejemplo, el cliente podría pagar una parte con una tarjeta de crédito y el resto con otro método, o pagar en varias cuotas. + +- **MASTERCARD_THE_PAYMENT_REQUEST_IS_FOR_AN_AGENT_PAYMENT_TRANSACTION (85):** Este indicador se utiliza cuando la solicitud de pago está relacionada con una transacción gestionada por un agente en nombre del comerciante o cliente. Es común en casos donde una agencia u otro intermediario gestiona el pago, actuando como un tercero que facilita la transacción entre el comerciante y el cliente. + +- **MASTERCARD_FOR_UNKNOWN_OR_UNDEFINED_FINAL_AMOUNT_BEFORE_PURCHASE_TRANSACTION (86):** Este indicador se emplea cuando el monto final de la transacción no se conoce o no está definido en el momento de la compra. Es útil en situaciones donde el importe total podría variar, como cuando se realizan reservas o compras que pueden implicar cargos adicionales, pero el monto exacto se determina posteriormente (por ejemplo, reservas de hotel, alquileres de automóviles o servicios con tarifas variables). + + +**threeRIInd:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 + +- **DEVICE_BINDING_STATUS_CHECK (13):** Este indicador se utiliza para verificar el estado de la vinculación de un dispositivo. Se refiere a situaciones en las que es necesario verificar si un dispositivo está vinculado correctamente a una cuenta o tarjeta, lo que puede mejorar la seguridad de las transacciones recurrentes o de pago. + +- **CARD_SECURITY_CODE_STATUS_CHECK (14):** Este indicador permite verificar el estado del código de seguridad de la tarjeta (CVV o CVC). Es común en transacciones donde se requiere una autenticación adicional del código de seguridad para validar la legitimidad de la tarjeta utilizada. + +- **DELAYED_SHIPMENT (15):** Este indicador se utiliza para transacciones en las que el envío del producto o servicio se realizará en una fecha posterior. Es útil para casos en los que el pago se procesa de inmediato, pero la entrega se retrasa o se realiza más adelante. + +- **SPLIT_PAYMENT (16):** Se refiere a una transacción en la que el pago se divide en varias partes. Esto puede ocurrir cuando el comprador elige pagar en diferentes cuotas o mediante diferentes métodos de pago para una sola transacción. + +- **FIDO_CREDENTIAL_DELETION (17):** Este indicador se emplea cuando se solicita la eliminación de las credenciales de FIDO (Fast Identity Online) asociadas a una cuenta o dispositivo. FIDO es un estándar de autenticación que permite la eliminación de credenciales para mejorar la seguridad. + +- **FIDO_CREDENTIAL_REGISTRATION (18):** Se utiliza cuando se realiza la inscripción de nuevas credenciales FIDO. Este proceso vincula un dispositivo o cuenta a un método de autenticación más seguro, que es independiente de contraseñas tradicionales. + +- **DECOUPLED_AUTHENTICATION_FALLBACK (19):** Este indicador se activa cuando se produce un fallo en el proceso de autenticación desacoplada. La autenticación desacoplada permite al titular de la tarjeta autenticarse en un canal distinto al del comercio (por ejemplo, a través de una app bancaria), y este código indica que el método ha fallado y se requiere una alternativa. + +**transChar:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 + +- **CRYPTOCURRENCY_TRANSACTION (01):** Este indicador se utiliza para identificar transacciones relacionadas con criptomonedas. Permite que el emisor y otros actores del sistema de pagos reconozcan de forma explícita cuando la transacción involucra la compra, venta o intercambio de criptomonedas, lo que puede requerir un tratamiento especial debido a la naturaleza de este tipo de activos. + +- **NFT_TRANSACTION (02):** Este indicador está diseñado para transacciones que implican la compra o el intercambio de tokens no fungibles (NFTs). Los NFTs son activos digitales únicos basados en tecnología blockchain, y este código ayuda a diferenciar estas transacciones de las compras tradicionales, ofreciendo una capa adicional de información relevante para la autenticación y el análisis de riesgos. + + +**amountInd:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 + +- **FIXED_PURCHASE (01):** Indica que el monto de la transacción es fijo y no varía. Este tipo de compra es común en transacciones estándar donde el valor del producto o servicio está predefinido y no cambia durante el proceso de pago. + +- **VARIABLE_PURCHASE (02):** Indica que el monto de la transacción puede variar. Se utiliza en casos donde el valor final de la compra no está determinado en el momento de la autenticación inicial, como en situaciones de envío fraccionado, cargos adicionales, o ajustes por servicios o productos variables. Este indicador proporciona flexibilidad en el manejo de transacciones con montos ajustables. + + +**frequencyInd:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 + +- **FIXED_FREQUENCY (01):** Indica que la frecuencia de la transacción recurrente es fija. Es utilizado cuando los pagos se realizan a intervalos regulares y predefinidos, como pagos mensuales, suscripciones o cuotas de préstamos. La periodicidad es constante y no cambia a lo largo del tiempo. + +- **VARIABLE_FREQUENCY (02):** Indica que la frecuencia de la transacción recurrente puede variar. Se aplica en casos donde los pagos no se realizan a intervalos regulares, o la frecuencia cambia según las necesidades o circunstancias, como en pagos esporádicos o cuando el intervalo entre pagos no es predecible. Este indicador brinda flexibilidad para manejar pagos recurrentes que no siguen un patrón estricto. + + +## Casos de usos del BME + +1. **Pagos Recurrentes (Recurring Payments)** + +Indicadores Relevantes: + +- **threeRIInd:** RECURRING_TRANSACTION (01) +- **amountInd:** FIXED_PURCHASE (01) o VARIABLE_PURCHASE (02) +- **frequencyInd:** FIXED_FREQUENCY (01) o VARIABLE_FREQUENCY (02) + +**Caso de Uso:** Cuando un comerciante quiere procesar una transacción recurrente con un monto fijo o variable (como una suscripción mensual de un servicio o cuotas de pago de un préstamo), el BME puede ser utilizado para indicar el tipo de transacción recurrente, la frecuencia con la que se realizarán los pagos, y si el monto será fijo o variable. + +**Ejemplo:** Una plataforma de streaming quiere cobrar una suscripción mensual fija (por ejemplo, $10), pero también puede manejar casos donde el usuario paga montos variables basados en consumo, con una frecuencia no predefinida. + +2. **Transacciones a Plazos (Instalment Payments)** + +Indicadores Relevantes: + +**threeRIInd:** INSTALMENT_TRANSACTION (02) +**amountInd:** FIXED_PURCHASE (01) o VARIABLE_PURCHASE (02) +**frequencyInd:** FIXED_FREQUENCY (01) o VARIABLE_FREQUENCY (02) + +**Caso de Uso:** Para pagos a plazos, como la compra de un producto caro en cuotas, el BME puede especificar que la transacción es a plazos y ajustar la frecuencia de los pagos, además de indicar si los montos son fijos o variables a lo largo del tiempo. + +**Ejemplo:** Un cliente compra un electrodoméstico costoso y elige pagarlo en 6 cuotas fijas. Se puede usar el BME para indicar que es un pago a plazos con una frecuencia mensual fija y un monto constante. + +3. **Envío Dividido o Demorado (Split or Delayed Shipment)** + +Indicadores Relevantes: + +**threeRIInd:** DELAYED_SHIPMENT (15) o SPLIT_PAYMENT (16) + +**Caso de Uso:** Para escenarios donde el pedido de un cliente se divide en varios envíos o donde el envío es retrasado, el BME puede proporcionar detalles adicionales sobre la naturaleza del pago. Esto es útil para gestionar transacciones donde una parte del pedido se envía ahora y otra más tarde, o cuando el envío se pospone. + +**Ejemplo:** Un cliente hace una compra de múltiples artículos, pero algunos productos no están disponibles para envío inmediato. Se usa DELAYED_SHIPMENT para señalar al banco emisor que la transacción incluye envíos demorados. + + + +4. **Transacciones con Monedas Digitales (Cryptocurrency/NFT Transactions)** + +Indicadores Relevantes: + +**transChar:** CRYPTOCURRENCY_TRANSACTION (01) o NFT_TRANSACTION (02) + +**Caso de Uso:** En situaciones donde el pago se realiza con criptomonedas o NFT (tokens no fungibles), el BME puede ser usado para indicar que el pago no es con moneda tradicional, sino con activos digitales. Esto ayuda a los bancos emisores a evaluar correctamente el riesgo asociado a la transacción. + +**Ejemplo:** Un cliente compra un NFT en una plataforma de arte digital utilizando criptomonedas. El BME indicaría que la transacción está asociada con un NFT_TRANSACTION o CRYPTOCURRENCY_TRANSACTION. + +5. **Chequeo de Estado del Código de Seguridad de la Tarjeta (Card Security Code Status Check)** + +Indicadores Relevantes: + +**threeRIInd:** CARD_SECURITY_CODE_STATUS_CHECK (14) + +**Caso de Uso:** Este caso es relevante cuando el comerciante necesita realizar un chequeo del código de seguridad (CVV) asociado a la tarjeta sin realizar un pago inmediato. El BME permite agregar información adicional que indique que la transacción es solo una verificación del CVV. + +**Ejemplo:** Un servicio de verificación de tarjetas realiza un chequeo del código CVV antes de que se complete una transacción en el futuro. El BME indicaría este escenario sin necesidad de procesar un pago. + + +6. **Eliminación y Registro de Credenciales FIDO (FIDO Credential Deletion/Registration)** + +Indicadores Relevantes: + +**threeRIInd:** FIDO_CREDENTIAL_DELETION (17) o FIDO_CREDENTIAL_REGISTRATION (18) + +**Caso de Uso:** Estos indicadores se utilizan cuando se gestionan credenciales FIDO, un estándar para autenticación sin contraseña. El BME puede incluir información sobre la eliminación o el registro de credenciales FIDO en el contexto de una transacción, mejorando la seguridad del proceso. + +**Ejemplo:** Un banco realiza una actualización de credenciales FIDO vinculadas a una cuenta de usuario. El BME incluiría indicadores que registren o eliminen dichas credenciales en la transacción. + + +7. **Pagos Diferidos o Fraccionados (Split/Delayed Shipment)** + +Indicadores Relevantes: + +**threeDSRequestorAuthenticationInd:** SPLIT_SHIPMENT (08) o DELAYED_SHIPMENT (09) +**threeRIInd:** DELAYED_SHIPMENT (15) o SPLIT_PAYMENT (16) + +**Caso de Uso:** Este escenario se aplica cuando un pedido se divide en varios envíos (split shipment) o cuando se retrasa el envío (delayed shipment). Los indicadores permiten que el emisor reconozca que la transacción no se completará de inmediato en su totalidad, sino que se llevará a cabo en varias partes o en momentos diferentes. + +**SPLIT_SHIPMENT (08):** Se utiliza cuando la compra del cliente incluye múltiples productos que se enviarán por separado en diferentes momentos. +**DELAYED_SHIPMENT (09):** Aplica cuando el envío de un pedido completo se retrasa y el pago no se procesa hasta que los productos estén listos para su envío. + +**Beneficio:** Proporciona un mecanismo para que el Access Control Server (ACS) reconozca que la transacción no se completa de una sola vez, lo que ayuda a evitar rechazos innecesarios por transacciones incompletas o por la percepción de pagos duplicados. -- **`frequencyInd`**: -- Se agregará el valor proporcionado en `bridgingMessageExtension.data.recurringData.recurringInd.frequencyInd` si está presente en el request base. -- Si no se proporciona un valor en el request base, él `frequencyInd` tendrá un valor por defecto de **FIXED_FREQUENCY (01)**. +**Ejemplo:** Un cliente compra varios artículos en una tienda en línea, pero algunos productos están en preventa y serán enviados más tarde. El indicador SPLIT_SHIPMENT se incluye para informar al emisor que el pago se fraccionará en función de los envíos. Si, por otro lado, la tienda notifica un retraso en todo el envío, se utilizaría el indicador DELAYED_SHIPMENT para evitar problemas con la autorización del pago. --- diff --git a/src/pages/three-d-s-server/api/integration/session.mdx b/src/pages/three-d-s-server/api/integration/session.mdx index 92d220e..04b91b1 100644 --- a/src/pages/three-d-s-server/api/integration/session.mdx +++ b/src/pages/three-d-s-server/api/integration/session.mdx @@ -525,17 +525,6 @@ Los atributos de la transacción de recurrencia para el **BME** son válidos si Cuando alguno de estos valores es el indicador en `threeRIInd`, se aplican las siguientes reglas para los indicadores de recurrencia sobre los datos del request base: -### Indicadores de Recurrencia `recurringInd` - -1. **amountInd** (Indicador de Monto): -- Si la transacción es variable, se establece el valor de `amountInd` en **02**: `VARIABLE_PURCHASE` (Compra Variable) -- Si el campo `purchaseAmount` está presente en la solicitud, se asigna el valor de `amountInd` a **01**: `FIXED_PURCHASE` (Compra Fija) - -2. **frequencyInd** (Indicador de Frecuencia): -- Si la transacción es variable, se establece el valor de `frequencyInd` en **02**: `VARIABLE_FREQUENCY` (Frecuencia Variable) -- Si el campo `recurringFrequency` está presente en la solicitud, se asigna el valor de `frequencyInd` a **01**: `FIXED_FREQUENCY` (Frecuencia Fija) - - **Datos Asociados a la Extensión del BME** Los siguientes datos se asociarán a la extensión del **BME** de acuerdo con los indicadores previamente mencionados: @@ -566,9 +555,7 @@ Cuando se cumple esta condición, el valor de `recurringCurrency` será añadido El campo `recurringExponent` será agregado a la extensión del **BME** bajo las siguientes condiciones: -- **Condición**: El valor de `threeRIInd` es igual a: -- **RECURRING_TRANSACTION (01)**, o -- **INSTALMENT_TRANSACTION (02)**. +- **Condición**: El valor de `threeRIInd` es igual a: **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. Cuando se cumple esta condición, el valor de `recurringExponent` será añadido a la extensión del **BME**, y corresponderá al valor proporcionado en el request base bajo el campo `purchaseExponent`. @@ -577,8 +564,7 @@ Cuando se cumple esta condición, el valor de `recurringExponent` será añadido El campo `recurringDate` será agregado a la extensión del **BME** bajo las siguientes condiciones: -- **Condición**: El valor de `recurringInd.frequencyInd` es igual a: -- **FIXED_FREQUENCY (01)**. +- **Condición**: El valor de `recurringInd.frequencyInd` es igual a: **FIXED_FREQUENCY (01)**. Si esta condición se cumple, el campo `recurringDate` será añadido a la extensión del **BME**, siempre y cuando esté presente en el request base en `bridgingMessageExtension.data.recurringData.recurringDate`. @@ -589,7 +575,7 @@ El valor de `recurringExpiry` es calculado automáticamente por el sistema segú - **Condición**: El valor de `threeRIInd` es igual a **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. - **Condición**: Si el valor de `deviceChannel` en los atributos es igual a **RI** y no existe un valor previo para `recurringExpiry` en el request base. - - El campo `recurringExpiry` se toma de los datos de los datos enviados en el request base. +- El campo `recurringExpiry` se toma de los datos de los datos enviados en el request base. ### 6. `recurringFrequency` @@ -605,22 +591,159 @@ Si esta condición se cumple, el valor de `recurringFrequency` se tomará direct El campo `recurringInd` se compone de dos subcampos: `amountInd` y `frequencyInd`. Ambos serán agregados a la extensión del **BME** bajo las siguientes condiciones: -#### Condiciones - -1. **Condición**: El valor de `threeRIInd` es igual a **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. +- **Condición**: El valor de `threeRIInd` es igual a **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. Cuando se cumple esta condición, los siguientes subcampos serán agregados: #### Subcampos -- **`amountInd`**: -- Se agregará el valor proporcionado en `bridgingMessageExtension.data.recurringData.recurringInd.amountInd` si está presente en el request base. -- Si no se proporciona un valor en el request base, él `amountInd` tendrá un valor por defecto de **FIXED_PURCHASE (01)**. +- **`amountInd`**: Se agregará el valor proporcionado en `bridgingMessageExtension.data.recurringData.recurringInd.amountInd` si está presente en el request base y +si no se proporciona un valor en el request base, él `amountInd` tendrá un valor por defecto de **FIXED_PURCHASE (01)**. + +- **`frequencyInd`**: Se agregará el valor proporcionado en `bridgingMessageExtension.data.recurringData.recurringInd.frequencyInd` si está presente en el request base y si no se proporciona un valor en el request base, él `frequencyInd` tendrá un valor por defecto de **FIXED_FREQUENCY (01)**. + +## Beneficios de la V2.3.1 del protocolo con el BME en 3DS con sus nuevos indicadores + +Ver más detalle en [Reglas a tener en cuenta de la session API con BME](/en/three-d-s-server/api/sessions/rules#elementos-que-podra-enviar-para-optimizar-el-uso-de-esta-extension-bme) + + +**threeDSRequestorAuthenticationInd:** usado en el request base como: threeDSAuthenticationInd, este campo incluye nuevos indicadores disponibles en la versión 2.3.1 + +- **BILLING_AGREEMENT (07):** Este indicador se refiere a un acuerdo de facturación entre el cliente y el comerciante, donde el cliente autoriza pagos recurrentes o futuros sin necesidad de autenticar cada transacción individualmente. Es común en suscripciones o servicios continuos donde los pagos se procesan periódicamente. + +- **SPLIT_SHIPMENT (08):** Indica que el pedido se enviará en múltiples envíos. Esto puede ocurrir cuando el comerciante no tiene todos los artículos en stock o por conveniencia logística. En este caso, el cargo total puede dividirse y procesarse en función de los envíos parciales. + +- **DELAYED_SHIPMENT (09):** Se refiere a una transacción en la que el envío del pedido se retrasa intencionalmente, ya sea por solicitud del cliente o por motivos logísticos del comerciante. El pago puede procesarse en el momento de la compra, pero el envío se llevará a cabo más tarde. + +- **SPLIT_PAYMENT (10):** Este indicador señala que el pago de una transacción se divide en varias partes, ya sea entre diferentes métodos de pago o en diferentes momentos. Por ejemplo, el cliente podría pagar una parte con una tarjeta de crédito y el resto con otro método, o pagar en varias cuotas. + +- **MASTERCARD_THE_PAYMENT_REQUEST_IS_FOR_AN_AGENT_PAYMENT_TRANSACTION (85):** Este indicador se utiliza cuando la solicitud de pago está relacionada con una transacción gestionada por un agente en nombre del comerciante o cliente. Es común en casos donde una agencia u otro intermediario gestiona el pago, actuando como un tercero que facilita la transacción entre el comerciante y el cliente. + +- **MASTERCARD_FOR_UNKNOWN_OR_UNDEFINED_FINAL_AMOUNT_BEFORE_PURCHASE_TRANSACTION (86):** Este indicador se emplea cuando el monto final de la transacción no se conoce o no está definido en el momento de la compra. Es útil en situaciones donde el importe total podría variar, como cuando se realizan reservas o compras que pueden implicar cargos adicionales, pero el monto exacto se determina posteriormente (por ejemplo, reservas de hotel, alquileres de automóviles o servicios con tarifas variables). + + +**threeRIInd:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 + +- **DEVICE_BINDING_STATUS_CHECK (13):** Este indicador se utiliza para verificar el estado de la vinculación de un dispositivo. Se refiere a situaciones en las que es necesario verificar si un dispositivo está vinculado correctamente a una cuenta o tarjeta, lo que puede mejorar la seguridad de las transacciones recurrentes o de pago. + +- **CARD_SECURITY_CODE_STATUS_CHECK (14):** Este indicador permite verificar el estado del código de seguridad de la tarjeta (CVV o CVC). Es común en transacciones donde se requiere una autenticación adicional del código de seguridad para validar la legitimidad de la tarjeta utilizada. + +- **DELAYED_SHIPMENT (15):** Este indicador se utiliza para transacciones en las que el envío del producto o servicio se realizará en una fecha posterior. Es útil para casos en los que el pago se procesa de inmediato, pero la entrega se retrasa o se realiza más adelante. + +- **SPLIT_PAYMENT (16):** Se refiere a una transacción en la que el pago se divide en varias partes. Esto puede ocurrir cuando el comprador elige pagar en diferentes cuotas o mediante diferentes métodos de pago para una sola transacción. + +- **FIDO_CREDENTIAL_DELETION (17):** Este indicador se emplea cuando se solicita la eliminación de las credenciales de FIDO (Fast Identity Online) asociadas a una cuenta o dispositivo. FIDO es un estándar de autenticación que permite la eliminación de credenciales para mejorar la seguridad. + +- **FIDO_CREDENTIAL_REGISTRATION (18):** Se utiliza cuando se realiza la inscripción de nuevas credenciales FIDO. Este proceso vincula un dispositivo o cuenta a un método de autenticación más seguro, que es independiente de contraseñas tradicionales. + +- **DECOUPLED_AUTHENTICATION_FALLBACK (19):** Este indicador se activa cuando se produce un fallo en el proceso de autenticación desacoplada. La autenticación desacoplada permite al titular de la tarjeta autenticarse en un canal distinto al del comercio (por ejemplo, a través de una app bancaria), y este código indica que el método ha fallado y se requiere una alternativa. + +**transChar:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 + +- **CRYPTOCURRENCY_TRANSACTION (01):** Este indicador se utiliza para identificar transacciones relacionadas con criptomonedas. Permite que el emisor y otros actores del sistema de pagos reconozcan de forma explícita cuando la transacción involucra la compra, venta o intercambio de criptomonedas, lo que puede requerir un tratamiento especial debido a la naturaleza de este tipo de activos. + +- **NFT_TRANSACTION (02):** Este indicador está diseñado para transacciones que implican la compra o el intercambio de tokens no fungibles (NFTs). Los NFTs son activos digitales únicos basados en tecnología blockchain, y este código ayuda a diferenciar estas transacciones de las compras tradicionales, ofreciendo una capa adicional de información relevante para la autenticación y el análisis de riesgos. + + +**amountInd:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 + +- **FIXED_PURCHASE (01):** Indica que el monto de la transacción es fijo y no varía. Este tipo de compra es común en transacciones estándar donde el valor del producto o servicio está predefinido y no cambia durante el proceso de pago. + +- **VARIABLE_PURCHASE (02):** Indica que el monto de la transacción puede variar. Se utiliza en casos donde el valor final de la compra no está determinado en el momento de la autenticación inicial, como en situaciones de envío fraccionado, cargos adicionales, o ajustes por servicios o productos variables. Este indicador proporciona flexibilidad en el manejo de transacciones con montos ajustables. + + +**frequencyInd:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 + +- **FIXED_FREQUENCY (01):** Indica que la frecuencia de la transacción recurrente es fija. Es utilizado cuando los pagos se realizan a intervalos regulares y predefinidos, como pagos mensuales, suscripciones o cuotas de préstamos. La periodicidad es constante y no cambia a lo largo del tiempo. + +- **VARIABLE_FREQUENCY (02):** Indica que la frecuencia de la transacción recurrente puede variar. Se aplica en casos donde los pagos no se realizan a intervalos regulares, o la frecuencia cambia según las necesidades o circunstancias, como en pagos esporádicos o cuando el intervalo entre pagos no es predecible. Este indicador brinda flexibilidad para manejar pagos recurrentes que no siguen un patrón estricto. + + +## Casos de usos del BME + +1. **Pagos Recurrentes (Recurring Payments)** + +Indicadores Relevantes: + +- **threeRIInd:** RECURRING_TRANSACTION (01) +- **amountInd:** FIXED_PURCHASE (01) o VARIABLE_PURCHASE (02) +- **frequencyInd:** FIXED_FREQUENCY (01) o VARIABLE_FREQUENCY (02) + +**Caso de Uso:** Cuando un comerciante quiere procesar una transacción recurrente con un monto fijo o variable (como una suscripción mensual de un servicio o cuotas de pago de un préstamo), el BME puede ser utilizado para indicar el tipo de transacción recurrente, la frecuencia con la que se realizarán los pagos, y si el monto será fijo o variable. + +**Ejemplo:** Una plataforma de streaming quiere cobrar una suscripción mensual fija (por ejemplo, $10), pero también puede manejar casos donde el usuario paga montos variables basados en consumo, con una frecuencia no predefinida. + +2. **Transacciones a Plazos (Instalment Payments)** + +Indicadores Relevantes: + +**threeRIInd:** INSTALMENT_TRANSACTION (02) +**amountInd:** FIXED_PURCHASE (01) o VARIABLE_PURCHASE (02) +**frequencyInd:** FIXED_FREQUENCY (01) o VARIABLE_FREQUENCY (02) + +**Caso de Uso:** Para pagos a plazos, como la compra de un producto caro en cuotas, el BME puede especificar que la transacción es a plazos y ajustar la frecuencia de los pagos, además de indicar si los montos son fijos o variables a lo largo del tiempo. + +**Ejemplo:** Un cliente compra un electrodoméstico costoso y elige pagarlo en 6 cuotas fijas. Se puede usar el BME para indicar que es un pago a plazos con una frecuencia mensual fija y un monto constante. + +3. **Envío Dividido o Demorado (Split or Delayed Shipment)** + +Indicadores Relevantes: + +**threeRIInd:** DELAYED_SHIPMENT (15) o SPLIT_PAYMENT (16) + +**Caso de Uso:** Para escenarios donde el pedido de un cliente se divide en varios envíos o donde el envío es retrasado, el BME puede proporcionar detalles adicionales sobre la naturaleza del pago. Esto es útil para gestionar transacciones donde una parte del pedido se envía ahora y otra más tarde, o cuando el envío se pospone. + +**Ejemplo:** Un cliente hace una compra de múltiples artículos, pero algunos productos no están disponibles para envío inmediato. Se usa DELAYED_SHIPMENT para señalar al banco emisor que la transacción incluye envíos demorados. + + + +4. **Transacciones con Monedas Digitales (Cryptocurrency/NFT Transactions)** + +Indicadores Relevantes: + +**transChar:** CRYPTOCURRENCY_TRANSACTION (01) o NFT_TRANSACTION (02) + +**Caso de Uso:** En situaciones donde el pago se realiza con criptomonedas o NFT (tokens no fungibles), el BME puede ser usado para indicar que el pago no es con moneda tradicional, sino con activos digitales. Esto ayuda a los bancos emisores a evaluar correctamente el riesgo asociado a la transacción. + +**Ejemplo:** Un cliente compra un NFT en una plataforma de arte digital utilizando criptomonedas. El BME indicaría que la transacción está asociada con un NFT_TRANSACTION o CRYPTOCURRENCY_TRANSACTION. + +5. **Chequeo de Estado del Código de Seguridad de la Tarjeta (Card Security Code Status Check)** + +Indicadores Relevantes: + +**threeRIInd:** CARD_SECURITY_CODE_STATUS_CHECK (14) + +**Caso de Uso:** Este caso es relevante cuando el comerciante necesita realizar un chequeo del código de seguridad (CVV) asociado a la tarjeta sin realizar un pago inmediato. El BME permite agregar información adicional que indique que la transacción es solo una verificación del CVV. + +**Ejemplo:** Un servicio de verificación de tarjetas realiza un chequeo del código CVV antes de que se complete una transacción en el futuro. El BME indicaría este escenario sin necesidad de procesar un pago. + + +6. **Eliminación y Registro de Credenciales FIDO (FIDO Credential Deletion/Registration)** + +Indicadores Relevantes: + +**threeRIInd:** FIDO_CREDENTIAL_DELETION (17) o FIDO_CREDENTIAL_REGISTRATION (18) + +**Caso de Uso:** Estos indicadores se utilizan cuando se gestionan credenciales FIDO, un estándar para autenticación sin contraseña. El BME puede incluir información sobre la eliminación o el registro de credenciales FIDO en el contexto de una transacción, mejorando la seguridad del proceso. + +**Ejemplo:** Un banco realiza una actualización de credenciales FIDO vinculadas a una cuenta de usuario. El BME incluiría indicadores que registren o eliminen dichas credenciales en la transacción. + + +7. **Pagos Diferidos o Fraccionados (Split/Delayed Shipment)** + +Indicadores Relevantes: + +**threeDSRequestorAuthenticationInd:** SPLIT_SHIPMENT (08) o DELAYED_SHIPMENT (09) +**threeRIInd:** DELAYED_SHIPMENT (15) o SPLIT_PAYMENT (16) + +**Caso de Uso:** Este escenario se aplica cuando un pedido se divide en varios envíos (split shipment) o cuando se retrasa el envío (delayed shipment). Los indicadores permiten que el emisor reconozca que la transacción no se completará de inmediato en su totalidad, sino que se llevará a cabo en varias partes o en momentos diferentes. + +**SPLIT_SHIPMENT (08):** Se utiliza cuando la compra del cliente incluye múltiples productos que se enviarán por separado en diferentes momentos. +**DELAYED_SHIPMENT (09):** Aplica cuando el envío de un pedido completo se retrasa y el pago no se procesa hasta que los productos estén listos para su envío. -- **`frequencyInd`**: -- Se agregará el valor proporcionado en `bridgingMessageExtension.data.recurringData.recurringInd.frequencyInd` si está presente en el request base. -- Si no se proporciona un valor en el request base, él `frequencyInd` tendrá un valor por defecto de **FIXED_FREQUENCY (01)**. +**Beneficio:** Proporciona un mecanismo para que el Access Control Server (ACS) reconozca que la transacción no se completa de una sola vez, lo que ayuda a evitar rechazos innecesarios por transacciones incompletas o por la percepción de pagos duplicados. +**Ejemplo:** Un cliente compra varios artículos en una tienda en línea, pero algunos productos están en preventa y serán enviados más tarde. El indicador SPLIT_SHIPMENT se incluye para informar al emisor que el pago se fraccionará en función de los envíos. Si, por otro lado, la tienda notifica un retraso en todo el envío, se utilizaría el indicador DELAYED_SHIPMENT para evitar problemas con la autorización del pago. --- From 21a307292102dc0078492694d1d0eda7ec1e03dc Mon Sep 17 00:00:00 2001 From: Leidy Arango Date: Tue, 1 Oct 2024 15:20:40 -0500 Subject: [PATCH 2/2] feat: new information on use cases and order of information is updated --- .../api/integration/session.mdx | 3168 ++++++++-------- .../api/integration/session.mdx | 3176 +++++++++-------- 2 files changed, 3380 insertions(+), 2964 deletions(-) diff --git a/src/pages/en/three-d-s-server/api/integration/session.mdx b/src/pages/en/three-d-s-server/api/integration/session.mdx index 53a007f..38dd902 100644 --- a/src/pages/en/three-d-s-server/api/integration/session.mdx +++ b/src/pages/en/three-d-s-server/api/integration/session.mdx @@ -357,514 +357,911 @@ Este tipo de sesiones se presentan cuando el comerciante está iniciando una tra --- +## Agregar tarjeta -## Sesión transacción con Bridging Message Extension (BME) - -El 3DS **v2.3** introduce elementos de datos en la extensión del mensaje que pueden duplicar aquellos presentes en las versiones 3DS **v2.1 y v2.2**, pero con valores nuevos o diferentes. De acuerdo con la Especificación Básica **v2.3**, estos valores se establecen en la extensión del mensaje, mientras que en las versiones **v2.1 y v2.2** se encuentran en la parte central de los mensajes 3DS. En estos casos, el valor del elemento de datos en la extensión del mensaje prevalece sobre el valor correspondiente en la parte central del mensaje 3DS. Además, el Servidor 3DS genera el mensaje AReq **v2.1** o **v2.2** bajo la suposición de que el ACS no soporta la Extensión del Mensaje de Puente, y posteriormente, proporciona la información adicional a través de dicha extensión. Si se soporta la Extensión del Mensaje de Puente, el componente 3DS deberá ser compatible al menos con uno de los objetos de datos ***como datos recurrentes, datos de desafío, datos adicionales o datos de URL de archivo*** de la extensión del mensaje e implementar los requisitos correspondientes de la Especificación Básica **v2.3**. - -Con el objetivo de mejorar la tasa de aprobación en las autenticaciones, hemos ampliado este requerimiento creando la extensión BMS. Esta extensión facilita el acceso a la información disponible en la versión **2.3.1** del protocolo, que no estaba accesible en versiones anteriores **2.1.0 y 2.2.0**. De este modo, tanto el ACS como el servidor de directorios podrán tomar decisiones más informadas. - -### Especificaciones - -| Versión BME | Mastercard | Visa | -|-----------------------------|---------------|---------------| -| Versión 1.0 **habilitada** | **Soportada** | **Soportada** | -| Versión 2.0 | En proceso | En proceso | - -**Transacción con BME inicial** - -En esta versión, pondremos a disposición en la API de sesión varios elementos que podrá enviar para optimizar el uso de esta extensión. - -**cardSecurityCode:** Código de seguridad asociado a las tarjetas de crédito o débito. - -**threeDSRequestorAuthenticationInd:** Indicador de autenticación solicitado por el 3DS. - -**threeRIInd:** Indica el tipo de **3RI** pedido. Este elemento de datos proporciona adicional información al ACS para determinar el mejor enfoque para entregar una solicitud 3RI. - -**transChar:** Indica a la ACS transacciones específicas identificadas por el Comerciante. - -Ver más detalle en [Reglas a tener en cuenta de la session API](/en/three-d-s-server/api/sessions/rules) +### Opción PA -***La Extension solo se creara si es enviada en la session request bridgingMessageExtension*** +Durante el proceso de pago se tiene disponible la casilla que dice ***Guardar tarjeta para pagos futuros*** y se quiere verificar los fondos de la cuenta. +`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions -### Ejemplo de los datos en el request +***Request Lookup*** ```json - { - "acctNumber": "4005580000000040", - "cardExpiryDate": "2411", - "purchaseAmount": "8.25", - "redirectURI": "https://www.placetopay.com", + "deviceChannel": "02", + "threeDSChallengeInd": "04", + "threeDSAuthenticationInd": "04", + "acctNumber": "4009000000502", + "cardExpiryDate": "2902", + "purchaseAmount": "10", + "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", - "addPriorInformation": "Y", - "threeDSAuthenticationInd": "01", - "messageCategory": "01", - "deviceChannel": "03", - "threeRIInd": "01", - "recurringFrequency": "031", - "recurringExpiry": "20241020", - "bridgingMessageExtension": { - "data": { - "addData": { - "transChar": "CRYPTOCURRENCY_TRANSACTION", - "threeRIInd": "DELAYED_SHIPMENT", - "cardSecurityCode": "123", - "threeDSRequestorAuthenticationInd": "SPLIT_PAYMENT" - }, - "recurringData": { - "recurringDate": "20241023", - "recurringInd": { - "frequencyInd": "VARIABLE_FREQUENCY", - "amountInd": "VARIABLE_PURCHASE" - } - } - } - } + "reference": "Enero 2024", + "messageVersion": "2.2.0" } +``` +**deviceChannel:** 02 - Navegador. -``` +**threeDSChallengeInd:** indica si se solicita desafío o no, las opciones recomendables son: -### Ejemplo De la extención creada por 3DSS +* **03:** el requestor tiene la preferencia de que se aplique desafío. +* **04:** el desafío es obligatorio. + +**threeDSAuthenticationInd**, indica el tipo de autenticación. El valor de 04 corresponde a agregar tarjeta. + +**Nota:** El messageCategory es por defecto 01 (PA) + +***Response Lookup*** ```json { - { - "id": "A000000802-004", - "data": { - "addData": { - "transChar": "02", - "threeRIInd": "15", - "cardSecurityCode": "123", - "acquirerCountryCode": "170", - "acquirerCountryCodeSource": "01", - "threeDSRequestorAuthenticationInd": "10" - }, - "recurringData": { - "recurringInd": { - "amountInd": "02", - "frequencyInd": "02" - }, - "recurringDate": "20241023", - "recurringAmount": "8.25", - "recurringExpiry": "20241020", - "recurringCurrency": "USD", - "recurringFrequency": "031" - } - }, - "name": "Bridging", - "version": "1.0", - "criticalityIndicator": false - } + "action": "redirect", + "sessionToken": "e3f2d86cfffc96837f0762e08ec88a39704eff5ce2c7bbfeac83fac12c9f16d2", + "redirectURL": "https://3dss-dev.placetopay.ws/threeds/v2x/sessions/1253/e3f2d86cfffc96837f0762e08ec88a39704eff5ce2c7bbfeac83fac12c9f16d2", + "transactionID": 1297 } - ``` +**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo +### Opción NPA -**Versión 1 (v1):** - -- Atributos Soportados: +Esta opción no require verificar fondos de la cuenta. -**addData:** Esta versión incluye soporte únicamente para el atributo addData, que contiene información adicional sobre la transacción, como el indicador de autenticación y otros datos relevantes. +`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions -- Ejemplo JSON para v1: +***Request Lookup*** ```json { - "addData": { - "transChar": "CRYPTOCURRENCY_TRANSACTION", - "threeRIInd": "DELAYED_SHIPMENT", - "cardSecurityCode": "123", - "threeDSRequestorAuthenticationInd": "SPLIT_PAYMENT" - } + "deviceChannel": "02", + "messageCategory": "02", + "threeDSChallengeInd": "04", + "threeDSAuthenticationInd": "04", + "acctNumber": "4009000000502", + "cardExpiryDate": "2902", + "redirectURI": "https://www.placetopay.com/web", + "reference": "Febrero 2024", + "messageVersion": "2.2.0" } - ``` -**Versión 2 (v2):** +**deviceChannel:** 02 - Navegador -- Atributos Soportados: +**messageCategory:** 02 (NPA) -**addData:** Además de los datos adicionales que incluyen el indicador de autenticación, esta versión también soporta los mismos atributos que en v1. +**threeDSChallengeInd**, indica si se solicita desafío o no, las opciones recomendables son: -**recurringData:** Se introduce en v2 el soporte para el atributo recurringData, que permite manejar información sobre transacciones recurrentes como la cantidad, frecuencia, y fecha de vencimiento. +* **03:** el requestor tiene la preferencia de que se aplique desafío. +* **04:** el desafío es obligatorio. -- Ejemplo JSON para v2: +**threeDSAuthenticationInd**, indica el tipo de autenticación. El valor de 04 corresponde a agregar tarjeta. +***Response Lookup*** ```json { - "addData": { - "transChar": "CRYPTOCURRENCY_TRANSACTION", - "threeRIInd": "DELAYED_SHIPMENT", - "cardSecurityCode": "123", - "threeDSRequestorAuthenticationInd": "SPLIT_PAYMENT" - }, - "recurringData": { - "recurringDate": "20241023", - "recurringInd": { - "frequencyInd": "VARIABLE_FREQUENCY", - "amountInd": "VARIABLE_PURCHASE" - } - } + "action": "redirect", + "sessionToken": "7d1dd0ee35609312d7dbeb666481d9fc18f762e83a238583fa31c904c6c028d7", + "redirectURL": "https://3dss-dev.placetopay.ws/threeds/v2x/sessions/1254/7d1dd0ee35609312d7dbeb666481d9fc18f762e83a238583fa31c904c6c028d7", + "transactionID": 1298 } - ``` +**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo -## Transacción de Recurrencia con el BME - -### Atributos de la Transacción con Recurrencia +--- -Los atributos de la transacción de recurrencia para el **BME** son válidos si el valor del campo `threeRIInd` es igual a alguno de los siguientes: -- **RECURRING_TRANSACTION** (Transacción Recurrente) -- **INSTALMENT_TRANSACTION** (Transacción a Plazos) +## Pagos recurrentes (Suscripción mensual a una plataforma) -Cuando alguno de estos valores es el indicador en `threeRIInd`, se aplican las siguientes reglas para los indicadores de recurrencia sobre los datos del request base: +Una transacción recurrente es aquella en la que se realiza un cargo periódico al titular de la tarjeta de forma programada. +Estas transacciones son comunes en servicios de suscripción, como membresías, suscripciones a servicios de streaming, pagos de facturas recurrentes, etc. -**Datos Asociados a la Extensión del BME** +`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions -Los siguientes datos se asociarán a la extensión del **BME** de acuerdo con los indicadores previamente mencionados: +***Casos de uso:*** -### 1. `recurringAmount` +* **Suscripciones a servicios digitales:** Por ejemplo, una suscripción mensual a una plataforma de streaming de video. +* **Pagos de facturas recurrentes:** Como el pago mensual de servicios públicos, pagos de seguros, o pagos de préstamos. +* **Renovaciones de membresía:** Por ejemplo, renovación automática de membresía en gimnasios o clubs. -El campo `recurringAmount` será agregado a la extensión del **BME** en la sección de datos de recurrencia bajo las siguientes condiciones: +***Para VISA está disponible el flujo de pago recurrente a través del DAF*** -- **Condición 1**: El valor de `recurringInd.amountInd` es igual a **FIXED_FREQUENCY**. +**Primera Autenticación** -**Y** +Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación EMV 3DS donde el titular de la tarjeta esté disponible para autenticarse. -- **Condición 2**: El valor de `threeDSRequestorAuthenticationInd` es igual a: **RECURRING_TRANSACTION (02)**, **INSTALMENT_TRANSACTION (03)** o el valor de `threeRIInd` es igual a **RECURRING_TRANSACTION (01)**, **INSTALMENT_TRANSACTION (02)**. +### MASTERCARD -Si se cumplen las condiciones anteriores, el valor de `recurringAmount` se añadirá a la extensión del **BME**. El valor de `recurringAmount` será tomado del campo `purchaseAmount` en la solicitud base. +***Request Lookup*** +```json +{ + "deviceChannel": "02", + "threeDSAuthenticationInd": "02", + "threeDSChallengeInd": "04", + "recurringExpiry": "20250101", + "recurringFrequency": "2", + "purchaseInstalData": "2", + "acctNumber": "5107000000010018", + "cardExpiryDate": "2902", + "redirectURI": "https://www.placetopay.com/web", + "purchaseAmount": "10", + "purchaseCurrency": "USD", + "reference": "Enero 2024", + "messageVersion": "2.2.0" +} +``` -### 2. `recurringCurrency` +**deviceChannel:** 02 - Navegador -El campo `recurringCurrency` será agregado a la extensión del **BME** bajo las siguientes condiciones: +**threeDSAuthenticationInd:** 02 indica que la transacción es una recurrencia -- **Condición**: El valor de `threeRIInd` es igual a: **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. +**threeDSChallengeInd:** 04: el desafío es obligatorio -Cuando se cumple esta condición, el valor de `recurringCurrency` será añadido a la extensión del **BME**, y corresponderá al valor proporcionado en el request base bajo el campo `purchaseCurrency`. +**recurringExpiry:** fecha final de la suscripción +**recurringFrequency:** indica el número de días entre autorizaciones -### 3. `recurringExponent` +**purchaseInstalData:** Indica el número máximo de autorizaciones permitidas para pagos fraccionados. -El campo `recurringExponent` será agregado a la extensión del **BME** bajo las siguientes condiciones: +***Response Lookup*** -- **Condición**: El valor de `threeRIInd` es igual a: **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. +```json +{ + "action": "redirect", + "sessionToken": "398864c1e4c8217283b67f0312a2d8ee14e3814c0e000a92d4532bc406f65d2f", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86036/398864c1e4c8217283b67f0312a2d8ee14e3814c0e000a92d4532bc406f65d2f", + "transactionID": 248002 +} +``` -Cuando se cumple esta condición, el valor de `recurringExponent` será añadido a la extensión del **BME**, y corresponderá al valor proporcionado en el request base bajo el campo `purchaseExponent`. +**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo -### 4. `recurringDate` +### VISA -El campo `recurringDate` será agregado a la extensión del **BME** bajo las siguientes condiciones: +***Para Visa está disponible el flujo de pago dividido a través del DAF a partir de Abríl de 2024. Consultar para más detalle sobre VISA DAF*** -- **Condición**: El valor de `recurringInd.frequencyInd` es igual a: **FIXED_FREQUENCY (01)**. +**Prerrequisitos:** -Si esta condición se cumple, el campo `recurringDate` será añadido a la extensión del **BME**, siempre y cuando esté presente en el request base en `bridgingMessageExtension.data.recurringData.recurringDate`. +1. El identificador de comercio de **Visa Merchant ID VMID** deberá estar disponible en la subscripción. +2. El rango de tarjetas debe soportar el procesamiento con DAF +Datos requeridos en la petición API -### 5. `recurringExpiry` +**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes -El valor de `recurringExpiry` es calculado automáticamente por el sistema según las siguientes condiciones. +* billAddrCity +* billAddrCountry +* billAddrLine1 +* billAddrPostCode +* billAddrState +* email +* mobilePhone -- **Condición**: El valor de `threeRIInd` es igual a **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. -- **Condición**: Si el valor de `deviceChannel` en los atributos es igual a **RI** y no existe un valor previo para `recurringExpiry` en el request base. -- El campo `recurringExpiry` se toma de los datos de los datos enviados en el request base. +***Request Lookup*** +```json +{ + "deviceChannel": "02", + "threeDSAuthenticationInd": "02", + "threeDSChallengeInd": "04", + "recurringExpiry": "20260101", + "recurringFrequency": "2", + "acctNumber": "4931119220729333", + "cardExpiryDate": "2902", + "purchaseAmount": "1.02", + "redirectURI": "https://www.placetopay.com/web", + "purchaseCurrency": "USD", + "reference": "Enero 2024", + "billAddrCity": "Medellín", + "billAddrCountry": "COL", + "billAddrLine1": "Carrera 65 # 45 - 20", + "billAddrPostCode": "050004", + "billAddrState": "ANT", + "email": "john.doe@evertecinc.com", + "mobilePhone": { + "cc": "57", + "subscriber": "30011122333" + }, + "messageVersion": "2.2.0" +} +``` -### 6. `recurringFrequency` +**deviceChannel:** 02 - Navegador -El valor de `recurringFrequency` será tomado del request base bajo las siguientes condiciones: +**threeDSAuthenticationInd:** 02 indica que la transacción es recurrente -- **Condición**: El valor de `recurringInd.frequencyInd` es igual a **FIXED_FREQUENCY (01)**. +**threeDSChallengeInd:** 04: el desafío es obligatorio -Si esta condición se cumple, el valor de `recurringFrequency` se tomará directamente del request base de lo contrario no se asignara un valor a la extension. +**recurringExpiry:** fecha final de la suscripción +**recurringFrequency:** indica el número de días entre autorizaciones -### 7. `recurringInd` +**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes -El campo `recurringInd` se compone de dos subcampos: `amountInd` y `frequencyInd`. Ambos serán agregados a la extensión del **BME** bajo las siguientes condiciones: +* billAddrCity +* billAddrCountry +* billAddrLine1 +* billAddrPostCode +* billAddrState +* email +* mobilePhone -- **Condición**: El valor de `threeRIInd` es igual a **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. -Cuando se cumple esta condición, los siguientes subcampos serán agregados: +***Response Lookup*** -#### Subcampos +```json +{ + "action": "redirect", + "sessionToken": "c56d238b35d23b8cf564f2b6b641ed0e8a3056fb639d9df245d4bec825e4b74a", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86039/c56d238b35d23b8cf564f2b6b641ed0e8a3056fb639d9df245d4bec825e4b74a", + "transactionID": 248005 +} +``` -- **`amountInd`**: Se agregará el valor proporcionado en `bridgingMessageExtension.data.recurringData.recurringInd.amountInd` si está presente en el request base y -si no se proporciona un valor en el request base, él `amountInd` tendrá un valor por defecto de **FIXED_PURCHASE (01)**. +**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo -- **`frequencyInd`**: Se agregará el valor proporcionado en `bridgingMessageExtension.data.recurringData.recurringInd.frequencyInd` si está presente en el request base y si no se proporciona un valor en el request base, él `frequencyInd` tendrá un valor por defecto de **FIXED_FREQUENCY (01)**. +**Autenticaciones posteriores** -## Beneficios de la V2.3.1 del protocolo con el BME en 3DS con sus nuevos indicadores +Envíe una solicitud 3RI por el valor de la recurrencia + +### MASTERCARD + +***Request Lookup*** + +```json +{ + "deviceChannel": "03", + "threeRIInd": "01", + "threeDSRequestorPriorAuthenticationInfo": { + "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", + "threeDSReqPriorAuthTimestamp": "2024-09-09T19:48:20+00:00", + "threeDSReqPriorRef": "fa4544ea-9002-444a-a891-5fd126735c41" + }, + "acctNumber": "5107000000010018", + "cardExpiryDate": "2902", + "purchaseAmount": "5", + "redirectURI": "https://www.placetopay.com/web", + "purchaseCurrency": "USD", + "reference": "Febrero 2024", + "messageVersion": "2.2.0" +} +``` + +**deviceChannel:** 03 indica que el canal es 3RI + +**threeRIInd:** 01 indica que la transacción es recurrente + +**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, +02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, +consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, +consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, +si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +***Response Lookup*** + +```json +{ + "action": "continue", + "messageType": "ARes", + "threeDSServerTransID": "2e6bd601-7a61-4fa5-accc-10a30e0d66db", + "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", + "acsTransID": "80fb86d5-35e7-4249-b6df-6905d9c6ba4f", + "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", + "dsTransID": "3a961497-8ac7-447d-9926-06bf4c1fa1a9", + "messageVersion": "2.2.0", + "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", + "authenticationValue": "xgQiqOYmAAAAAAAAAAAAAAAAAAA=", + "eci": "07", + "messageExtension": [ + { + "name": "ACS RBA", + "id": "A000000004-acsRBA", + "criticalityIndicator": false, + "data": { + "A000000004-acsRBA": { + "status": "success", + "score": "500", + "decision": "Low Risk", + "reasonCode1": "H", + "reasonCode2": "GG" + } + } + } + ], + "transStatus": "Y", + "whiteListStatusSource": "03", + "whiteListStatus": "Y", + "deviceChannel": "03", + "messageCategory": "PA", + "authMethod": "01", + "authTimestamp": "2024-09-09T19:52:20+00:00", + "transactionID": 248003 +} +``` + +**Actión:** continue indica que la API retornara la información de la autenticación,y por ende no es necesario consumir endpoints adicionales para continuar con el flujo + + +### VISA + +***Para Visa está disponible el flujo de pago dividido a través del DAF a partir de Abríl de 2024. Consultar para más detalle sobre VISA DAF*** + +**Prerrequisitos:** + +1. El identificador de comercio de **Visa Merchant ID VMID** deberá estar disponible en la subscripción. +2. El rango de tarjetas debe soportar el procesamiento con DAF + +Datos requeridos en la petición API + +**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes + +* billAddrCity +* billAddrCountry +* billAddrLine1 +* billAddrPostCode +* billAddrState +* email +* mobilePhone + +***Request Lookup*** + +```json +{ + "deviceChannel": "03", + "threeRIInd": "01", + "threeDSRequestorPriorAuthenticationInfo": { + "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", + "threeDSReqPriorAuthTimestamp": "2024-09-09T20:06:30+00:00", + "threeDSReqPriorRef": "3b632ce4-26ea-407d-a2a0-4a7b27c91c14" + }, + "acctNumber": "4931119220729333", + "cardExpiryDate": "2902", + "purchaseAmount": "1.00", + "redirectURI": "https://www.placetopay.com/web", + "purchaseCurrency": "USD", + "reference": "Febrero 2024", + "billAddrCity": "Medellín", + "billAddrCountry": "COL", + "billAddrLine1": "Carrera 65 # 45 - 20", + "billAddrPostCode": "050004", + "billAddrState": "ANT", + "email": "john.doe@evertecinc.com", + "mobilePhone": { + "cc": "57", + "subscriber": "30011122333" + }, + "messageVersion": "2.2.0" +} +``` + +**deviceChannel:** 03 indica que el canal es 3RI + +**threeRIInd:** 01 indica que la transacción es recurrente + +**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa **primera autenticación**, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes + +* billAddrCity +* billAddrCountry +* billAddrLine1 +* billAddrPostCode +* billAddrState +* email +* mobilePhone + + +***Response Lookup*** + +```json +{ + "action": "continue", + "messageType": "ARes", + "threeDSServerTransID": "0e0ee43c-9601-4e29-9c8d-32b893ded4db", + "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", + "acsTransID": "ab8b1aec-2cf9-4d60-a45f-8d499894dae5", + "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", + "dsTransID": "072b329b-ca7f-47ff-a6b0-ff5a3d6321cb", + "messageVersion": "2.2.0", + "acsOperatorID": "10078025", + "authenticationValue": "BpkCBIU4VgAAAABkhAJTdYknEmE=", + "eci": "05", + "messageExtension": [ + { + "name": "DAF Extension", + "id": "A000000003-003", + "criticalityIndicator": false, + "data": { + "chAccReqID": "MUHZx0nojuVVAZJwPD4CWps0RuxUPxepI8sk57Yd/s4=", + "authPayProcessReqInd": "01", + "version": "1.0", + "authPayCredStatus": "Y", + "dafAdvice": "01" + } + } + ], + "transStatus": "Y", + "whiteListStatusSource": "03", + "whiteListStatus": "Y", + "deviceChannel": "03", + "messageCategory": "PA", + "authMethod": "01", + "authTimestamp": "2024-09-09T20:52:36+00:00", + "transactionID": 248013 +} +``` + +**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo + +--- + +## Pagos a Plazos + +Una transacción a plazos es aquella en la que el monto total de la compra se divide en pagos periódicos más pequeños a lo largo de un período de tiempo determinado. Estos pagos pueden incluir intereses u otras tarifas asociadas con la financiación de la compra. + +A diferencia de una transacción recurrente, en una transacción a plazos, el titular de la tarjeta realiza una única compra que se divide en varios pagos, en lugar de autorizar múltiples cargos separados. Cada pago puede requerir una autorización individual, pero el titular de la tarjeta no necesita autorizar los pagos futuros al realizar la compra inicial. Adicionalmente, la compra a plazos tiene límite en cantidad de autorizaciones ***purchaseInstalData*** y ***recurringExpiry*** y los montos son acumulados, la recurrencia tiene límite la fecha recurringExpiry y el monto es siempre el mismo, o al menos ese es el máximo + +`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions + +***Casos de uso:*** + +* **Compras a plazos en línea:** Por ejemplo, comprar un artículo como una computadora y dividir el pago en cuotas mensuales. +* **Financiación de productos o servicios:** Como la compra de muebles para el hogar, equipos electrónicos, o servicios médicos que ofrecen opciones de financiación a plazos. +* **Planes de pago de vacaciones:** Agencias de viajes que ofrecen la opción de pagar las vacaciones en varios pagos antes de la fecha del viaje + +***Para VISA está disponible el flujo de pagos a plazo a través del DAF*** + +**Primera Autenticación** + +Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación EMV 3DS donde el titular de la tarjeta esté disponible para autenticarse. + +### MASTERCARD + +***Request Lookup*** + +```json +{ + "deviceChannel": "02", + "threeDSAuthenticationInd": "03", + "threeDSChallengeInd": "04", + "recurringExpiry": "20250101", + "recurringFrequency": "2", + "purchaseInstalData": "2", + "acctNumber": "5107000000010018", + "cardExpiryDate": "2902", + "redirectURI": "https://www.placetopay.com/web", + "purchaseAmount": "1000", + "purchaseCurrency": "USD", + "reference": "Enero 2024", + "messageVersion": "2.2.0" +} +``` + +**deviceChannel:** 02 - Navegador + +**threeDSAuthenticationInd:** 03 indica que la transacción es a plazos + +**threeDSChallengeInd:** 04: el desafío es obligatorio + +**recurringExpiry:** fecha final de la suscripción + +**recurringFrequency:** indica el número de días entre autorizaciones + +**purchaseInstalData:** Indica el número máximo de autorizaciones permitidas para pagos fraccionados. -Ver más detalle en [Reglas a tener en cuenta de la session API con BME](/en/three-d-s-server/api/sessions/rules#elementos-que-podra-enviar-para-optimizar-el-uso-de-esta-extension-bme) +***Response Lookup*** -**threeDSRequestorAuthenticationInd:** usado en el request base como: threeDSAuthenticationInd, este campo incluye nuevos indicadores disponibles en la versión 2.3.1 +```json +{ + "action": "redirect", + "sessionToken": "d6aa0439b5f0e29e6a9413321962cf962593130717098cbcde322b6bb50808fb", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86048/d6aa0439b5f0e29e6a9413321962cf962593130717098cbcde322b6bb50808fb", + "transactionID": 248014 +} +``` -- **BILLING_AGREEMENT (07):** Este indicador se refiere a un acuerdo de facturación entre el cliente y el comerciante, donde el cliente autoriza pagos recurrentes o futuros sin necesidad de autenticar cada transacción individualmente. Es común en suscripciones o servicios continuos donde los pagos se procesan periódicamente. +**Actión:** redirect indica que LA API retornara un redirectURL que deberá ser consumido para continuar con el flujo -- **SPLIT_SHIPMENT (08):** Indica que el pedido se enviará en múltiples envíos. Esto puede ocurrir cuando el comerciante no tiene todos los artículos en stock o por conveniencia logística. En este caso, el cargo total puede dividirse y procesarse en función de los envíos parciales. -- **DELAYED_SHIPMENT (09):** Se refiere a una transacción en la que el envío del pedido se retrasa intencionalmente, ya sea por solicitud del cliente o por motivos logísticos del comerciante. El pago puede procesarse en el momento de la compra, pero el envío se llevará a cabo más tarde. +### VISA -- **SPLIT_PAYMENT (10):** Este indicador señala que el pago de una transacción se divide en varias partes, ya sea entre diferentes métodos de pago o en diferentes momentos. Por ejemplo, el cliente podría pagar una parte con una tarjeta de crédito y el resto con otro método, o pagar en varias cuotas. +***Request Lookup*** -- **MASTERCARD_THE_PAYMENT_REQUEST_IS_FOR_AN_AGENT_PAYMENT_TRANSACTION (85):** Este indicador se utiliza cuando la solicitud de pago está relacionada con una transacción gestionada por un agente en nombre del comerciante o cliente. Es común en casos donde una agencia u otro intermediario gestiona el pago, actuando como un tercero que facilita la transacción entre el comerciante y el cliente. +```json +{ + "deviceChannel": "02", + "threeDSAuthenticationInd": "03", + "threeDSChallengeInd": "04", + "recurringExpiry": "20260101", + "recurringFrequency": "2", + "purchaseInstalData": "2", + "acctNumber": "4931119220729333", + "cardExpiryDate": "2902", + "purchaseAmount": "1000", + "redirectURI": "https://www.placetopay.com/web", + "purchaseCurrency": "USD", + "reference": "Enero 2024", + "billAddrCity": "Medellín", + "billAddrCountry": "COL", + "billAddrLine1": "Carrera 65 # 45 - 20", + "billAddrPostCode": "050004", + "billAddrState": "ANT", + "email": "john.doe@evertecinc.com", + "mobilePhone": { + "cc": "57", + "subscriber": "30011122333" + }, + "messageVersion": "2.2.0" +} +``` -- **MASTERCARD_FOR_UNKNOWN_OR_UNDEFINED_FINAL_AMOUNT_BEFORE_PURCHASE_TRANSACTION (86):** Este indicador se emplea cuando el monto final de la transacción no se conoce o no está definido en el momento de la compra. Es útil en situaciones donde el importe total podría variar, como cuando se realizan reservas o compras que pueden implicar cargos adicionales, pero el monto exacto se determina posteriormente (por ejemplo, reservas de hotel, alquileres de automóviles o servicios con tarifas variables). +**deviceChannel:** 02 - Navegador +**threeDSAuthenticationInd:** 03 indica que la transacción es a plazos -**threeRIInd:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 +**threeDSChallengeInd:** 04: el desafío es obligatorio -- **DEVICE_BINDING_STATUS_CHECK (13):** Este indicador se utiliza para verificar el estado de la vinculación de un dispositivo. Se refiere a situaciones en las que es necesario verificar si un dispositivo está vinculado correctamente a una cuenta o tarjeta, lo que puede mejorar la seguridad de las transacciones recurrentes o de pago. +**recurringExpiry:** fecha final de la suscripción -- **CARD_SECURITY_CODE_STATUS_CHECK (14):** Este indicador permite verificar el estado del código de seguridad de la tarjeta (CVV o CVC). Es común en transacciones donde se requiere una autenticación adicional del código de seguridad para validar la legitimidad de la tarjeta utilizada. +**recurringFrequency:** indica el número de días entre autorizaciones -- **DELAYED_SHIPMENT (15):** Este indicador se utiliza para transacciones en las que el envío del producto o servicio se realizará en una fecha posterior. Es útil para casos en los que el pago se procesa de inmediato, pero la entrega se retrasa o se realiza más adelante. +**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes -- **SPLIT_PAYMENT (16):** Se refiere a una transacción en la que el pago se divide en varias partes. Esto puede ocurrir cuando el comprador elige pagar en diferentes cuotas o mediante diferentes métodos de pago para una sola transacción. +* billAddrCity +* billAddrCountry +* billAddrLine1 +* billAddrPostCode +* billAddrState +* email +* mobilePhone -- **FIDO_CREDENTIAL_DELETION (17):** Este indicador se emplea cuando se solicita la eliminación de las credenciales de FIDO (Fast Identity Online) asociadas a una cuenta o dispositivo. FIDO es un estándar de autenticación que permite la eliminación de credenciales para mejorar la seguridad. +***Response Lookup*** -- **FIDO_CREDENTIAL_REGISTRATION (18):** Se utiliza cuando se realiza la inscripción de nuevas credenciales FIDO. Este proceso vincula un dispositivo o cuenta a un método de autenticación más seguro, que es independiente de contraseñas tradicionales. -- **DECOUPLED_AUTHENTICATION_FALLBACK (19):** Este indicador se activa cuando se produce un fallo en el proceso de autenticación desacoplada. La autenticación desacoplada permite al titular de la tarjeta autenticarse en un canal distinto al del comercio (por ejemplo, a través de una app bancaria), y este código indica que el método ha fallado y se requiere una alternativa. +```json +{ + "action": "redirect", + "sessionToken": "96c03fe78346d11024057dfccbc8eed58b736de36631c8ff25e5c154386ade1f", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86104/96c03fe78346d11024057dfccbc8eed58b736de36631c8ff25e5c154386ade1f", + "transactionID": 248070 +} +``` -**transChar:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 +**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo -- **CRYPTOCURRENCY_TRANSACTION (01):** Este indicador se utiliza para identificar transacciones relacionadas con criptomonedas. Permite que el emisor y otros actores del sistema de pagos reconozcan de forma explícita cuando la transacción involucra la compra, venta o intercambio de criptomonedas, lo que puede requerir un tratamiento especial debido a la naturaleza de este tipo de activos. -- **NFT_TRANSACTION (02):** Este indicador está diseñado para transacciones que implican la compra o el intercambio de tokens no fungibles (NFTs). Los NFTs son activos digitales únicos basados en tecnología blockchain, y este código ayuda a diferenciar estas transacciones de las compras tradicionales, ofreciendo una capa adicional de información relevante para la autenticación y el análisis de riesgos. +**Autenticaciones posteriores** +Envíe una solicitud 3RI por el valor del pago a plazos -**amountInd:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 +### MASTERCARD -- **FIXED_PURCHASE (01):** Indica que el monto de la transacción es fijo y no varía. Este tipo de compra es común en transacciones estándar donde el valor del producto o servicio está predefinido y no cambia durante el proceso de pago. +***Request Lookup*** -- **VARIABLE_PURCHASE (02):** Indica que el monto de la transacción puede variar. Se utiliza en casos donde el valor final de la compra no está determinado en el momento de la autenticación inicial, como en situaciones de envío fraccionado, cargos adicionales, o ajustes por servicios o productos variables. Este indicador proporciona flexibilidad en el manejo de transacciones con montos ajustables. +```json +{ + "deviceChannel": "03", + "threeRIInd": "02", + "recurringExpiry": "20250101", + "recurringFrequency": "2", + "purchaseInstalData": "2", + "threeDSRequestorPriorAuthenticationInfo": { + "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", + "threeDSReqPriorAuthTimestamp": "2024-09-10T16:12:47+00:00", + "threeDSReqPriorRef": "51bbcd10-0c31-4efc-ad49-ba9bdea2f413" + }, + "acctNumber": "5107000000010018", + "cardExpiryDate": "2902", + "purchaseAmount": "500", + "redirectURI": "https://www.placetopay.com/web", + "purchaseCurrency": "USD", + "reference": "Febrero 2024", + "messageVersion": "2.2.0" +} +``` +**deviceChannel:** 03 indica que el canal es 3RI -**frequencyInd:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 +**threeRIInd:** 02 indica que la transacción es a plazos -- **FIXED_FREQUENCY (01):** Indica que la frecuencia de la transacción recurrente es fija. Es utilizado cuando los pagos se realizan a intervalos regulares y predefinidos, como pagos mensuales, suscripciones o cuotas de préstamos. La periodicidad es constante y no cambia a lo largo del tiempo. +**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -- **VARIABLE_FREQUENCY (02):** Indica que la frecuencia de la transacción recurrente puede variar. Se aplica en casos donde los pagos no se realizan a intervalos regulares, o la frecuencia cambia según las necesidades o circunstancias, como en pagos esporádicos o cuando el intervalo entre pagos no es predecible. Este indicador brinda flexibilidad para manejar pagos recurrentes que no siguen un patrón estricto. +**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -## Casos de usos del BME +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -1. **Pagos Recurrentes (Recurring Payments)** +***Response Lookup*** -Indicadores Relevantes: -- **threeRIInd:** RECURRING_TRANSACTION (01) -- **amountInd:** FIXED_PURCHASE (01) o VARIABLE_PURCHASE (02) -- **frequencyInd:** FIXED_FREQUENCY (01) o VARIABLE_FREQUENCY (02) +```json +{ + "action": "continue", + "messageType": "ARes", + "threeDSServerTransID": "f5e8b9c4-5cfd-461d-9115-e51fe7d5c42a", + "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", + "acsTransID": "98d5739a-c623-4512-9f87-a48368848d44", + "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", + "dsTransID": "def67c44-653a-4879-b500-935d8429b4a4", + "messageVersion": "2.2.0", + "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", + "authenticationValue": "xgRKM8pzAAAAAAAAAAAAAAAAAAA=", + "eci": "07", + "transStatus": "Y", + "whiteListStatusSource": "03", + "whiteListStatus": "Y", + "deviceChannel": "03", + "messageCategory": "PA", + "authMethod": "01", + "authTimestamp": "2024-09-10T16:16:19+00:00", + "transactionID": 248067 +} +``` -**Caso de Uso:** Cuando un comerciante quiere procesar una transacción recurrente con un monto fijo o variable (como una suscripción mensual de un servicio o cuotas de pago de un préstamo), el BME puede ser utilizado para indicar el tipo de transacción recurrente, la frecuencia con la que se realizarán los pagos, y si el monto será fijo o variable. +**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo -**Ejemplo:** Una plataforma de streaming quiere cobrar una suscripción mensual fija (por ejemplo, $10), pero también puede manejar casos donde el usuario paga montos variables basados en consumo, con una frecuencia no predefinida. +### VISA -2. **Transacciones a Plazos (Instalment Payments)** +***Para Visa está disponible el flujo de pago dividido a través del DAF a partir de Abríl de 2024. Consultar para más detalle sobre VISA DAF*** -Indicadores Relevantes: +**Prerrequisitos:** -**threeRIInd:** INSTALMENT_TRANSACTION (02) -**amountInd:** FIXED_PURCHASE (01) o VARIABLE_PURCHASE (02) -**frequencyInd:** FIXED_FREQUENCY (01) o VARIABLE_FREQUENCY (02) +1. El identificador de comercio de **Visa Merchant ID VMID** deberá estar disponible en la subscripción. +2. El rango de tarjetas debe soportar el procesamiento con DAF -**Caso de Uso:** Para pagos a plazos, como la compra de un producto caro en cuotas, el BME puede especificar que la transacción es a plazos y ajustar la frecuencia de los pagos, además de indicar si los montos son fijos o variables a lo largo del tiempo. +Datos requeridos en la petición API -**Ejemplo:** Un cliente compra un electrodoméstico costoso y elige pagarlo en 6 cuotas fijas. Se puede usar el BME para indicar que es un pago a plazos con una frecuencia mensual fija y un monto constante. +**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes -3. **Envío Dividido o Demorado (Split or Delayed Shipment)** +* billAddrCity +* billAddrCountry +* billAddrLine1 +* billAddrPostCode +* billAddrState +* email +* mobilePhone -Indicadores Relevantes: +***Request Lookup*** -**threeRIInd:** DELAYED_SHIPMENT (15) o SPLIT_PAYMENT (16) +```json +{ + "deviceChannel": "03", + "threeRIInd": "02", + "threeDSRequestorPriorAuthenticationInfo": { + "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", + "threeDSReqPriorAuthTimestamp": "2024-09-10T16:35:31+00:00", + "threeDSReqPriorRef": "f0bb9172-018d-42ae-b2ad-715e274bddef" + }, + "acctNumber": "4931119220729333", + "cardExpiryDate": "2902", + "purchaseAmount": "500", + "redirectURI": "https://www.placetopay.com/web", + "purchaseCurrency": "USD", + "reference": "Febrero 2024", + "billAddrCity": "Medellín", + "billAddrCountry": "COL", + "billAddrLine1": "Carrera 65 # 45 - 20", + "billAddrPostCode": "050004", + "billAddrState": "ANT", + "email": "john.doe@evertecinc.com", + "mobilePhone": { + "cc": "57", + "subscriber": "30011122333" + }, + "messageVersion": "2.2.0" +} +``` -**Caso de Uso:** Para escenarios donde el pedido de un cliente se divide en varios envíos o donde el envío es retrasado, el BME puede proporcionar detalles adicionales sobre la naturaleza del pago. Esto es útil para gestionar transacciones donde una parte del pedido se envía ahora y otra más tarde, o cuando el envío se pospone. +**deviceChannel:** 03 indica que el canal es 3RI -**Ejemplo:** Un cliente hace una compra de múltiples artículos, pero algunos productos no están disponibles para envío inmediato. Se usa DELAYED_SHIPMENT para señalar al banco emisor que la transacción incluye envíos demorados. +**threeRIInd:** 02 indica que la transacción es a plazos +**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -4. **Transacciones con Monedas Digitales (Cryptocurrency/NFT Transactions)** +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -Indicadores Relevantes: +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa **primera autenticación**, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**transChar:** CRYPTOCURRENCY_TRANSACTION (01) o NFT_TRANSACTION (02) +**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes -**Caso de Uso:** En situaciones donde el pago se realiza con criptomonedas o NFT (tokens no fungibles), el BME puede ser usado para indicar que el pago no es con moneda tradicional, sino con activos digitales. Esto ayuda a los bancos emisores a evaluar correctamente el riesgo asociado a la transacción. +* billAddrCity +* billAddrCountry +* billAddrLine1 +* billAddrPostCode +* billAddrState +* email +* mobilePhone -**Ejemplo:** Un cliente compra un NFT en una plataforma de arte digital utilizando criptomonedas. El BME indicaría que la transacción está asociada con un NFT_TRANSACTION o CRYPTOCURRENCY_TRANSACTION. +***Response Lookup*** -5. **Chequeo de Estado del Código de Seguridad de la Tarjeta (Card Security Code Status Check)** -Indicadores Relevantes: +```json +{ + "action": "continue", + "messageType": "ARes", + "threeDSServerTransID": "50709e2a-4dad-4c60-acaa-c5d3e1ede924", + "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", + "acsTransID": "3cdfa009-4018-4230-a72b-658587a5794c", + "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", + "dsTransID": "72455b8f-5a57-4716-93fe-b72d3878805b", + "messageVersion": "2.2.0", + "acsOperatorID": "10078025", + "authenticationValue": "BpkCBSMnAAAAAMNQhAJUdYknEmE=", + "eci": "05", + "messageExtension": [ + { + "name": "DAF Extension", + "id": "A000000003-003", + "criticalityIndicator": false, + "data": { + "chAccReqID": "MUHZx0nojuVVAZJwPD4CWps0RuxUPxepI8sk57Yd/s4=", + "authPayProcessReqInd": "01", + "version": "1.0", + "authPayCredStatus": "Y", + "dafAdvice": "01" + } + } + ], + "transStatus": "Y", + "whiteListStatusSource": "03", + "whiteListStatus": "Y", + "deviceChannel": "03", + "messageCategory": "PA", + "authMethod": "01", + "authTimestamp": "2024-09-10T19:45:25+00:00", + "transactionID": 248109 +} +``` -**threeRIInd:** CARD_SECURITY_CODE_STATUS_CHECK (14) +**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo -**Caso de Uso:** Este caso es relevante cuando el comerciante necesita realizar un chequeo del código de seguridad (CVV) asociado a la tarjeta sin realizar un pago inmediato. El BME permite agregar información adicional que indique que la transacción es solo una verificación del CVV. -**Ejemplo:** Un servicio de verificación de tarjetas realiza un chequeo del código CVV antes de que se complete una transacción en el futuro. El BME indicaría este escenario sin necesidad de procesar un pago. +--- -6. **Eliminación y Registro de Credenciales FIDO (FIDO Credential Deletion/Registration)** -Indicadores Relevantes: +## Envío dividido -**threeRIInd:** FIDO_CREDENTIAL_DELETION (17) o FIDO_CREDENTIAL_REGISTRATION (18) +Este tipo de transacción se utiliza para indicar que la transacción corresponde a un envío dividido ***Split Shipment***. En un escenario de Split Shipment, un pedido o reserva se paga en varias transacciones porque los servicios o productos se proporcionan en momentos diferentes. Aunque el pedido inicial es único, la entrega de sus componentes se divide, y cada parte puede ser cobrada cuando esté lista o confirmada. -**Caso de Uso:** Estos indicadores se utilizan cuando se gestionan credenciales FIDO, un estándar para autenticación sin contraseña. El BME puede incluir información sobre la eliminación o el registro de credenciales FIDO en el contexto de una transacción, mejorando la seguridad del proceso. +Los Envíos divididos permiten a los comerciantes solicitar un nuevo CAVV para obtener protección de responsabilidad en autorizaciones posteriores que puedan ser necesarias debido a múltiples autorizaciones relacionadas con un solo pedido. Este tipo de solicitudes pueden ser realizadas por cualquier comerciante que deba procesar varias autorizaciones asociadas a una única autenticación. -**Ejemplo:** Un banco realiza una actualización de credenciales FIDO vinculadas a una cuenta de usuario. El BME incluiría indicadores que registren o eliminen dichas credenciales en la transacción. +***Datos a considerar al procesar envíos divididos:*** +* El nombre del solicitante 3DS **threeDSRequestorName** y el nombre del comerciante **merchantName** deben ser los mismos en la solicitud de autenticación inicial y en cada una de las solicitudes 3RI asociadas. +* El valor total de todas las solicitudes 3RI no debe superar la suma del monto de la solicitud inicial de autenticación y del total de los montos ya autorizados. Los emisores deben realizar un seguimiento del valor total utilizando los datos de transacción tanto de la autorización directa como de la autenticación **EMV 3DS** -7. **Pagos Diferidos o Fraccionados (Split/Delayed Shipment)** +`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions -Indicadores Relevantes: -**threeDSRequestorAuthenticationInd:** SPLIT_SHIPMENT (08) o DELAYED_SHIPMENT (09) -**threeRIInd:** DELAYED_SHIPMENT (15) o SPLIT_PAYMENT (16) +***Casos de Uso:*** -**Caso de Uso:** Este escenario se aplica cuando un pedido se divide en varios envíos (split shipment) o cuando se retrasa el envío (delayed shipment). Los indicadores permiten que el emisor reconozca que la transacción no se completará de inmediato en su totalidad, sino que se llevará a cabo en varias partes o en momentos diferentes. +* **Pedidos con múltiples artículos:** un cliente realiza un pedido de varios productos que no están todos disponibles en el almacén al mismo tiempo. +Por lo tanto, el comerciante decide enviar los artículos en varias entregas, dependiendo de la disponibilidad. -**SPLIT_SHIPMENT (08):** Se utiliza cuando la compra del cliente incluye múltiples productos que se enviarán por separado en diferentes momentos. -**DELAYED_SHIPMENT (09):** Aplica cuando el envío de un pedido completo se retrasa y el pago no se procesa hasta que los productos estén listos para su envío. -**Beneficio:** Proporciona un mecanismo para que el Access Control Server (ACS) reconozca que la transacción no se completa de una sola vez, lo que ayuda a evitar rechazos innecesarios por transacciones incompletas o por la percepción de pagos duplicados. +| Evento | Valor | Descripción | +|---------------------------------------------------------------------------------|-------|------------------------------------------------------------------------------------------------------------------------| +| Autenticación inicial | $167 | Autenticación inicial por el importe total del pedido. | +| Autorización Inicial del primer bien/servicio. | $25 | Se realiza la autorización para el primer bien/servicio utilizando CAVV a partir de la autenticación inicial anterior. | +| 3RI Solicitud de segundo bien/servicio. | $12 | Envíe una solicitud 3RI por el valor del segundo bien/servicio. | +| Autorización como reautorización MIT para un segundo bien/servicio. | $12 | Se realiza la autorización del segundo bien/servicio utilizando el CAVV de la solicitud 3RI anterior. | +| 3RI Solicitud de tercer y último bien/servicio. | $130 | Enviar una solicitud 3RI por el valor del tercer y último bien/servicio. | +| Autorización como reautorización del MIT para el tercer y último bien/servicio. | $130 | Realizar la autorización del tercer y último bien/servicio utilizando el CAVV de la solicitud 3RI anterior. | -**Ejemplo:** Un cliente compra varios artículos en una tienda en línea, pero algunos productos están en preventa y serán enviados más tarde. El indicador SPLIT_SHIPMENT se incluye para informar al emisor que el pago se fraccionará en función de los envíos. Si, por otro lado, la tienda notifica un retraso en todo el envío, se utilizaría el indicador DELAYED_SHIPMENT para evitar problemas con la autorización del pago. +****Para Visa está disponible el flujo de envío dividido a través del DAF**** ---- -## Agregar tarjeta +**Primera Autenticación** -### Opción PA +***Autenticación inicial por el importe total de la orden.*** -Durante el proceso de pago se tiene disponible la casilla que dice ***Guardar tarjeta para pagos futuros*** y se quiere verificar los fondos de la cuenta. +Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación EMV 3DS donde el titular de la tarjeta esté disponible para autenticarse por el valor total del pedido. Esta autenticación inicial puede utilizarse para la autorización asociada a la primera entrega de los bienes/servicios. -`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions +### MASTERCARD ***Request Lookup*** ```json { - "deviceChannel": "02", + "deviceChannel": "02", + "threeDSAuthenticationInd": "01", "threeDSChallengeInd": "04", - "threeDSAuthenticationInd": "04", - "acctNumber": "4009000000502", + "acctNumber": "5107000000010018", "cardExpiryDate": "2902", - "purchaseAmount": "10", "redirectURI": "https://www.placetopay.com/web", + "purchaseAmount": "167", "purchaseCurrency": "USD", "reference": "Enero 2024", "messageVersion": "2.2.0" } ``` -**deviceChannel:** 02 - Navegador. - -**threeDSChallengeInd:** indica si se solicita desafío o no, las opciones recomendables son: +**deviceChannel:** 02 - Navegador -* **03:** el requestor tiene la preferencia de que se aplique desafío. -* **04:** el desafío es obligatorio. +**threeDSAuthenticationInd:** 01 indica que la transacción es de pago -**threeDSAuthenticationInd**, indica el tipo de autenticación. El valor de 04 corresponde a agregar tarjeta. +**threeDSChallengeInd:** 04: el desafío es obligatorio -**Nota:** El messageCategory es por defecto 01 (PA) ***Response Lookup*** + ```json { "action": "redirect", - "sessionToken": "e3f2d86cfffc96837f0762e08ec88a39704eff5ce2c7bbfeac83fac12c9f16d2", - "redirectURL": "https://3dss-dev.placetopay.ws/threeds/v2x/sessions/1253/e3f2d86cfffc96837f0762e08ec88a39704eff5ce2c7bbfeac83fac12c9f16d2", - "transactionID": 1297 + "sessionToken": "dc6c2a30c763d7ce640dcf0a98b5d172e3f86c62c3dea3ea1175469d0e6befae", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86152/dc6c2a30c763d7ce640dcf0a98b5d172e3f86c62c3dea3ea1175469d0e6befae", + "transactionID": 248118 } ``` **Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo -### Opción NPA - -Esta opción no require verificar fondos de la cuenta. - -`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions +### VISA ***Request Lookup*** ```json { - "deviceChannel": "02", - "messageCategory": "02", + "deviceChannel": "02", + "threeDSAuthenticationInd": "01", "threeDSChallengeInd": "04", - "threeDSAuthenticationInd": "04", - "acctNumber": "4009000000502", + "acctNumber": "4931119220729333", "cardExpiryDate": "2902", + "purchaseAmount": "167", "redirectURI": "https://www.placetopay.com/web", - "reference": "Febrero 2024", + "purchaseCurrency": "USD", + "reference": "Enero 2024", "messageVersion": "2.2.0" } ``` **deviceChannel:** 02 - Navegador -**messageCategory:** 02 (NPA) - -**threeDSChallengeInd**, indica si se solicita desafío o no, las opciones recomendables son: - -* **03:** el requestor tiene la preferencia de que se aplique desafío. -* **04:** el desafío es obligatorio. +**threeDSAuthenticationInd:** 01 indica que la transacción es de pago -**threeDSAuthenticationInd**, indica el tipo de autenticación. El valor de 04 corresponde a agregar tarjeta. +**threeDSChallengeInd:** 04: el desafío es obligatorio ***Response Lookup*** + ```json { "action": "redirect", - "sessionToken": "7d1dd0ee35609312d7dbeb666481d9fc18f762e83a238583fa31c904c6c028d7", - "redirectURL": "https://3dss-dev.placetopay.ws/threeds/v2x/sessions/1254/7d1dd0ee35609312d7dbeb666481d9fc18f762e83a238583fa31c904c6c028d7", - "transactionID": 1298 + "sessionToken": "1e7c2e6f2516a07020f30f8e5ef63bca7de42e16ac9498b61f2a8efd5ba52968", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86160/1e7c2e6f2516a07020f30f8e5ef63bca7de42e16ac9498b61f2a8efd5ba52968", + "transactionID": 248126 } ``` - **Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo ---- - - -## Pagos recurrentes (Suscripción mensual a una plataforma) - -Una transacción recurrente es aquella en la que se realiza un cargo periódico al titular de la tarjeta de forma programada. -Estas transacciones son comunes en servicios de suscripción, como membresías, suscripciones a servicios de streaming, pagos de facturas recurrentes, etc. - -`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions - -***Casos de uso:*** - -* **Suscripciones a servicios digitales:** Por ejemplo, una suscripción mensual a una plataforma de streaming de video. -* **Pagos de facturas recurrentes:** Como el pago mensual de servicios públicos, pagos de seguros, o pagos de préstamos. -* **Renovaciones de membresía:** Por ejemplo, renovación automática de membresía en gimnasios o clubs. - -***Para VISA está disponible el flujo de pago recurrente a través del DAF*** - -**Primera Autenticación** +**3RI Solicitud de segundo bien/servicio.** -Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación EMV 3DS donde el titular de la tarjeta esté disponible para autenticarse. +Envíe una solicitud 3RI por el valor del segundo bien/servicio. ### MASTERCARD @@ -872,135 +1269,131 @@ Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación E ```json { - "deviceChannel": "02", - "threeDSAuthenticationInd": "02", - "threeDSChallengeInd": "04", - "recurringExpiry": "20250101", - "recurringFrequency": "2", - "purchaseInstalData": "2", + "deviceChannel": "03", + "threeRIInd": "06", + "threeDSRequestorPriorAuthenticationInfo": { + "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", + "threeDSReqPriorAuthTimestamp": "2024-08-14T16:16:01+00:00", + "threeDSReqPriorRef": "bd8571cb-f4f3-4ec6-ac23-d7ec11038c1c" + }, "acctNumber": "5107000000010018", "cardExpiryDate": "2902", + "purchaseAmount": "12", "redirectURI": "https://www.placetopay.com/web", - "purchaseAmount": "10", "purchaseCurrency": "USD", - "reference": "Enero 2024", + "reference": "Febrero 2024", "messageVersion": "2.2.0" } ``` -**deviceChannel:** 02 - Navegador +**deviceChannel:** 03 indica que el canal es 3RI -**threeDSAuthenticationInd:** 02 indica que la transacción es una recurrencia +**threeRIInd:** 06 indica que la transacción es un envío dividido o retrasado -**threeDSChallengeInd:** 04: el desafío es obligatorio +**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**recurringExpiry:** fecha final de la suscripción +**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**recurringFrequency:** indica el número de días entre autorizaciones +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**purchaseInstalData:** Indica el número máximo de autorizaciones permitidas para pagos fraccionados. +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo ***Response Lookup*** + ```json { - "action": "redirect", - "sessionToken": "398864c1e4c8217283b67f0312a2d8ee14e3814c0e000a92d4532bc406f65d2f", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86036/398864c1e4c8217283b67f0312a2d8ee14e3814c0e000a92d4532bc406f65d2f", - "transactionID": 248002 + "action": "continue", + "messageType": "ARes", + "threeDSServerTransID": "4159591c-bb88-4321-a295-0e6397377d3b", + "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", + "acsTransID": "b4ec2f82-106b-469b-897d-f2aa37bbf25f", + "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", + "dsTransID": "dc477252-ff8d-433d-b44a-4f8edbb0cae8", + "messageVersion": "2.2.0", + "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", + "authenticationValue": "xgTkbC8MAAAAAAAAAAAAAAAAAAA=", + "eci": "07", + "transStatus": "Y", + "whiteListStatusSource": "03", + "whiteListStatus": "Y", + "deviceChannel": "03", + "messageCategory": "PA", + "authMethod": "01", + "authTimestamp": "2024-09-10T20:19:30+00:00", + "transactionID": 248121 } ``` -**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo - +**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo ### VISA -***Para Visa está disponible el flujo de pago dividido a través del DAF a partir de Abríl de 2024. Consultar para más detalle sobre VISA DAF*** - -**Prerrequisitos:** - -1. El identificador de comercio de **Visa Merchant ID VMID** deberá estar disponible en la subscripción. -2. El rango de tarjetas debe soportar el procesamiento con DAF - -Datos requeridos en la petición API - -**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes - -* billAddrCity -* billAddrCountry -* billAddrLine1 -* billAddrPostCode -* billAddrState -* email -* mobilePhone - ***Request Lookup*** ```json { - "deviceChannel": "02", - "threeDSAuthenticationInd": "02", - "threeDSChallengeInd": "04", - "recurringExpiry": "20260101", - "recurringFrequency": "2", + "deviceChannel": "03", + "threeRIInd": "06", + "threeDSRequestorPriorAuthenticationInfo": { + "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", + "threeDSReqPriorAuthTimestamp": "2024-09-10T20:33:55+00:00", + "threeDSReqPriorRef": "68ea3861-fa27-429b-8633-ff3f6a288f71" + }, "acctNumber": "4931119220729333", "cardExpiryDate": "2902", - "purchaseAmount": "1.02", + "purchaseAmount": "12", "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", - "reference": "Enero 2024", - "billAddrCity": "Medellín", - "billAddrCountry": "COL", - "billAddrLine1": "Carrera 65 # 45 - 20", - "billAddrPostCode": "050004", - "billAddrState": "ANT", - "email": "john.doe@evertecinc.com", - "mobilePhone": { - "cc": "57", - "subscriber": "30011122333" - }, + "reference": "Febrero 2024", "messageVersion": "2.2.0" } ``` -**deviceChannel:** 02 - Navegador - -**threeDSAuthenticationInd:** 02 indica que la transacción es recurrente - -**threeDSChallengeInd:** 04: el desafío es obligatorio +**deviceChannel:** 03 indica que el canal es 3RI -**recurringExpiry:** fecha final de la suscripción +**threeRIInd:** 06 indica que la transacción es un envío dividido o retrasado -**recurringFrequency:** indica el número de días entre autorizaciones +**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes +**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -* billAddrCity -* billAddrCountry -* billAddrLine1 -* billAddrPostCode -* billAddrState -* email -* mobilePhone +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo ***Response Lookup*** + ```json { - "action": "redirect", - "sessionToken": "c56d238b35d23b8cf564f2b6b641ed0e8a3056fb639d9df245d4bec825e4b74a", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86039/c56d238b35d23b8cf564f2b6b641ed0e8a3056fb639d9df245d4bec825e4b74a", - "transactionID": 248005 + "action": "continue", + "messageType": "ARes", + "threeDSServerTransID": "87b8930d-8523-4083-8780-67adf3aeca96", + "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", + "acsTransID": "b02b97b8-6748-4ecb-9f42-441b7d83d9cd", + "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", + "dsTransID": "26281147-cee2-4683-a538-c70fad690a08", + "messageVersion": "2.2.0", + "acsOperatorID": "10078025", + "authenticationValue": "AJkCBxaRcQAAAASwhAJUdYknEmE=", + "eci": "05", + "transStatus": "Y", + "whiteListStatusSource": "03", + "whiteListStatus": "Y", + "deviceChannel": "03", + "messageCategory": "PA", + "authMethod": "01", + "authTimestamp": "2024-09-10T20:35:17+00:00", + "transactionID": 248127 } ``` **Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo -**Autenticaciones posteriores** +**3RI Solicitud de tercer y último bien/servicio** -Envíe una solicitud 3RI por el valor de la recurrencia +Enviar una solicitud 3RI por el valor del tercer y último bien/servicio. ### MASTERCARD @@ -1009,15 +1402,15 @@ Envíe una solicitud 3RI por el valor de la recurrencia ```json { "deviceChannel": "03", - "threeRIInd": "01", + "threeRIInd": "06", "threeDSRequestorPriorAuthenticationInfo": { "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-09T19:48:20+00:00", - "threeDSReqPriorRef": "fa4544ea-9002-444a-a891-5fd126735c41" + "threeDSReqPriorAuthTimestamp": "2024-09-10T20:16:01+00:00", + "threeDSReqPriorRef": "49c34627-aa6b-41dc-bdc8-e21c0276d9ce" }, "acctNumber": "5107000000010018", "cardExpiryDate": "2902", - "purchaseAmount": "5", + "purchaseAmount": "130", "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", "reference": "Febrero 2024", @@ -1027,177 +1420,101 @@ Envíe una solicitud 3RI por el valor de la recurrencia **deviceChannel:** 03 indica que el canal es 3RI -**threeRIInd:** 01 indica que la transacción es recurrente +**threeRIInd:** 06 indica que la transacción es un envío dividido o retrasado -**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, -02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, -consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, -consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, -si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo ***Response Lookup*** + ```json { "action": "continue", "messageType": "ARes", - "threeDSServerTransID": "2e6bd601-7a61-4fa5-accc-10a30e0d66db", + "threeDSServerTransID": "bc925646-c654-4ba2-9e0a-9afaaa5684cc", "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", - "acsTransID": "80fb86d5-35e7-4249-b6df-6905d9c6ba4f", + "acsTransID": "187648b7-ae15-4da6-a5df-f7298db768d9", "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "3a961497-8ac7-447d-9926-06bf4c1fa1a9", + "dsTransID": "a0a446cd-0767-4fa7-942b-e94571f1f37c", "messageVersion": "2.2.0", "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", - "authenticationValue": "xgQiqOYmAAAAAAAAAAAAAAAAAAA=", + "authenticationValue": "xgSlHx+5AAAAAAAAAAAAAAAAAAA=", "eci": "07", - "messageExtension": [ - { - "name": "ACS RBA", - "id": "A000000004-acsRBA", - "criticalityIndicator": false, - "data": { - "A000000004-acsRBA": { - "status": "success", - "score": "500", - "decision": "Low Risk", - "reasonCode1": "H", - "reasonCode2": "GG" - } - } - } - ], "transStatus": "Y", "whiteListStatusSource": "03", "whiteListStatus": "Y", "deviceChannel": "03", "messageCategory": "PA", "authMethod": "01", - "authTimestamp": "2024-09-09T19:52:20+00:00", - "transactionID": 248003 + "authTimestamp": "2024-09-10T20:23:36+00:00", + "transactionID": 248122 } -``` -**Actión:** continue indica que la API retornara la información de la autenticación,y por ende no es necesario consumir endpoints adicionales para continuar con el flujo +``` +**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo ### VISA -***Para Visa está disponible el flujo de pago dividido a través del DAF a partir de Abríl de 2024. Consultar para más detalle sobre VISA DAF*** - -**Prerrequisitos:** - -1. El identificador de comercio de **Visa Merchant ID VMID** deberá estar disponible en la subscripción. -2. El rango de tarjetas debe soportar el procesamiento con DAF - -Datos requeridos en la petición API - -**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes - -* billAddrCity -* billAddrCountry -* billAddrLine1 -* billAddrPostCode -* billAddrState -* email -* mobilePhone ***Request Lookup*** ```json { "deviceChannel": "03", - "threeRIInd": "01", + "threeRIInd": "06", "threeDSRequestorPriorAuthenticationInfo": { "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-09T20:06:30+00:00", - "threeDSReqPriorRef": "3b632ce4-26ea-407d-a2a0-4a7b27c91c14" + "threeDSReqPriorAuthTimestamp": "2024-09-10T20:33:55+00:00", + "threeDSReqPriorRef": "68ea3861-fa27-429b-8633-ff3f6a288f71" }, "acctNumber": "4931119220729333", "cardExpiryDate": "2902", - "purchaseAmount": "1.00", + "purchaseAmount": "130", "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", "reference": "Febrero 2024", - "billAddrCity": "Medellín", - "billAddrCountry": "COL", - "billAddrLine1": "Carrera 65 # 45 - 20", - "billAddrPostCode": "050004", - "billAddrState": "ANT", - "email": "john.doe@evertecinc.com", - "mobilePhone": { - "cc": "57", - "subscriber": "30011122333" - }, "messageVersion": "2.2.0" } -``` - -**deviceChannel:** 03 indica que el canal es 3RI - -**threeRIInd:** 01 indica que la transacción es recurrente - -**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo - -**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo - -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa **primera autenticación**, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +``` -**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes +**deviceChannel:** 02 - Navegador -* billAddrCity -* billAddrCountry -* billAddrLine1 -* billAddrPostCode -* billAddrState -* email -* mobilePhone +**threeDSAuthenticationInd:** 01 indica que la transacción es de pago +**threeDSChallengeInd:** 04: el desafío es obligatorio ***Response Lookup*** + ```json { "action": "continue", "messageType": "ARes", - "threeDSServerTransID": "0e0ee43c-9601-4e29-9c8d-32b893ded4db", + "threeDSServerTransID": "2f9f285a-f876-4744-adaa-9c1cedf97271", "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", - "acsTransID": "ab8b1aec-2cf9-4d60-a45f-8d499894dae5", + "acsTransID": "14f3123b-d769-4a14-afea-d6bd5719d332", "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "072b329b-ca7f-47ff-a6b0-ff5a3d6321cb", + "dsTransID": "f1ca5639-b587-4cd1-894e-fa14b97b9fdf", "messageVersion": "2.2.0", "acsOperatorID": "10078025", - "authenticationValue": "BpkCBIU4VgAAAABkhAJTdYknEmE=", + "authenticationValue": "AJkCAWCXJgAAADLIhAJUdYknEmE=", "eci": "05", - "messageExtension": [ - { - "name": "DAF Extension", - "id": "A000000003-003", - "criticalityIndicator": false, - "data": { - "chAccReqID": "MUHZx0nojuVVAZJwPD4CWps0RuxUPxepI8sk57Yd/s4=", - "authPayProcessReqInd": "01", - "version": "1.0", - "authPayCredStatus": "Y", - "dafAdvice": "01" - } - } - ], "transStatus": "Y", "whiteListStatusSource": "03", "whiteListStatus": "Y", "deviceChannel": "03", "messageCategory": "PA", "authMethod": "01", - "authTimestamp": "2024-09-09T20:52:36+00:00", - "transactionID": 248013 + "authTimestamp": "2024-09-10T20:38:23+00:00", + "transactionID": 248129 } ``` @@ -1205,25 +1522,49 @@ Datos requeridos en la petición API --- -## Pagos a Plazos -Una transacción a plazos es aquella en la que el monto total de la compra se divide en pagos periódicos más pequeños a lo largo de un período de tiempo determinado. Estos pagos pueden incluir intereses u otras tarifas asociadas con la financiación de la compra. +## Envío retrasado -A diferencia de una transacción recurrente, en una transacción a plazos, el titular de la tarjeta realiza una única compra que se divide en varios pagos, en lugar de autorizar múltiples cargos separados. Cada pago puede requerir una autorización individual, pero el titular de la tarjeta no necesita autorizar los pagos futuros al realizar la compra inicial. Adicionalmente, la compra a plazos tiene límite en cantidad de autorizaciones ***purchaseInstalData*** y ***recurringExpiry*** y los montos son acumulados, la recurrencia tiene límite la fecha recurringExpiry y el monto es siempre el mismo, o al menos ese es el máximo +Permite a los comerciantes mantener la protección de responsabilidad más allá de los 90 días después de una autenticación inicial. +Los comerciantes pueden utilizar esta funcionalidad cuando, por ejemplo, un envío/servicio se retrasa más de 90 días. +Si la solicitud 3RI tiene éxito, se generará un nuevo CAVV para el comerciante, otorgando otros 90 días de protección de responsabilidad. + +Cuando los comerciantes soliciten un nuevo CAVV a través de una autenticación de 3RI, deben hacerlo dentro de los 90 +días posteriores a la fecha de la autenticación inicial. Los comerciantes solo deben enviar este tipo de solicitudes si necesitan protección +de responsabilidad más allá de los 90 días desde la autenticación inicial. Deberían retrasar la solicitud de un nuevo CAVV tanto como sea posible +dentro del período de 90 días. Si el CAVV inicial ha expirado, aunque ya no proporciona protección de responsabilidad, los emisores deben considerar +que aún puede ser utilizado por el comerciante como prueba de que se realizó la autenticación. + +***Datos a considerar al procesar envíos divididos:*** + +* El nombre del solicitante 3DS **threeDSRequestorName** y el nombre del comerciante **merchantName** deben ser los mismos en la solicitud de autenticación inicial y en cada una de las solicitudes 3RI asociadas +* El valor total de todas las solicitudes 3RI no debe sumar un monto mayor que el monto de la solicitud de autenticación inicial y del total de los montos ya autorizados `POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions -***Casos de uso:*** -* **Compras a plazos en línea:** Por ejemplo, comprar un artículo como una computadora y dividir el pago en cuotas mensuales. -* **Financiación de productos o servicios:** Como la compra de muebles para el hogar, equipos electrónicos, o servicios médicos que ofrecen opciones de financiación a plazos. -* **Planes de pago de vacaciones:** Agencias de viajes que ofrecen la opción de pagar las vacaciones en varios pagos antes de la fecha del viaje +***Casos de Uso:*** -***Para VISA está disponible el flujo de pagos a plazo a través del DAF*** +* **Preventa de productos:** un cliente compra un producto en preventa, como un libro o un dispositivo electrónico que aún no está disponible. La tarjeta se carga cuando se realiza la compra, pero el producto se enviará semanas o meses después cuando esté disponible. +* **Productos fuera de stock:** un cliente compra un producto que no está en stock en ese momento, pero que será enviado una vez que esté disponible. La tarjeta se carga al hacer el pedido, y el producto se envía cuando el inventario se repone. +* **Pedidos con envíos programados:** un cliente compra varios productos, pero solicita que el envío se realice en una fecha futura específica. El pago se procesa de inmediato, pero el envío se retrasa hasta la fecha solicitada. + + +| Evento | Valor | Descripción | +|-------------------------------------------------------------|-------|-----------------------------------------------------------------------------------------------------------------------------------------------------------| +| Autenticación inicial | $112 | Autenticación inicial por el importe total del pedido. | +| Autorización Inicial del primer bien/servicio. | $0 | Realice la autorización $0 para configurar el MIT futuro utilizando el CAVV de la autenticación inicial anterior. | +| Solicitud 3RI de un bien o servicio retrasado. | $112 | Envíe una solicitud 3RI por el valor del bien o servicio retrasado. (p. ej., el día 85 después de la autenticación inicial) | +| Autorización como reautorización MIT para el bien/servicio. | $112 | Realice la autorización para el bien o servicio utilizando el CAVV de la solicitud 3RI anterior. (p. ej., el día 120 después de la autenticación inicial) | + +****Para Visa está disponible el flujo de envío dividido a través del DAF**** **Primera Autenticación** -Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación EMV 3DS donde el titular de la tarjeta esté disponible para autenticarse. +Autenticación inicial por el importe total de la orden. + +Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación EMV 3DS donde el titular de la tarjeta esté disponible para autenticarse por el valor total del pedido. Esta autenticación inicial puede utilizarse para la autorización asociada a la primera entrega de los bienes/servicios. + ### MASTERCARD @@ -1232,15 +1573,12 @@ Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación E ```json { "deviceChannel": "02", - "threeDSAuthenticationInd": "03", + "threeDSAuthenticationInd": "01", "threeDSChallengeInd": "04", - "recurringExpiry": "20250101", - "recurringFrequency": "2", - "purchaseInstalData": "2", "acctNumber": "5107000000010018", "cardExpiryDate": "2902", "redirectURI": "https://www.placetopay.com/web", - "purchaseAmount": "1000", + "purchaseAmount": "112", "purchaseCurrency": "USD", "reference": "Enero 2024", "messageVersion": "2.2.0" @@ -1249,29 +1587,23 @@ Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación E **deviceChannel:** 02 - Navegador -**threeDSAuthenticationInd:** 03 indica que la transacción es a plazos +**threeDSAuthenticationInd:** 01 indica que la transacción es de pago **threeDSChallengeInd:** 04: el desafío es obligatorio -**recurringExpiry:** fecha final de la suscripción - -**recurringFrequency:** indica el número de días entre autorizaciones - -**purchaseInstalData:** Indica el número máximo de autorizaciones permitidas para pagos fraccionados. - ***Response Lookup*** ```json { "action": "redirect", - "sessionToken": "d6aa0439b5f0e29e6a9413321962cf962593130717098cbcde322b6bb50808fb", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86048/d6aa0439b5f0e29e6a9413321962cf962593130717098cbcde322b6bb50808fb", - "transactionID": 248014 + "sessionToken": "c793365493edc34b17a7097ea8a33fdb5853d8e0da62d39ca9e49e6c021a641f", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86167/c793365493edc34b17a7097ea8a33fdb5853d8e0da62d39ca9e49e6c021a641f", + "transactionID": 248133 } ``` -**Actión:** redirect indica que LA API retornara un redirectURL que deberá ser consumido para continuar con el flujo +**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo ### VISA @@ -1281,69 +1613,42 @@ Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación E ```json { "deviceChannel": "02", - "threeDSAuthenticationInd": "03", + "threeDSAuthenticationInd": "01", "threeDSChallengeInd": "04", - "recurringExpiry": "20260101", - "recurringFrequency": "2", - "purchaseInstalData": "2", "acctNumber": "4931119220729333", "cardExpiryDate": "2902", - "purchaseAmount": "1000", - "redirectURI": "https://www.placetopay.com/web", - "purchaseCurrency": "USD", - "reference": "Enero 2024", - "billAddrCity": "Medellín", - "billAddrCountry": "COL", - "billAddrLine1": "Carrera 65 # 45 - 20", - "billAddrPostCode": "050004", - "billAddrState": "ANT", - "email": "john.doe@evertecinc.com", - "mobilePhone": { - "cc": "57", - "subscriber": "30011122333" - }, + "purchaseAmount": "112", + "redirectURI": "https://www.placetopay.com/web", + "purchaseCurrency": "USD", + "reference": "Enero 2024", "messageVersion": "2.2.0" } ``` **deviceChannel:** 02 - Navegador -**threeDSAuthenticationInd:** 03 indica que la transacción es a plazos +**threeDSAuthenticationInd:** 01 indica que la transacción es de pago **threeDSChallengeInd:** 04: el desafío es obligatorio -**recurringExpiry:** fecha final de la suscripción - -**recurringFrequency:** indica el número de días entre autorizaciones - -**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes - -* billAddrCity -* billAddrCountry -* billAddrLine1 -* billAddrPostCode -* billAddrState -* email -* mobilePhone - ***Response Lookup*** ```json { "action": "redirect", - "sessionToken": "96c03fe78346d11024057dfccbc8eed58b736de36631c8ff25e5c154386ade1f", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86104/96c03fe78346d11024057dfccbc8eed58b736de36631c8ff25e5c154386ade1f", - "transactionID": 248070 + "sessionToken": "3dcdb5b0d1403b0b1e14348037a3c74f202bf18d73233597a07a38963721b18e", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86170/3dcdb5b0d1403b0b1e14348037a3c74f202bf18d73233597a07a38963721b18e", + "transactionID": 248136 } ``` **Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo -**Autenticaciones posteriores** +**Solicitud 3RI de un bien/servicio retrasado.** -Envíe una solicitud 3RI por el valor del pago a plazos +Envíe una solicitud 3RI por el valor del segundo bien/servicio ### MASTERCARD @@ -1352,18 +1657,15 @@ Envíe una solicitud 3RI por el valor del pago a plazos ```json { "deviceChannel": "03", - "threeRIInd": "02", - "recurringExpiry": "20250101", - "recurringFrequency": "2", - "purchaseInstalData": "2", + "threeRIInd": "06", "threeDSRequestorPriorAuthenticationInfo": { "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T16:12:47+00:00", - "threeDSReqPriorRef": "51bbcd10-0c31-4efc-ad49-ba9bdea2f413" + "threeDSReqPriorAuthTimestamp": "2024-09-10T21:06:02+00:00", + "threeDSReqPriorRef": "2dd8d5d0-8563-4ae5-aa9e-23d31fa6fb85" }, "acctNumber": "5107000000010018", "cardExpiryDate": "2902", - "purchaseAmount": "500", + "purchaseAmount": "112", "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", "reference": "Febrero 2024", @@ -1373,7 +1675,7 @@ Envíe una solicitud 3RI por el valor del pago a plazos **deviceChannel:** 03 indica que el canal es 3RI -**threeRIInd:** 02 indica que la transacción es a plazos +**threeRIInd:** 06 indica que la transacción es un envío dividido o retrasado **threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo @@ -1390,14 +1692,14 @@ Envíe una solicitud 3RI por el valor del pago a plazos { "action": "continue", "messageType": "ARes", - "threeDSServerTransID": "f5e8b9c4-5cfd-461d-9115-e51fe7d5c42a", + "threeDSServerTransID": "f91b89a9-7924-48de-97ab-8cc58bc5fcc2", "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", - "acsTransID": "98d5739a-c623-4512-9f87-a48368848d44", + "acsTransID": "cc3b5ff3-9dd7-44ae-bfa0-472de466f449", "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "def67c44-653a-4879-b500-935d8429b4a4", + "dsTransID": "a730d64c-ddb1-4f99-8f2c-4591d00021e3", "messageVersion": "2.2.0", "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", - "authenticationValue": "xgRKM8pzAAAAAAAAAAAAAAAAAAA=", + "authenticationValue": "xgQkuJ5tAAAAAAAAAAAAAAAAAAA=", "eci": "07", "transStatus": "Y", "whiteListStatusSource": "03", @@ -1405,8 +1707,8 @@ Envíe una solicitud 3RI por el valor del pago a plazos "deviceChannel": "03", "messageCategory": "PA", "authMethod": "01", - "authTimestamp": "2024-09-10T16:16:19+00:00", - "transactionID": 248067 + "authTimestamp": "2024-09-10T21:07:09+00:00", + "transactionID": 248135 } ``` @@ -1414,59 +1716,30 @@ Envíe una solicitud 3RI por el valor del pago a plazos ### VISA -***Para Visa está disponible el flujo de pago dividido a través del DAF a partir de Abríl de 2024. Consultar para más detalle sobre VISA DAF*** - -**Prerrequisitos:** - -1. El identificador de comercio de **Visa Merchant ID VMID** deberá estar disponible en la subscripción. -2. El rango de tarjetas debe soportar el procesamiento con DAF - -Datos requeridos en la petición API - -**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes - -* billAddrCity -* billAddrCountry -* billAddrLine1 -* billAddrPostCode -* billAddrState -* email -* mobilePhone - ***Request Lookup*** ```json { "deviceChannel": "03", - "threeRIInd": "02", + "threeRIInd": "06", "threeDSRequestorPriorAuthenticationInfo": { "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T16:35:31+00:00", - "threeDSReqPriorRef": "f0bb9172-018d-42ae-b2ad-715e274bddef" + "threeDSReqPriorAuthTimestamp": "2024-09-10T21:10:29+00:00", + "threeDSReqPriorRef": "7f7c0594-7e0f-4b13-bd45-6d180c35ffb0" }, "acctNumber": "4931119220729333", "cardExpiryDate": "2902", - "purchaseAmount": "500", + "purchaseAmount": "112", "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", "reference": "Febrero 2024", - "billAddrCity": "Medellín", - "billAddrCountry": "COL", - "billAddrLine1": "Carrera 65 # 45 - 20", - "billAddrPostCode": "050004", - "billAddrState": "ANT", - "email": "john.doe@evertecinc.com", - "mobilePhone": { - "cc": "57", - "subscriber": "30011122333" - }, "messageVersion": "2.2.0" } ``` **deviceChannel:** 03 indica que el canal es 3RI -**threeRIInd:** 02 indica que la transacción es a plazos +**threeRIInd:** 06 indica que la transacción es un envío dividido o retrasado **threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo @@ -1476,102 +1749,68 @@ Datos requeridos en la petición API **threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa **primera autenticación**, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes - -* billAddrCity -* billAddrCountry -* billAddrLine1 -* billAddrPostCode -* billAddrState -* email -* mobilePhone - ***Response Lookup*** ```json -{ + { "action": "continue", "messageType": "ARes", - "threeDSServerTransID": "50709e2a-4dad-4c60-acaa-c5d3e1ede924", + "threeDSServerTransID": "0ec3a36a-3c91-4864-bfc0-730300027805", "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", - "acsTransID": "3cdfa009-4018-4230-a72b-658587a5794c", + "acsTransID": "4483ff06-0f36-45a2-aa13-b7f88564910b", "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "72455b8f-5a57-4716-93fe-b72d3878805b", + "dsTransID": "8360727e-22ff-4c23-bef8-ba2510eaf59b", "messageVersion": "2.2.0", "acsOperatorID": "10078025", - "authenticationValue": "BpkCBSMnAAAAAMNQhAJUdYknEmE=", + "authenticationValue": "AJkCAREXeQAAACvAhAJUdYknEmE=", "eci": "05", - "messageExtension": [ - { - "name": "DAF Extension", - "id": "A000000003-003", - "criticalityIndicator": false, - "data": { - "chAccReqID": "MUHZx0nojuVVAZJwPD4CWps0RuxUPxepI8sk57Yd/s4=", - "authPayProcessReqInd": "01", - "version": "1.0", - "authPayCredStatus": "Y", - "dafAdvice": "01" - } - } - ], "transStatus": "Y", "whiteListStatusSource": "03", "whiteListStatus": "Y", "deviceChannel": "03", "messageCategory": "PA", "authMethod": "01", - "authTimestamp": "2024-09-10T19:45:25+00:00", - "transactionID": 248109 + "authTimestamp": "2024-09-10T21:12:29+00:00", + "transactionID": 248138 } ``` -**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo - +**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo --- +## Otros pagos/comercio entre múltiples partes +**Otros pagos** es la categoría reservada para los escenarios de **comercio entre múltiples partes** que pueden tener lugar cuando varias partes están involucradas en el procesamiento de múltiples autorizaciones asociadas con una única reserva de viaje o cuando varias partes en sectores distintos al de viajes están involucradas en el procesamiento de múltiples autorizaciones asociadas con un único pago desde el punto de vista del titular de la tarjeta. -## Envío dividido - -Este tipo de transacción se utiliza para indicar que la transacción corresponde a un envío dividido ***Split Shipment***. En un escenario de Split Shipment, un pedido o reserva se paga en varias transacciones porque los servicios o productos se proporcionan en momentos diferentes. Aunque el pedido inicial es único, la entrega de sus componentes se divide, y cada parte puede ser cobrada cuando esté lista o confirmada. - -Los Envíos divididos permiten a los comerciantes solicitar un nuevo CAVV para obtener protección de responsabilidad en autorizaciones posteriores que puedan ser necesarias debido a múltiples autorizaciones relacionadas con un solo pedido. Este tipo de solicitudes pueden ser realizadas por cualquier comerciante que deba procesar varias autorizaciones asociadas a una única autenticación. - -***Datos a considerar al procesar envíos divididos:*** - -* El nombre del solicitante 3DS **threeDSRequestorName** y el nombre del comerciante **merchantName** deben ser los mismos en la solicitud de autenticación inicial y en cada una de las solicitudes 3RI asociadas. -* El valor total de todas las solicitudes 3RI no debe superar la suma del monto de la solicitud inicial de autenticación y del total de los montos ya autorizados. Los emisores deben realizar un seguimiento del valor total utilizando los datos de transacción tanto de la autorización directa como de la autenticación **EMV 3DS** +En la solicitud de autenticación inicial y las solicitudes 3RI asociadas, los agentes de reservas/proveedores de servicios comerciales también deben usar las convenciones de nomenclatura y los identificadores apropiados para el caso de uso para el que están autenticando: -`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions +* Autenticación solo en nombre de un solo comerciante +* Autenticación en nombre de varios comerciantes +* Autenticarse a sí mismos y en nombre de otro comerciante -***Casos de Uso:*** +De manera similar a los envíos divididos, los emisores deben realizar un seguimiento del valor total utilizando los datos de transacción tanto de autorización como de autenticación. Esto es necesario ya que el agente de reservas/proveedor de servicios del comerciante no puede realizar una solicitud 3RI para todas las partes involucradas en la transacción y, como tal, el emisor no puede asumir que la suma de todas las solicitudes 3RI será igual al total del monto de autenticación inicial, pero los montos 3RI no deben exceder el monto autenticado original. -* **Pedidos con múltiples artículos:** un cliente realiza un pedido de varios productos que no están todos disponibles en el almacén al mismo tiempo. -Por lo tanto, el comerciante decide enviar los artículos en varias entregas, dependiendo de la disponibilidad. +Agente de reservas que realiza la autenticación en nombre de un único comerciante +El titular de una tarjeta ha reservado un artículo en el sitio web de un agente de viajes, por ejemplo, un vuelo +por valor de $395, que se debe pagar al vendedor (es decir, la aerolínea, que será el comerciante en el +sistema de autorización) o cobrar por él en el momento de la reserva, pero el agente de viajes se encarga de la autenticación. -| Evento | Valor | Descripción | -|---------------------------------------------------------------------------------|-------|------------------------------------------------------------------------------------------------------------------------| -| Autenticación inicial | $167 | Autenticación inicial por el importe total del pedido. | -| Autorización Inicial del primer bien/servicio. | $25 | Se realiza la autorización para el primer bien/servicio utilizando CAVV a partir de la autenticación inicial anterior. | -| 3RI Solicitud de segundo bien/servicio. | $12 | Envíe una solicitud 3RI por el valor del segundo bien/servicio. | -| Autorización como reautorización MIT para un segundo bien/servicio. | $12 | Se realiza la autorización del segundo bien/servicio utilizando el CAVV de la solicitud 3RI anterior. | -| 3RI Solicitud de tercer y último bien/servicio. | $130 | Enviar una solicitud 3RI por el valor del tercer y último bien/servicio. | -| Autorización como reautorización del MIT para el tercer y último bien/servicio. | $130 | Realizar la autorización del tercer y último bien/servicio utilizando el CAVV de la solicitud 3RI anterior. | +| **Evento** | **Parte** | **Valor** | **Descripción** | +|--------------------------------------------------------|-------------------------|-----------|-----------------------------------------------------------------------------------------------------------------------------------------------------| +| Autenticación inicial por parte del agente de reservas | Agente de reservas | $395 | Autenticación inicial por el importe total del pedido por parte del agente de reservas | +| Autorización para bienes/servicios | Comerciante de viajes 1 | $395 | El agente de reservas proporciona el CAVV de la autenticación inicial al vendedor, lo que le permite realizar una autorización por el importe total | -****Para Visa está disponible el flujo de envío dividido a través del DAF**** -**Primera Autenticación** -***Autenticación inicial por el importe total de la orden.*** +**Autenticación inicial por parte del agente de reservas** -Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación EMV 3DS donde el titular de la tarjeta esté disponible para autenticarse por el valor total del pedido. Esta autenticación inicial puede utilizarse para la autorización asociada a la primera entrega de los bienes/servicios. +Autenticación inicial por el importe total del pedido por parte del agente de reservas ### MASTERCARD @@ -1580,16 +1819,17 @@ Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación E ```json { "deviceChannel": "02", - "threeDSAuthenticationInd": "01", + "threeDSAuthenticationInd": "85", "threeDSChallengeInd": "04", "acctNumber": "5107000000010018", "cardExpiryDate": "2902", "redirectURI": "https://www.placetopay.com/web", - "purchaseAmount": "167", + "purchaseAmount": "395", "purchaseCurrency": "USD", "reference": "Enero 2024", "messageVersion": "2.2.0" } + ``` **deviceChannel:** 02 - Navegador @@ -1601,18 +1841,18 @@ Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación E ***Response Lookup*** - ```json { "action": "redirect", - "sessionToken": "dc6c2a30c763d7ce640dcf0a98b5d172e3f86c62c3dea3ea1175469d0e6befae", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86152/dc6c2a30c763d7ce640dcf0a98b5d172e3f86c62c3dea3ea1175469d0e6befae", - "transactionID": 248118 + "sessionToken": "cf980dc8f7bc550243c9aa49e36902474b36dfcddd0d5671f78a924311c8bdc0", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86177/cf980dc8f7bc550243c9aa49e36902474b36dfcddd0d5671f78a924311c8bdc0", + "transactionID": 248143 } ``` **Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo + ### VISA ***Request Lookup*** @@ -1624,8 +1864,8 @@ Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación E "threeDSChallengeInd": "04", "acctNumber": "4931119220729333", "cardExpiryDate": "2902", - "purchaseAmount": "167", "redirectURI": "https://www.placetopay.com/web", + "purchaseAmount": "395", "purchaseCurrency": "USD", "reference": "Enero 2024", "messageVersion": "2.2.0" @@ -1638,22 +1878,46 @@ Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación E **threeDSChallengeInd:** 04: el desafío es obligatorio + ***Response Lookup*** ```json { "action": "redirect", - "sessionToken": "1e7c2e6f2516a07020f30f8e5ef63bca7de42e16ac9498b61f2a8efd5ba52968", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86160/1e7c2e6f2516a07020f30f8e5ef63bca7de42e16ac9498b61f2a8efd5ba52968", - "transactionID": 248126 + "sessionToken": "c7bf55043c2d0403e87eaff8895951f70067e48a12a3d46203fd82df3da0a7c1", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86180/c7bf55043c2d0403e87eaff8895951f70067e48a12a3d46203fd82df3da0a7c1", + "transactionID": 248146 } ``` + **Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo -**3RI Solicitud de segundo bien/servicio.** -Envíe una solicitud 3RI por el valor del segundo bien/servicio. + + +### Agente de reservas que realiza la autenticación en nombre de varios comerciantes + +Un titular de tarjeta ha reservado en un sitio web de viajes **agente de reservas** tres artículos pagaderos a cada proveedor de viajes individual **comerciante 1, 2 y 3 en el sistema de autorización**. El sitio web de viajes no está recaudando fondos, sino que realiza la autenticación en nombre de los 3 proveedores de viajes: + +* Un vuelo por $170 pagadero a la aerolínea **proveedor/comerciante 1** en el momento de la reserva +* Un hotel para el cual no se debe realizar un depósito en el momento de la reserva (el hotel **proveedor/comerciante 2 toma los datos de la tarjeta en caso de que se requiera un pago por no presentarse** +* Un alquiler de automóvil para el cual se debe realizar un depósito de $50 a la compañía de alquiler **vendedor/comerciante 3** en el momento de la reserva + + +| **Evento** | **Parte** | **Valor** | **Descripción** | +|------------------------------------------------------------|---------------------------------|-----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Autenticación inicial por parte del agente de reservas | Agente de reservas | $220 | Autenticación inicial por parte del agente de reservas por el monto adeudado por el pedido | +| El agente de reservas realiza tres transacciones 3RI | Agente de reservas | $220 | El agente de reservas realiza tres transacciones 3RI para obtener tres CAVV independientes: Aerolínea $170, Hotel $0, Alquiler de automóvil $50 | +| Autorización para bienes/servicios (Vuelo) | Comerciante de viajes 1 | $170 | El comerciante de la aerolínea utiliza el CAVV de la transacción 3RI con un valor de 170 (y su nombre en el CAVV) para realizar la autorización del boleto de avión. | +| Autorización para bienes/servicios (Alojamiento) | Comerciante de viajes 2 (hotel) | $0 | El comerciante de alojamiento utiliza el CAVV de la transacción 3RI con un valor de 0 (y su nombre en el CAVV) para realizar la autorización para configurar un MIT. | +| Autorización para bienes/servicios (Alquiler de automóvil) | Comerciante de viajes 3 | $50 | El comerciante de alquiler de automóviles utiliza el CAVV de la transacción 3RI con un valor de 50 (y su nombre en el CAVV) para realizar la autorización del depósito. | + + + +**Autenticación inicial por parte del agente de reservas** + +Autenticación inicial por parte del agente de reservas por el monto adeudado por el pedido. ### MASTERCARD @@ -1661,63 +1925,37 @@ Envíe una solicitud 3RI por el valor del segundo bien/servicio. ```json { - "deviceChannel": "03", - "threeRIInd": "06", - "threeDSRequestorPriorAuthenticationInfo": { - "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-08-14T16:16:01+00:00", - "threeDSReqPriorRef": "bd8571cb-f4f3-4ec6-ac23-d7ec11038c1c" - }, - "acctNumber": "5107000000010018", - "cardExpiryDate": "2902", - "purchaseAmount": "12", - "redirectURI": "https://www.placetopay.com/web", - "purchaseCurrency": "USD", - "reference": "Febrero 2024", - "messageVersion": "2.2.0" + "deviceChannel": "02", + "threeDSAuthenticationInd": "85", + "threeDSChallengeInd": "04", + "acctNumber": "5107000000010018", + "cardExpiryDate": "2806", + "purchaseAmount": "220", + "redirectURI": "https://www.placetopay.com/web", + "purchaseCurrency": "USD", + "messageVersion": "2.2.0" } ``` -**deviceChannel:** 03 indica que el canal es 3RI - -**threeRIInd:** 06 indica que la transacción es un envío dividido o retrasado - -**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo - -**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**deviceChannel:** 02 - Navegador -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSAuthenticationInd:** 85 indica que la transacción es de otros pagos -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSChallengeInd: 04:** el desafío es obligatorio ***Response Lookup*** - ```json { - "action": "continue", - "messageType": "ARes", - "threeDSServerTransID": "4159591c-bb88-4321-a295-0e6397377d3b", - "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", - "acsTransID": "b4ec2f82-106b-469b-897d-f2aa37bbf25f", - "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "dc477252-ff8d-433d-b44a-4f8edbb0cae8", - "messageVersion": "2.2.0", - "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", - "authenticationValue": "xgTkbC8MAAAAAAAAAAAAAAAAAAA=", - "eci": "07", - "transStatus": "Y", - "whiteListStatusSource": "03", - "whiteListStatus": "Y", - "deviceChannel": "03", - "messageCategory": "PA", - "authMethod": "01", - "authTimestamp": "2024-09-10T20:19:30+00:00", - "transactionID": 248121 + "action": "redirect", + "sessionToken": "a52df573f6a0a8071714958671d018030c90fc1e6cdc00ac4b7b50a35403da53", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86184/a52df573f6a0a8071714958671d018030c90fc1e6cdc00ac4b7b50a35403da53", + "transactionID": 248150 } ``` -**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo +**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo + ### VISA @@ -1725,67 +1963,44 @@ Envíe una solicitud 3RI por el valor del segundo bien/servicio. ```json { - "deviceChannel": "03", - "threeRIInd": "06", - "threeDSRequestorPriorAuthenticationInfo": { - "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T20:33:55+00:00", - "threeDSReqPriorRef": "68ea3861-fa27-429b-8633-ff3f6a288f71" - }, + "deviceChannel": "02", + "threeDSAuthenticationInd": "01", + "threeDSChallengeInd": "04", + "recurringExpiry": "20260101", + "recurringFrequency": "2", "acctNumber": "4931119220729333", "cardExpiryDate": "2902", - "purchaseAmount": "12", + "purchaseAmount": "220", "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", - "reference": "Febrero 2024", + "reference": "Enero 2024", "messageVersion": "2.2.0" } -``` - -**deviceChannel:** 03 indica que el canal es 3RI - -**threeRIInd:** 06 indica que la transacción es un envío dividido o retrasado -**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +``` -**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**deviceChannel:** 02 - Navegador -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSAuthenticationInd:** 01 indica que la transacción es de pago -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSChallengeInd:** 04 el desafío es obligatorio ***Response Lookup*** - ```json { - "action": "continue", - "messageType": "ARes", - "threeDSServerTransID": "87b8930d-8523-4083-8780-67adf3aeca96", - "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", - "acsTransID": "b02b97b8-6748-4ecb-9f42-441b7d83d9cd", - "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "26281147-cee2-4683-a538-c70fad690a08", - "messageVersion": "2.2.0", - "acsOperatorID": "10078025", - "authenticationValue": "AJkCBxaRcQAAAASwhAJUdYknEmE=", - "eci": "05", - "transStatus": "Y", - "whiteListStatusSource": "03", - "whiteListStatus": "Y", - "deviceChannel": "03", - "messageCategory": "PA", - "authMethod": "01", - "authTimestamp": "2024-09-10T20:35:17+00:00", - "transactionID": 248127 + "action": "redirect", + "sessionToken": "e672a6977da87394e43b3da848a754f0fc0c3f73153e4adb781fc54db1e80525", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86196/e672a6977da87394e43b3da848a754f0fc0c3f73153e4adb781fc54db1e80525", + "transactionID": 248162 } ``` **Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo -**3RI Solicitud de tercer y último bien/servicio** +**Transacciones 3RI aerolínea** -Enviar una solicitud 3RI por el valor del tercer y último bien/servicio. +El agente de reservas realiza la transaccion 3RI para obtener el CAVV y proporcionarlo al comerciante de viajes 1 (aerolínea) ### MASTERCARD @@ -1794,49 +2009,49 @@ Enviar una solicitud 3RI por el valor del tercer y último bien/servicio. ```json { "deviceChannel": "03", - "threeRIInd": "06", + "threeRIInd": "85", "threeDSRequestorPriorAuthenticationInfo": { "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T20:16:01+00:00", - "threeDSReqPriorRef": "49c34627-aa6b-41dc-bdc8-e21c0276d9ce" + "threeDSReqPriorAuthTimestamp": "2024-09-10T22:21:27+00:00", + "threeDSReqPriorRef": "c524216d-a19e-4a6b-ae1c-40b82c59fe38" }, "acctNumber": "5107000000010018", "cardExpiryDate": "2902", - "purchaseAmount": "130", + "purchaseAmount": "170", "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", - "reference": "Febrero 2024", + "reference": "Marzo 2024", "messageVersion": "2.2.0" } ``` **deviceChannel:** 03 indica que el canal es 3RI -**threeRIInd:** 06 indica que la transacción es un envío dividido o retrasado +**threeRIInd:** 85 indica que la transacción de tipo otros pagos **threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo **threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa (primera autenticación), consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa (primera autenticación), si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -***Response Lookup*** +***Response Lookup*** ```json { "action": "continue", "messageType": "ARes", - "threeDSServerTransID": "bc925646-c654-4ba2-9e0a-9afaaa5684cc", + "threeDSServerTransID": "1045a464-161f-4538-a769-9a0f84e27a3d", "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", - "acsTransID": "187648b7-ae15-4da6-a5df-f7298db768d9", + "acsTransID": "f31f4da1-7ac1-4be4-b37a-9e28d8e4eb9e", "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "a0a446cd-0767-4fa7-942b-e94571f1f37c", + "dsTransID": "a0dca8a6-5fc5-49f9-96b2-8ee5c9e51508", "messageVersion": "2.2.0", "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", - "authenticationValue": "xgSlHx+5AAAAAAAAAAAAAAAAAAA=", + "authenticationValue": "xgSFPEJIAAAAAAAAAAAAAAAAAAA=", "eci": "07", "transStatus": "Y", "whiteListStatusSource": "03", @@ -1844,60 +2059,54 @@ Enviar una solicitud 3RI por el valor del tercer y último bien/servicio. "deviceChannel": "03", "messageCategory": "PA", "authMethod": "01", - "authTimestamp": "2024-09-10T20:23:36+00:00", - "transactionID": 248122 + "authTimestamp": "2024-09-10T22:34:13+00:00", + "transactionID": 248159 } - ``` - **Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo -### VISA +### VISA ***Request Lookup*** ```json { "deviceChannel": "03", - "threeRIInd": "06", + "threeRIInd": "11", "threeDSRequestorPriorAuthenticationInfo": { "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T20:33:55+00:00", - "threeDSReqPriorRef": "68ea3861-fa27-429b-8633-ff3f6a288f71" + "threeDSReqPriorAuthTimestamp": "2024-09-10T22:44:39+00:00", + "threeDSReqPriorRef": "9e4c13a7-0813-4402-9c53-687a01303f78" }, "acctNumber": "4931119220729333", "cardExpiryDate": "2902", - "purchaseAmount": "130", + "purchaseAmount": "170", "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", "reference": "Febrero 2024", "messageVersion": "2.2.0" } - ``` -**deviceChannel:** 02 - Navegador - -**threeDSAuthenticationInd:** 01 indica que la transacción es de pago +**deviceChannel:** 03 indica que el canal es 3RI -**threeDSChallengeInd:** 04: el desafío es obligatorio +**threeRIInd:** 11 indica que la transacción de tipo otro pago ***Response Lookup*** - ```json -{ + { "action": "continue", "messageType": "ARes", - "threeDSServerTransID": "2f9f285a-f876-4744-adaa-9c1cedf97271", + "threeDSServerTransID": "1a53d143-230f-47b9-b886-a201ee867489", "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", - "acsTransID": "14f3123b-d769-4a14-afea-d6bd5719d332", + "acsTransID": "179f6511-b042-41f3-939d-7f862a527751", "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "f1ca5639-b587-4cd1-894e-fa14b97b9fdf", + "dsTransID": "f5eb0bae-dccf-498e-b639-4abf5e86b162", "messageVersion": "2.2.0", "acsOperatorID": "10078025", - "authenticationValue": "AJkCAWCXJgAAADLIhAJUdYknEmE=", + "authenticationValue": "AJkCAhAyeQAAAEJohAJUdYknEmE=", "eci": "05", "transStatus": "Y", "whiteListStatusSource": "03", @@ -1905,58 +2114,15 @@ Enviar una solicitud 3RI por el valor del tercer y último bien/servicio. "deviceChannel": "03", "messageCategory": "PA", "authMethod": "01", - "authTimestamp": "2024-09-10T20:38:23+00:00", - "transactionID": 248129 + "authTimestamp": "2024-09-10T22:46:32+00:00", + "transactionID": 248164 } ``` **Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo ---- - - -## Envío retrasado - -Permite a los comerciantes mantener la protección de responsabilidad más allá de los 90 días después de una autenticación inicial. -Los comerciantes pueden utilizar esta funcionalidad cuando, por ejemplo, un envío/servicio se retrasa más de 90 días. -Si la solicitud 3RI tiene éxito, se generará un nuevo CAVV para el comerciante, otorgando otros 90 días de protección de responsabilidad. - -Cuando los comerciantes soliciten un nuevo CAVV a través de una autenticación de 3RI, deben hacerlo dentro de los 90 -días posteriores a la fecha de la autenticación inicial. Los comerciantes solo deben enviar este tipo de solicitudes si necesitan protección -de responsabilidad más allá de los 90 días desde la autenticación inicial. Deberían retrasar la solicitud de un nuevo CAVV tanto como sea posible -dentro del período de 90 días. Si el CAVV inicial ha expirado, aunque ya no proporciona protección de responsabilidad, los emisores deben considerar -que aún puede ser utilizado por el comerciante como prueba de que se realizó la autenticación. - -***Datos a considerar al procesar envíos divididos:*** - -* El nombre del solicitante 3DS **threeDSRequestorName** y el nombre del comerciante **merchantName** deben ser los mismos en la solicitud de autenticación inicial y en cada una de las solicitudes 3RI asociadas -* El valor total de todas las solicitudes 3RI no debe sumar un monto mayor que el monto de la solicitud de autenticación inicial y del total de los montos ya autorizados - -`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions - - -***Casos de Uso:*** - -* **Preventa de productos:** un cliente compra un producto en preventa, como un libro o un dispositivo electrónico que aún no está disponible. La tarjeta se carga cuando se realiza la compra, pero el producto se enviará semanas o meses después cuando esté disponible. -* **Productos fuera de stock:** un cliente compra un producto que no está en stock en ese momento, pero que será enviado una vez que esté disponible. La tarjeta se carga al hacer el pedido, y el producto se envía cuando el inventario se repone. -* **Pedidos con envíos programados:** un cliente compra varios productos, pero solicita que el envío se realice en una fecha futura específica. El pago se procesa de inmediato, pero el envío se retrasa hasta la fecha solicitada. - - -| Evento | Valor | Descripción | -|-------------------------------------------------------------|-------|-----------------------------------------------------------------------------------------------------------------------------------------------------------| -| Autenticación inicial | $112 | Autenticación inicial por el importe total del pedido. | -| Autorización Inicial del primer bien/servicio. | $0 | Realice la autorización $0 para configurar el MIT futuro utilizando el CAVV de la autenticación inicial anterior. | -| Solicitud 3RI de un bien o servicio retrasado. | $112 | Envíe una solicitud 3RI por el valor del bien o servicio retrasado. (p. ej., el día 85 después de la autenticación inicial) | -| Autorización como reautorización MIT para el bien/servicio. | $112 | Realice la autorización para el bien o servicio utilizando el CAVV de la solicitud 3RI anterior. (p. ej., el día 120 después de la autenticación inicial) | - -****Para Visa está disponible el flujo de envío dividido a través del DAF**** - -**Primera Autenticación** - -Autenticación inicial por el importe total de la orden. - -Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación EMV 3DS donde el titular de la tarjeta esté disponible para autenticarse por el valor total del pedido. Esta autenticación inicial puede utilizarse para la autorización asociada a la primera entrega de los bienes/servicios. +**Transacciones 3RI hotel** ### MASTERCARD @@ -1964,39 +2130,61 @@ Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación E ```json { - "deviceChannel": "02", - "threeDSAuthenticationInd": "01", - "threeDSChallengeInd": "04", + "deviceChannel": "03", + "threeRIInd": "85", + "threeDSRequestorPriorAuthenticationInfo": { + "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", + "threeDSReqPriorAuthTimestamp": "2024-09-10T22:21:27+00:00", + "threeDSReqPriorRef": "c524216d-a19e-4a6b-ae1c-40b82c59fe38" + }, "acctNumber": "5107000000010018", "cardExpiryDate": "2902", + "purchaseAmount": "0", "redirectURI": "https://www.placetopay.com/web", - "purchaseAmount": "112", "purchaseCurrency": "USD", - "reference": "Enero 2024", + "reference": "Abril 2024", "messageVersion": "2.2.0" } ``` -**deviceChannel:** 02 - Navegador +**deviceChannel:** 03 indica que el canal es 3RI -**threeDSAuthenticationInd:** 01 indica que la transacción es de pago +**threeRIInd:** 85 indica que la transacción de tipo otros pagos -**threeDSChallengeInd:** 04: el desafío es obligatorio +**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -***Response Lookup*** +**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa (primera autenticación), consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa (primera autenticación), si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +***Response Lookup*** ```json { - "action": "redirect", - "sessionToken": "c793365493edc34b17a7097ea8a33fdb5853d8e0da62d39ca9e49e6c021a641f", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86167/c793365493edc34b17a7097ea8a33fdb5853d8e0da62d39ca9e49e6c021a641f", - "transactionID": 248133 + "action": "continue", + "messageType": "ARes", + "threeDSServerTransID": "32c88ea6-7841-4c8b-9067-b84c99b20784", + "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", + "acsTransID": "fa92fe01-84f7-4ae7-a3f1-1dd50f97ebef", + "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", + "dsTransID": "634b8dc1-aa5b-48c3-b367-022156663c81", + "messageVersion": "2.2.0", + "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", + "authenticationValue": "xgRTaR2SAAAAAAAAAAAAAAAAAAA=", + "eci": "07", + "transStatus": "Y", + "whiteListStatusSource": "03", + "whiteListStatus": "Y", + "deviceChannel": "03", + "messageCategory": "PA", + "authMethod": "01", + "authTimestamp": "2024-09-10T22:36:05+00:00", + "transactionID": 248160 } ``` - -**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo - +**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo ### VISA @@ -2004,43 +2192,66 @@ Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación E ```json { - "deviceChannel": "02", - "threeDSAuthenticationInd": "01", - "threeDSChallengeInd": "04", + "deviceChannel": "03", + "threeRIInd": "11", + "threeDSRequestorPriorAuthenticationInfo": { + "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", + "threeDSReqPriorAuthTimestamp": "2024-09-10T22:44:39+00:00", + "threeDSReqPriorRef": "9e4c13a7-0813-4402-9c53-687a01303f78" + }, "acctNumber": "4931119220729333", "cardExpiryDate": "2902", - "purchaseAmount": "112", + "purchaseAmount": "0", "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", - "reference": "Enero 2024", + "reference": "Marzo 2024", "messageVersion": "2.2.0" } ``` -**deviceChannel:** 02 - Navegador +**deviceChannel:** 03 indica que el canal es 3RI -**threeDSAuthenticationInd:** 01 indica que la transacción es de pago +**threeRIInd:** 11 indica que la transacción de tipo otros pagos -**threeDSChallengeInd:** 04: el desafío es obligatorio +**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -***Response Lookup*** +**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa (primera autenticación), consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa (primera autenticación), si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +***Response Lookup*** ```json { - "action": "redirect", - "sessionToken": "3dcdb5b0d1403b0b1e14348037a3c74f202bf18d73233597a07a38963721b18e", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86170/3dcdb5b0d1403b0b1e14348037a3c74f202bf18d73233597a07a38963721b18e", - "transactionID": 248136 + "action": "continue", + "messageType": "ARes", + "threeDSServerTransID": "b9913d5d-4980-4103-b77c-5daf0c7054b0", + "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", + "acsTransID": "e9b7726c-6f9a-4606-afe3-09dce49f49a2", + "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", + "dsTransID": "6f9c449a-0ff3-4438-8c47-e3009ded9cd1", + "messageVersion": "2.2.0", + "acsOperatorID": "10078025", + "authenticationValue": "AJkCB4EjdQAAAAAAhAJUdYknEmE=", + "eci": "05", + "transStatus": "Y", + "whiteListStatusSource": "03", + "whiteListStatus": "Y", + "deviceChannel": "03", + "messageCategory": "PA", + "authMethod": "01", + "authTimestamp": "2024-09-10T22:48:07+00:00", + "transactionID": 248165 } ``` -**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo - +**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo -**Solicitud 3RI de un bien/servicio retrasado.** +**Transacciones 3RI alquiler de automóvil** -Envíe una solicitud 3RI por el valor del segundo bien/servicio +El agente de reservas realiza la transacción 3RI para obtener el CAVV y proporcionarlo al comerciante de viajes 3 (alquiler automóvil) ### MASTERCARD @@ -2049,49 +2260,48 @@ Envíe una solicitud 3RI por el valor del segundo bien/servicio ```json { "deviceChannel": "03", - "threeRIInd": "06", + "threeRIInd": "85", "threeDSRequestorPriorAuthenticationInfo": { "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T21:06:02+00:00", - "threeDSReqPriorRef": "2dd8d5d0-8563-4ae5-aa9e-23d31fa6fb85" + "threeDSReqPriorAuthTimestamp": "2024-09-10T22:21:27+00:00", + "threeDSReqPriorRef": "c524216d-a19e-4a6b-ae1c-40b82c59fe38" }, "acctNumber": "5107000000010018", "cardExpiryDate": "2902", - "purchaseAmount": "112", + "purchaseAmount": "50", "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", - "reference": "Febrero 2024", + "reference": "Marzo 2024", "messageVersion": "2.2.0" } ``` **deviceChannel:** 03 indica que el canal es 3RI -**threeRIInd:** 06 indica que la transacción es un envío dividido o retrasado +**threeRIInd:** 85 indica que la transacción de tipo otros pagos **threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo **threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa (primera autenticación), consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa (primera autenticación), si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo ***Response Lookup*** - ```json { "action": "continue", "messageType": "ARes", - "threeDSServerTransID": "f91b89a9-7924-48de-97ab-8cc58bc5fcc2", + "threeDSServerTransID": "c34f67dc-7a25-4977-97f7-ca1f961946be", "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", - "acsTransID": "cc3b5ff3-9dd7-44ae-bfa0-472de466f449", + "acsTransID": "fd189ecf-c65e-4a7d-9640-89662b850038", "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "a730d64c-ddb1-4f99-8f2c-4591d00021e3", + "dsTransID": "4680679e-d6ed-48d2-89d2-b73de0828a57", "messageVersion": "2.2.0", "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", - "authenticationValue": "xgQkuJ5tAAAAAAAAAAAAAAAAAAA=", + "authenticationValue": "xgSELtLrAAAAAAAAAAAAAAAAAAA=", "eci": "07", "transStatus": "Y", "whiteListStatusSource": "03", @@ -2099,13 +2309,14 @@ Envíe una solicitud 3RI por el valor del segundo bien/servicio "deviceChannel": "03", "messageCategory": "PA", "authMethod": "01", - "authTimestamp": "2024-09-10T21:07:09+00:00", - "transactionID": 248135 + "authTimestamp": "2024-09-10T22:38:11+00:00", + "transactionID": 248161 } ``` **Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo + ### VISA ***Request Lookup*** @@ -2113,49 +2324,48 @@ Envíe una solicitud 3RI por el valor del segundo bien/servicio ```json { "deviceChannel": "03", - "threeRIInd": "06", + "threeRIInd": "11", "threeDSRequestorPriorAuthenticationInfo": { "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T21:10:29+00:00", - "threeDSReqPriorRef": "7f7c0594-7e0f-4b13-bd45-6d180c35ffb0" + "threeDSReqPriorAuthTimestamp": "2024-09-10T22:44:39+00:00", + "threeDSReqPriorRef": "9e4c13a7-0813-4402-9c53-687a01303f78" }, "acctNumber": "4931119220729333", "cardExpiryDate": "2902", - "purchaseAmount": "112", + "purchaseAmount": "50", "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", - "reference": "Febrero 2024", + "reference": "Mayo 2024", "messageVersion": "2.2.0" } ``` -**deviceChannel:** 03 indica que el canal es 3RI +***deviceChannel:*** 03 indica que el canal es 3RI -**threeRIInd:** 06 indica que la transacción es un envío dividido o retrasado +***threeRIInd:*** 11 indica que la transacción de tipo otros pagos -**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +***threeDSReqPriorAuthMethod:*** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +***threeDSReqPriorAuthTimestamp:*** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +***threeDSReqPriorRef:*** El ID otorgado por el ACS en la transacción previa (primera autenticación), consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa **primera autenticación**, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +***threeDSReqPriorAuthData:*** El ID otorgado por el DS en la transacción previa (primera autenticación), si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo ***Response Lookup*** - ```json { "action": "continue", "messageType": "ARes", - "threeDSServerTransID": "0ec3a36a-3c91-4864-bfc0-730300027805", + "threeDSServerTransID": "7a64778d-45de-48ae-8c78-ec688775315d", "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", - "acsTransID": "4483ff06-0f36-45a2-aa13-b7f88564910b", + "acsTransID": "d4b3bbae-5594-4c89-9cf8-ae2ac3499223", "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "8360727e-22ff-4c23-bef8-ba2510eaf59b", + "dsTransID": "5c4c3ec0-d31b-442d-81e8-86025c08cb9d", "messageVersion": "2.2.0", "acsOperatorID": "10078025", - "authenticationValue": "AJkCAREXeQAAACvAhAJUdYknEmE=", + "authenticationValue": "AJkCByOJNAAAABOIhAJUdYknEmE=", "eci": "05", "transStatus": "Y", "whiteListStatusSource": "03", @@ -2163,845 +2373,843 @@ Envíe una solicitud 3RI por el valor del segundo bien/servicio "deviceChannel": "03", "messageCategory": "PA", "authMethod": "01", - "authTimestamp": "2024-09-10T21:12:29+00:00", - "transactionID": 248138 + "authTimestamp": "2024-09-10T22:49:54+00:00", + "transactionID": 248166 } ``` -**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo +**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo + --- -## Otros pagos/comercio entre múltiples partes -**Otros pagos** es la categoría reservada para los escenarios de **comercio entre múltiples partes** que pueden tener lugar cuando varias partes están involucradas en el procesamiento de múltiples autorizaciones asociadas con una única reserva de viaje o cuando varias partes en sectores distintos al de viajes están involucradas en el procesamiento de múltiples autorizaciones asociadas con un único pago desde el punto de vista del titular de la tarjeta. +## Transacciones con tarjeta registrada no programadas -En la solicitud de autenticación inicial y las solicitudes 3RI asociadas, los agentes de reservas/proveedores de servicios comerciales también deben usar las convenciones de nomenclatura y los identificadores apropiados para el caso de uso para el que están autenticando: +Las transacciones UCOF **Unscheduled card-on-file** se producen cuando un comerciante utiliza la información de la tarjeta almacenada en su sistema para realizar un cargo único y no programado en la tarjeta del cliente. Estas transacciones no están asociadas con pagos recurrentes o a plazos, sino que son transacciones únicas que aprovechan la información de la tarjeta almacenada previamente para facilitar el pago. -* Autenticación solo en nombre de un solo comerciante -* Autenticación en nombre de varios comerciantes -* Autenticarse a sí mismos y en nombre de otro comerciante +* Compras en línea sin intervención del titular de la tarjeta: Por ejemplo, un cliente realiza una compra en un sitio web utilizando la opción de ***guardar tarjeta para futuras compras***. Luego, en una fecha posterior, el comerciante utiliza la información de la tarjeta almacenada para procesar un pago por una compra adicional sin la necesidad de una interacción adicional por parte del cliente. +* Renovaciones automáticas de servicios no periódicos: Algunos servicios no siguen un ciclo de facturación regular, pero aún pueden optar por utilizar la información de la tarjeta almacenada para facilitar el pago de renovaciones automáticas. Por ejemplo, la renovación anual de una suscripción a un software que no se factura mensualmente, pero que utiliza la información de la tarjeta almacenada para procesar automáticamente el pago cuando llega la fecha de renovación. +* Pagos de tarifas o cargos únicos: Situaciones en las que un cliente necesita realizar un pago único y no programado a un comerciante, como el pago de una factura pendiente, un cargo por servicio adicional, o una compra de último minuto. +***Para Visa está disponible el flujo de pago dividido a través del DAF a partir de Abríl de 2024. Consultar para más detalle sobre VISA DAF*** -De manera similar a los envíos divididos, los emisores deben realizar un seguimiento del valor total utilizando los datos de transacción tanto de autorización como de autenticación. Esto es necesario ya que el agente de reservas/proveedor de servicios del comerciante no puede realizar una solicitud 3RI para todas las partes involucradas en la transacción y, como tal, el emisor no puede asumir que la suma de todas las solicitudes 3RI será igual al total del monto de autenticación inicial, pero los montos 3RI no deben exceder el monto autenticado original. +`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions -Agente de reservas que realiza la autenticación en nombre de un único comerciante -El titular de una tarjeta ha reservado un artículo en el sitio web de un agente de viajes, por ejemplo, un vuelo -por valor de $395, que se debe pagar al vendedor (es decir, la aerolínea, que será el comerciante en el -sistema de autorización) o cobrar por él en el momento de la reserva, pero el agente de viajes se encarga de la autenticación. +**Primera Autenticación - Agregar tarjeta** -| **Evento** | **Parte** | **Valor** | **Descripción** | -|--------------------------------------------------------|-------------------------|-----------|-----------------------------------------------------------------------------------------------------------------------------------------------------| -| Autenticación inicial por parte del agente de reservas | Agente de reservas | $395 | Autenticación inicial por el importe total del pedido por parte del agente de reservas | -| Autorización para bienes/servicios | Comerciante de viajes 1 | $395 | El agente de reservas proporciona el CAVV de la autenticación inicial al vendedor, lo que le permite realizar una autorización por el importe total | +### VISA con DAF +**Opción NPA:** esta opción no require verificar fondos de la cuenta. +***Request Lookup*** -**Autenticación inicial por parte del agente de reservas** +```json +{ + "deviceChannel": "02", + "messageCategory": "02", + "threeDSAuthenticationInd": "04", + "threeDSChallengeInd": "04", + "acctNumber": "4931119220729333", + "cardExpiryDate": "2902", + "redirectURI": "https://www.placetopay.com/web", + "reference": "Enero 2024", + "messageVersion": "2.2.0", + "billAddrCity": "Medellín", + "billAddrCountry": "COL", + "billAddrLine1": "Carrera 65 # 45 - 20", + "billAddrPostCode": "050004", + "billAddrState": "ANT", + "email": "john.doe@evertecinc.com", + "mobilePhone": { + "cc": "57", + "subscriber": "30011122333" + } +} +``` -Autenticación inicial por el importe total del pedido por parte del agente de reservas +**deviceChannel:** 02 - Navegador -### MASTERCARD +**messageCategory:** El valor 02 corresponde a transacción de NPA - No pago + +**threeDSAuthenticationInd**, indica el tipo de autenticación. El valor de 04 corresponde a agregar tarjeta. + +**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes + +* billAddrCity +* billAddrCountry +* billAddrLine1 +* billAddrPostCode +* billAddrState +* email +* mobilePhone + + +***Response Lookup*** + + +```json +{ + "action": "redirect", + "sessionToken": "b8ba7e2e3cb4b7cf8045c8e098bf84e5f77b6b643a1ce19cef9ebe4be8b05473", + "redirectURL": "https://3dss-dev.placetopay.ws/threeds/v2x/sessions/1268/b8ba7e2e3cb4b7cf8045c8e098bf84e5f77b6b643a1ce19cef9ebe4be8b05473", + "transactionID": 1312 +} +``` + +**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo + + +**Autenticaciones posteriores** + + +### VISA con DAF ***Request Lookup*** ```json { - "deviceChannel": "02", - "threeDSAuthenticationInd": "85", - "threeDSChallengeInd": "04", - "acctNumber": "5107000000010018", + "deviceChannel": "03", + "threeRIInd": "81", + "threeDSRequestorPriorAuthenticationInfo": { + "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", + "threeDSReqPriorAuthTimestamp": "2024-05-03T22:48:06+00:00", + "threeDSReqPriorRef": "5d822226-d2ad-4a43-8270-87c95003dad4", + "threeDSReqPriorAuthData": "valid_data" + }, + "acctNumber": "4931119220729333", "cardExpiryDate": "2902", - "redirectURI": "https://www.placetopay.com/web", - "purchaseAmount": "395", + "purchaseAmount": "1.00", "purchaseCurrency": "USD", - "reference": "Enero 2024", + "redirectURI": "https://www.placetopay.com/web", + "reference": "Febrero 2024", + "billAddrCity": "Medellín", + "billAddrCountry": "COL", + "billAddrLine1": "Carrera 65 # 45 - 20", + "billAddrPostCode": "050004", + "billAddrState": "ANT", + "email": "john.doe@evertecinc.com", + "mobilePhone": { + "cc": "57", + "subscriber": "30011122333" + }, "messageVersion": "2.2.0" } - ``` -**deviceChannel:** 02 - Navegador +**deviceChannel:** 03 indica que el canal es 3RI -**threeDSAuthenticationInd:** 01 indica que la transacción es de pago +**threeRIInd:** 81 indica que la transacción con una tarjeta registrada no programada -**threeDSChallengeInd:** 04: el desafío es obligatorio +**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa **primera autenticación**, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes + +* billAddrCity +* billAddrCountry +* billAddrLine1 +* billAddrPostCode +* billAddrState +* email +* mobilePhone ***Response Lookup*** + ```json { - "action": "redirect", - "sessionToken": "cf980dc8f7bc550243c9aa49e36902474b36dfcddd0d5671f78a924311c8bdc0", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86177/cf980dc8f7bc550243c9aa49e36902474b36dfcddd0d5671f78a924311c8bdc0", - "transactionID": 248143 + "action": "continue", + "messageType": "ARes", + "threeDSServerTransID": "aec4b66f-f4ce-4bbf-9904-0759efa6ea8e", + "acsReferenceNumber": "PTOPID", + "acsTransID": "f7a98ab1-37d1-4e20-a7db-8f0491fbdd6d", + "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", + "dsTransID": "655fabd4-ee08-4bab-963f-68c79063438f", + "messageVersion": "2.2.0", + "acsOperatorID": "CAS_OPERD_DR", + "authenticationValue": "BpkCBBYBJAAAAABkhAEkdYR0cUU=", + "eci": "05", + "messageExtension": [ + { + "name": "DAF Extension", + "id": "A000000003-003", + "criticalityIndicator": false, + "data": { + "chAccReqID": "PZFPk0jJzA/4p5cWcAufzU0vPnEWCABOuPE4vLp/FNk=", + "authPayProcessReqInd": "01", + "version": "1.0", + "authPayCredStatus": "Y", + "dafAdvice": "01" + } + } + ], + "transStatus": "Y", + "whiteListStatusSource": "03", + "whiteListStatus": "Y", + "deviceChannel": "03", + "messageCategory": "PA", + "authMethod": "FRICTIONLESS_AUTHENTICATION", + "authTimestamp": "2024-05-03T22:49:38+00:00" } ``` -**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo - - -### VISA +**Actión:** continue indica que ls API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo -***Request Lookup*** +--- -```json -{ - "deviceChannel": "02", - "threeDSAuthenticationInd": "01", - "threeDSChallengeInd": "04", - "acctNumber": "4931119220729333", - "cardExpiryDate": "2902", - "redirectURI": "https://www.placetopay.com/web", - "purchaseAmount": "395", - "purchaseCurrency": "USD", - "reference": "Enero 2024", - "messageVersion": "2.2.0" -} -``` -**deviceChannel:** 02 - Navegador +## Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSAuthenticationInd:** 01 indica que la transacción es de pago +Para obtener los datos requeridos se deberá de lanzar la transacción tipo CIT **primera autenticación**, para posterior consultar los datos de dicha transacción y poder enviar la información del threeDSRequestorPriorAuthenticationInfo en la transacción MIT. -**threeDSChallengeInd:** 04: el desafío es obligatorio +***Request Lookup*** +`GET` https://3dss-dev.placetopay.ws/api/v2x/transactions/{transactionID} ***Response Lookup*** ```json { - "action": "redirect", - "sessionToken": "c7bf55043c2d0403e87eaff8895951f70067e48a12a3d46203fd82df3da0a7c1", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86180/c7bf55043c2d0403e87eaff8895951f70067e48a12a3d46203fd82df3da0a7c1", - "transactionID": 248146 + "transStatus": "Y", + "transStatusReason": null, + "eci": "05", + "acsTransID": "5d822226-d2ad-4a43-8270-87c95003dad4", + "dsTransID": "5b3e6516-0a88-41a4-9c20-f97af2003acd", + "threeDSServerTransID": "fbefea2f-2ae6-4a21-94cc-d7e5083f05a6", + "sdkTransID": null, + "authenticationValue": "AAICAImZhwAAAAAAAAEkdYR0cUU=", + "messageVersion": "2.2.0", + "authMethod": "CARDHOLDER_CHALLENGE_OCCURRED", + "authTimestamp": "2024-05-03T22:48:06+00:00", + "enrolled": "Y", + "messageCategory": "NPA" } ``` -**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo +--- +## Otros casos +* Delayed Shipment **threeDSAuthenticationInd 09, threeRIInd 15** aplica par EMV 3DS 2.2 with Bridging Message Extension o par la versión EMV 3DS 2.3.1 +* Split Shipment **threeDSAuthenticationInd 08, threeRIInd 06** aplica par EMV 3DS 2.2 with Bridging Message Extension o par la versión EMV 3DS 2.3.1 +* Split Payment **threeDSAuthenticationInd 10, threeRIInd 16** aplica par EMV 3DS 2.2 with Bridging Message Extension o par la versión EMV 3DS 2.3.1 +--- -### Agente de reservas que realiza la autenticación en nombre de varios comerciantes +## Mejora la tasa de autenticaciones con datos adicionales +Nos complace invitarles a visitar el apartado de [Adicional Data](/three-d-s-server/api/sessions/detail-info) en nuestra documentación del API. Este apartado ofrece información crucial para optimizar el proceso de autenticación 3DS. -Un titular de tarjeta ha reservado en un sitio web de viajes **agente de reservas** tres artículos pagaderos a cada proveedor de viajes individual **comerciante 1, 2 y 3 en el sistema de autorización**. El sitio web de viajes no está recaudando fondos, sino que realiza la autenticación en nombre de los 3 proveedores de viajes: +La inclusión de estos datos adicionales en sus solicitudes permite a los emisores realizar una evaluación más precisa, lo que puede mejorar considerablemente la tasa de autenticaciones exitosas. -* Un vuelo por $170 pagadero a la aerolínea **proveedor/comerciante 1** en el momento de la reserva -* Un hotel para el cual no se debe realizar un depósito en el momento de la reserva (el hotel **proveedor/comerciante 2 toma los datos de la tarjeta en caso de que se requiera un pago por no presentarse** -* Un alquiler de automóvil para el cual se debe realizar un depósito de $50 a la compañía de alquiler **vendedor/comerciante 3** en el momento de la reserva +Les recomendamos revisar estas pautas para aprovechar al máximo las funcionalidades del API y así ofrecer una experiencia más segura y eficiente a sus usuarios. -| **Evento** | **Parte** | **Valor** | **Descripción** | -|------------------------------------------------------------|---------------------------------|-----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Autenticación inicial por parte del agente de reservas | Agente de reservas | $220 | Autenticación inicial por parte del agente de reservas por el monto adeudado por el pedido | -| El agente de reservas realiza tres transacciones 3RI | Agente de reservas | $220 | El agente de reservas realiza tres transacciones 3RI para obtener tres CAVV independientes: Aerolínea $170, Hotel $0, Alquiler de automóvil $50 | -| Autorización para bienes/servicios (Vuelo) | Comerciante de viajes 1 | $170 | El comerciante de la aerolínea utiliza el CAVV de la transacción 3RI con un valor de 170 (y su nombre en el CAVV) para realizar la autorización del boleto de avión. | -| Autorización para bienes/servicios (Alojamiento) | Comerciante de viajes 2 (hotel) | $0 | El comerciante de alojamiento utiliza el CAVV de la transacción 3RI con un valor de 0 (y su nombre en el CAVV) para realizar la autorización para configurar un MIT. | -| Autorización para bienes/servicios (Alquiler de automóvil) | Comerciante de viajes 3 | $50 | El comerciante de alquiler de automóviles utiliza el CAVV de la transacción 3RI con un valor de 50 (y su nombre en el CAVV) para realizar la autorización del depósito. | +--- +## Sesión transacción con Bridging Message Extension (BME) -**Autenticación inicial por parte del agente de reservas** +El 3DS **v2.3** introduce elementos de datos en la extensión del mensaje que pueden duplicar aquellos presentes en las versiones 3DS **v2.1 y v2.2**, pero con valores nuevos o diferentes. De acuerdo con la Especificación Básica **v2.3**, estos valores se establecen en la extensión del mensaje, mientras que en las versiones **v2.1 y v2.2** se encuentran en la parte central de los mensajes 3DS. En estos casos, el valor del elemento de datos en la extensión del mensaje prevalece sobre el valor correspondiente en la parte central del mensaje 3DS. Además, el Servidor 3DS genera el mensaje AReq **v2.1** o **v2.2** bajo la suposición de que el ACS no soporta la Extensión del Mensaje de Puente, y posteriormente, proporciona la información adicional a través de dicha extensión. Si se soporta la Extensión del Mensaje de Puente, el componente 3DS deberá ser compatible al menos con uno de los objetos de datos ***como datos recurrentes, datos de desafío, datos adicionales o datos de URL de archivo*** de la extensión del mensaje e implementar los requisitos correspondientes de la Especificación Básica **v2.3**. -Autenticación inicial por parte del agente de reservas por el monto adeudado por el pedido. +Con el objetivo de mejorar la tasa de aprobación en las autenticaciones, hemos ampliado este requerimiento creando la extensión BMS. Esta extensión facilita el acceso a la información disponible en la versión **2.3.1** del protocolo, que no estaba accesible en versiones anteriores **2.1.0 y 2.2.0**. De este modo, tanto el ACS como el servidor de directorios podrán tomar decisiones más informadas. -### MASTERCARD +### Especificaciones -***Request Lookup*** +| Versión BME | Mastercard | Visa | +|-----------------------------|---------------|---------------| +| Versión 1.0 **habilitada** | **Soportada** | **Soportada** | +| Versión 2.0 | En proceso | En proceso | -```json -{ - "deviceChannel": "02", - "threeDSAuthenticationInd": "85", - "threeDSChallengeInd": "04", - "acctNumber": "5107000000010018", - "cardExpiryDate": "2806", - "purchaseAmount": "220", - "redirectURI": "https://www.placetopay.com/web", - "purchaseCurrency": "USD", - "messageVersion": "2.2.0" -} -``` +**Transacción con BME inicial** -**deviceChannel:** 02 - Navegador +En esta versión, pondremos a disposición en la API de sesión varios elementos que podrá enviar para optimizar el uso de esta extensión. -**threeDSAuthenticationInd:** 85 indica que la transacción es de otros pagos +**cardSecurityCode:** Código de seguridad asociado a las tarjetas de crédito o débito. -**threeDSChallengeInd: 04:** el desafío es obligatorio +**threeDSRequestorAuthenticationInd:** Indicador de autenticación solicitado por el 3DS. -***Response Lookup*** +**threeRIInd:** Indica el tipo de **3RI** pedido. Este elemento de datos proporciona adicional información al ACS para determinar el mejor enfoque para entregar una solicitud 3RI. -```json -{ - "action": "redirect", - "sessionToken": "a52df573f6a0a8071714958671d018030c90fc1e6cdc00ac4b7b50a35403da53", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86184/a52df573f6a0a8071714958671d018030c90fc1e6cdc00ac4b7b50a35403da53", - "transactionID": 248150 -} -``` +**transChar:** Indica a la ACS transacciones específicas identificadas por el Comerciante. -**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo +Ver más detalle en [Reglas a tener en cuenta de la session API](/en/three-d-s-server/api/sessions/rules) +***La Extension solo se creara si es enviada en la session request bridgingMessageExtension*** -### VISA -***Request Lookup*** +### Ejemplo de los datos en el request ```json + { - "deviceChannel": "02", - "threeDSAuthenticationInd": "01", - "threeDSChallengeInd": "04", - "recurringExpiry": "20260101", - "recurringFrequency": "2", - "acctNumber": "4931119220729333", - "cardExpiryDate": "2902", - "purchaseAmount": "220", - "redirectURI": "https://www.placetopay.com/web", + "acctNumber": "4005580000000040", + "cardExpiryDate": "2411", + "purchaseAmount": "8.25", + "redirectURI": "https://www.placetopay.com", "purchaseCurrency": "USD", - "reference": "Enero 2024", - "messageVersion": "2.2.0" + "addPriorInformation": "Y", + "threeDSAuthenticationInd": "01", + "messageCategory": "01", + "deviceChannel": "03", + "threeRIInd": "01", + "recurringFrequency": "031", + "recurringExpiry": "20241020", + "bridgingMessageExtension": { + "data": { + "addData": { + "transChar": "CRYPTOCURRENCY_TRANSACTION", + "threeRIInd": "SPLIT_PAYMENT", + "cardSecurityCode": "123", + "threeDSRequestorAuthenticationInd": "SPLIT_PAYMENT" + }, + "recurringData": { + "recurringDate": "20241023", + "recurringInd": { + "frequencyInd": "VARIABLE_FREQUENCY", + "amountInd": "VARIABLE_PURCHASE" + } + } + } + } } -``` - -**deviceChannel:** 02 - Navegador - -**threeDSAuthenticationInd:** 01 indica que la transacción es de pago - -**threeDSChallengeInd:** 04 el desafío es obligatorio - -***Response Lookup*** -```json -{ - "action": "redirect", - "sessionToken": "e672a6977da87394e43b3da848a754f0fc0c3f73153e4adb781fc54db1e80525", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86196/e672a6977da87394e43b3da848a754f0fc0c3f73153e4adb781fc54db1e80525", - "transactionID": 248162 -} ``` -**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo - -**Transacciones 3RI aerolínea** - -El agente de reservas realiza la transaccion 3RI para obtener el CAVV y proporcionarlo al comerciante de viajes 1 (aerolínea) - -### MASTERCARD - -***Request Lookup*** +### Ejemplo De la extención creada por 3DSS ```json { - "deviceChannel": "03", - "threeRIInd": "85", - "threeDSRequestorPriorAuthenticationInfo": { - "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T22:21:27+00:00", - "threeDSReqPriorRef": "c524216d-a19e-4a6b-ae1c-40b82c59fe38" - }, - "acctNumber": "5107000000010018", - "cardExpiryDate": "2902", - "purchaseAmount": "170", - "redirectURI": "https://www.placetopay.com/web", - "purchaseCurrency": "USD", - "reference": "Marzo 2024", - "messageVersion": "2.2.0" + { + "id": "A000000802-004", + "data": { + "addData": { + "transChar": "02", + "threeRIInd": "15", + "cardSecurityCode": "123", + "acquirerCountryCode": "170", + "acquirerCountryCodeSource": "01", + "threeDSRequestorAuthenticationInd": "10" + }, + "recurringData": { + "recurringInd": { + "amountInd": "02", + "frequencyInd": "02" + }, + "recurringDate": "20241023", + "recurringAmount": "8.25", + "recurringExpiry": "20241020", + "recurringCurrency": "USD", + "recurringFrequency": "031" + } + }, + "name": "Bridging", + "version": "1.0", + "criticalityIndicator": false + } } -``` - -**deviceChannel:** 03 indica que el canal es 3RI -**threeRIInd:** 85 indica que la transacción de tipo otros pagos +``` -**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa (primera autenticación), consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**Versión 1 (v1):** -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa (primera autenticación), si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +- Atributos Soportados: +**addData:** Esta versión incluye soporte únicamente para el atributo addData, que contiene información adicional sobre la transacción, como el indicador de autenticación y otros datos relevantes. -***Response Lookup*** +- Ejemplo JSON para v1: ```json { - "action": "continue", - "messageType": "ARes", - "threeDSServerTransID": "1045a464-161f-4538-a769-9a0f84e27a3d", - "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", - "acsTransID": "f31f4da1-7ac1-4be4-b37a-9e28d8e4eb9e", - "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "a0dca8a6-5fc5-49f9-96b2-8ee5c9e51508", - "messageVersion": "2.2.0", - "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", - "authenticationValue": "xgSFPEJIAAAAAAAAAAAAAAAAAAA=", - "eci": "07", - "transStatus": "Y", - "whiteListStatusSource": "03", - "whiteListStatus": "Y", - "deviceChannel": "03", - "messageCategory": "PA", - "authMethod": "01", - "authTimestamp": "2024-09-10T22:34:13+00:00", - "transactionID": 248159 + "addData": { + "transChar": "CRYPTOCURRENCY_TRANSACTION", + "threeRIInd": "DELAYED_SHIPMENT", + "cardSecurityCode": "123", + "threeDSRequestorAuthenticationInd": "SPLIT_PAYMENT" + } } + ``` -**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo +**Versión 2 (v2):** -### VISA +- Atributos Soportados: + +**addData:** Además de los datos adicionales que incluyen el indicador de autenticación, esta versión también soporta los mismos atributos que en v1. + +**recurringData:** Se introduce en v2 el soporte para el atributo recurringData, que permite manejar información sobre transacciones recurrentes como la cantidad, frecuencia, y fecha de vencimiento. + +- Ejemplo JSON para v2: -***Request Lookup*** ```json { - "deviceChannel": "03", - "threeRIInd": "11", - "threeDSRequestorPriorAuthenticationInfo": { - "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T22:44:39+00:00", - "threeDSReqPriorRef": "9e4c13a7-0813-4402-9c53-687a01303f78" + "addData": { + "transChar": "CRYPTOCURRENCY_TRANSACTION", + "threeRIInd": "DELAYED_SHIPMENT", + "cardSecurityCode": "123", + "threeDSRequestorAuthenticationInd": "SPLIT_PAYMENT" }, - "acctNumber": "4931119220729333", - "cardExpiryDate": "2902", - "purchaseAmount": "170", - "redirectURI": "https://www.placetopay.com/web", - "purchaseCurrency": "USD", - "reference": "Febrero 2024", - "messageVersion": "2.2.0" + "recurringData": { + "recurringDate": "20241023", + "recurringInd": { + "frequencyInd": "VARIABLE_FREQUENCY", + "amountInd": "VARIABLE_PURCHASE" + } + } } + ``` -**deviceChannel:** 03 indica que el canal es 3RI -**threeRIInd:** 11 indica que la transacción de tipo otro pago +## Transacción de Recurrencia con el BME -***Response Lookup*** +### Atributos de la Transacción con Recurrencia -```json - { - "action": "continue", - "messageType": "ARes", - "threeDSServerTransID": "1a53d143-230f-47b9-b886-a201ee867489", - "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", - "acsTransID": "179f6511-b042-41f3-939d-7f862a527751", - "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "f5eb0bae-dccf-498e-b639-4abf5e86b162", - "messageVersion": "2.2.0", - "acsOperatorID": "10078025", - "authenticationValue": "AJkCAhAyeQAAAEJohAJUdYknEmE=", - "eci": "05", - "transStatus": "Y", - "whiteListStatusSource": "03", - "whiteListStatus": "Y", - "deviceChannel": "03", - "messageCategory": "PA", - "authMethod": "01", - "authTimestamp": "2024-09-10T22:46:32+00:00", - "transactionID": 248164 -} -``` +Los atributos de la transacción de recurrencia para el **BME** son válidos si el valor del campo `threeRIInd` es igual a alguno de los siguientes: -**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo +- **RECURRING_TRANSACTION** (Transacción Recurrente) +- **INSTALMENT_TRANSACTION** (Transacción a Plazos) +Cuando alguno de estos valores es el indicador en `threeRIInd`, se aplican las siguientes reglas para los indicadores de recurrencia sobre los datos del request base: -**Transacciones 3RI hotel** +**Datos Asociados a la Extensión del BME** -### MASTERCARD +Los siguientes datos se asociarán a la extensión del **BME** de acuerdo con los indicadores previamente mencionados: -***Request Lookup*** +### 1. `recurringAmount` -```json -{ - "deviceChannel": "03", - "threeRIInd": "85", - "threeDSRequestorPriorAuthenticationInfo": { - "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T22:21:27+00:00", - "threeDSReqPriorRef": "c524216d-a19e-4a6b-ae1c-40b82c59fe38" - }, - "acctNumber": "5107000000010018", - "cardExpiryDate": "2902", - "purchaseAmount": "0", - "redirectURI": "https://www.placetopay.com/web", - "purchaseCurrency": "USD", - "reference": "Abril 2024", - "messageVersion": "2.2.0" -} -``` +El campo `recurringAmount` será agregado a la extensión del **BME** en la sección de datos de recurrencia bajo las siguientes condiciones: -**deviceChannel:** 03 indica que el canal es 3RI +- **Condición 1**: El valor de `recurringInd.amountInd` es igual a **FIXED_FREQUENCY**. -**threeRIInd:** 85 indica que la transacción de tipo otros pagos +**Y** -**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +- **Condición 2**: El valor de `threeDSRequestorAuthenticationInd` es igual a: **RECURRING_TRANSACTION (02)**, **INSTALMENT_TRANSACTION (03)** o el valor de `threeRIInd` es igual a **RECURRING_TRANSACTION (01)**, **INSTALMENT_TRANSACTION (02)**. -**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +Si se cumplen las condiciones anteriores, el valor de `recurringAmount` se añadirá a la extensión del **BME**. El valor de `recurringAmount` será tomado del campo `purchaseAmount` en la solicitud base. -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa (primera autenticación), consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa (primera autenticación), si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +### 2. `recurringCurrency` -***Response Lookup*** +El campo `recurringCurrency` será agregado a la extensión del **BME** bajo las siguientes condiciones: -```json -{ - "action": "continue", - "messageType": "ARes", - "threeDSServerTransID": "32c88ea6-7841-4c8b-9067-b84c99b20784", - "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", - "acsTransID": "fa92fe01-84f7-4ae7-a3f1-1dd50f97ebef", - "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "634b8dc1-aa5b-48c3-b367-022156663c81", - "messageVersion": "2.2.0", - "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", - "authenticationValue": "xgRTaR2SAAAAAAAAAAAAAAAAAAA=", - "eci": "07", - "transStatus": "Y", - "whiteListStatusSource": "03", - "whiteListStatus": "Y", - "deviceChannel": "03", - "messageCategory": "PA", - "authMethod": "01", - "authTimestamp": "2024-09-10T22:36:05+00:00", - "transactionID": 248160 -} -``` -**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo +- **Condición**: El valor de `threeRIInd` es igual a: **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. -### VISA +Cuando se cumple esta condición, el valor de `recurringCurrency` será añadido a la extensión del **BME**, y corresponderá al valor proporcionado en el request base bajo el campo `purchaseCurrency`. -***Request Lookup*** -```json -{ - "deviceChannel": "03", - "threeRIInd": "11", - "threeDSRequestorPriorAuthenticationInfo": { - "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T22:44:39+00:00", - "threeDSReqPriorRef": "9e4c13a7-0813-4402-9c53-687a01303f78" - }, - "acctNumber": "4931119220729333", - "cardExpiryDate": "2902", - "purchaseAmount": "0", - "redirectURI": "https://www.placetopay.com/web", - "purchaseCurrency": "USD", - "reference": "Marzo 2024", - "messageVersion": "2.2.0" -} -``` +### 3. `recurringExponent` -**deviceChannel:** 03 indica que el canal es 3RI +El campo `recurringExponent` será agregado a la extensión del **BME** bajo las siguientes condiciones: -**threeRIInd:** 11 indica que la transacción de tipo otros pagos +- **Condición**: El valor de `threeRIInd` es igual a: **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. -**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +Cuando se cumple esta condición, el valor de `recurringExponent` será añadido a la extensión del **BME**, y corresponderá al valor proporcionado en el request base bajo el campo `purchaseExponent`. -**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa (primera autenticación), consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +### 4. `recurringDate` -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa (primera autenticación), si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +El campo `recurringDate` será agregado a la extensión del **BME** bajo las siguientes condiciones: -***Response Lookup*** +- **Condición**: El valor de `recurringInd.frequencyInd` es igual a: **FIXED_FREQUENCY (01)**. -```json -{ - "action": "continue", - "messageType": "ARes", - "threeDSServerTransID": "b9913d5d-4980-4103-b77c-5daf0c7054b0", - "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", - "acsTransID": "e9b7726c-6f9a-4606-afe3-09dce49f49a2", - "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "6f9c449a-0ff3-4438-8c47-e3009ded9cd1", - "messageVersion": "2.2.0", - "acsOperatorID": "10078025", - "authenticationValue": "AJkCB4EjdQAAAAAAhAJUdYknEmE=", - "eci": "05", - "transStatus": "Y", - "whiteListStatusSource": "03", - "whiteListStatus": "Y", - "deviceChannel": "03", - "messageCategory": "PA", - "authMethod": "01", - "authTimestamp": "2024-09-10T22:48:07+00:00", - "transactionID": 248165 -} -``` +Si esta condición se cumple, el campo `recurringDate` será añadido a la extensión del **BME**, siempre y cuando esté presente en el request base en `bridgingMessageExtension.data.recurringData.recurringDate`. + + +### 5. `recurringExpiry` + +El valor de `recurringExpiry` es calculado automáticamente por el sistema según las siguientes condiciones. + +- **Condición**: El valor de `threeRIInd` es igual a **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. +- **Condición**: Si el valor de `deviceChannel` en los atributos es igual a **RI** y no existe un valor previo para `recurringExpiry` en el request base. +- El campo `recurringExpiry` se toma de los datos de los datos enviados en el request base. + + +### 6. `recurringFrequency` + +El valor de `recurringFrequency` será tomado del request base bajo las siguientes condiciones: + +- **Condición**: El valor de `recurringInd.frequencyInd` es igual a **FIXED_FREQUENCY (01)**. -**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo +Si esta condición se cumple, el valor de `recurringFrequency` se tomará directamente del request base de lo contrario no se asignara un valor a la extension. -**Transacciones 3RI alquiler de automóvil** -El agente de reservas realiza la transacción 3RI para obtener el CAVV y proporcionarlo al comerciante de viajes 3 (alquiler automóvil) +### 7. `recurringInd` -### MASTERCARD +El campo `recurringInd` se compone de dos subcampos: `amountInd` y `frequencyInd`. Ambos serán agregados a la extensión del **BME** bajo las siguientes condiciones: -***Request Lookup*** +- **Condición**: El valor de `threeRIInd` es igual a **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. -```json -{ - "deviceChannel": "03", - "threeRIInd": "85", - "threeDSRequestorPriorAuthenticationInfo": { - "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T22:21:27+00:00", - "threeDSReqPriorRef": "c524216d-a19e-4a6b-ae1c-40b82c59fe38" - }, - "acctNumber": "5107000000010018", - "cardExpiryDate": "2902", - "purchaseAmount": "50", - "redirectURI": "https://www.placetopay.com/web", - "purchaseCurrency": "USD", - "reference": "Marzo 2024", - "messageVersion": "2.2.0" -} -``` +Cuando se cumple esta condición, los siguientes subcampos serán agregados: -**deviceChannel:** 03 indica que el canal es 3RI +#### Subcampos -**threeRIInd:** 85 indica que la transacción de tipo otros pagos +- **`amountInd`**: Se agregará el valor proporcionado en `bridgingMessageExtension.data.recurringData.recurringInd.amountInd` si está presente en el request base y +si no se proporciona un valor en el request base, él `amountInd` tendrá un valor por defecto de **FIXED_PURCHASE (01)**. -**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +- **`frequencyInd`**: Se agregará el valor proporcionado en `bridgingMessageExtension.data.recurringData.recurringInd.frequencyInd` si está presente en el request base y si no se proporciona un valor en el request base, él `frequencyInd` tendrá un valor por defecto de **FIXED_FREQUENCY (01)**. -**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +## Beneficios de la V2.3.1 del protocolo con el BME en 3DS con sus nuevos indicadores -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa (primera autenticación), consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +Ver más detalle en [Reglas a tener en cuenta de la session API con BME](/en/three-d-s-server/api/sessions/rules#elementos-que-podra-enviar-para-optimizar-el-uso-de-esta-extension-bme) -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa (primera autenticación), si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -***Response Lookup*** +**threeDSRequestorAuthenticationInd:** usado en el request base como: threeDSAuthenticationInd, este campo incluye nuevos indicadores disponibles en la versión 2.3.1 -```json -{ - "action": "continue", - "messageType": "ARes", - "threeDSServerTransID": "c34f67dc-7a25-4977-97f7-ca1f961946be", - "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", - "acsTransID": "fd189ecf-c65e-4a7d-9640-89662b850038", - "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "4680679e-d6ed-48d2-89d2-b73de0828a57", - "messageVersion": "2.2.0", - "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", - "authenticationValue": "xgSELtLrAAAAAAAAAAAAAAAAAAA=", - "eci": "07", - "transStatus": "Y", - "whiteListStatusSource": "03", - "whiteListStatus": "Y", - "deviceChannel": "03", - "messageCategory": "PA", - "authMethod": "01", - "authTimestamp": "2024-09-10T22:38:11+00:00", - "transactionID": 248161 -} -``` +- **BILLING_AGREEMENT (07):** Este indicador se refiere a un acuerdo de facturación entre el cliente y el comerciante, donde el cliente autoriza pagos recurrentes o futuros sin necesidad de autenticar cada transacción individualmente. Es común en suscripciones o servicios continuos donde los pagos se procesan periódicamente. -**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo +- **SPLIT_SHIPMENT (08):** Indica que el pedido se enviará en múltiples envíos. Esto puede ocurrir cuando el comerciante no tiene todos los artículos en stock o por conveniencia logística. En este caso, el cargo total puede dividirse y procesarse en función de los envíos parciales. +- **DELAYED_SHIPMENT (09):** Se refiere a una transacción en la que el envío del pedido se retrasa intencionalmente, ya sea por solicitud del cliente o por motivos logísticos del comerciante. El pago puede procesarse en el momento de la compra, pero el envío se llevará a cabo más tarde. -### VISA +- **SPLIT_PAYMENT (10):** Este indicador señala que el pago de una transacción se divide en varias partes, ya sea entre diferentes métodos de pago o en diferentes momentos. Por ejemplo, el cliente podría pagar una parte con una tarjeta de crédito y el resto con otro método, o pagar en varias cuotas. -***Request Lookup*** +- **MASTERCARD_THE_PAYMENT_REQUEST_IS_FOR_AN_AGENT_PAYMENT_TRANSACTION (85):** Este indicador se utiliza cuando la solicitud de pago está relacionada con una transacción gestionada por un agente en nombre del comerciante o cliente. Es común en casos donde una agencia u otro intermediario gestiona el pago, actuando como un tercero que facilita la transacción entre el comerciante y el cliente. -```json -{ - "deviceChannel": "03", - "threeRIInd": "11", - "threeDSRequestorPriorAuthenticationInfo": { - "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T22:44:39+00:00", - "threeDSReqPriorRef": "9e4c13a7-0813-4402-9c53-687a01303f78" - }, - "acctNumber": "4931119220729333", - "cardExpiryDate": "2902", - "purchaseAmount": "50", - "redirectURI": "https://www.placetopay.com/web", - "purchaseCurrency": "USD", - "reference": "Mayo 2024", - "messageVersion": "2.2.0" -} -``` +- **MASTERCARD_FOR_UNKNOWN_OR_UNDEFINED_FINAL_AMOUNT_BEFORE_PURCHASE_TRANSACTION (86):** Este indicador se emplea cuando el monto final de la transacción no se conoce o no está definido en el momento de la compra. Es útil en situaciones donde el importe total podría variar, como cuando se realizan reservas o compras que pueden implicar cargos adicionales, pero el monto exacto se determina posteriormente (por ejemplo, reservas de hotel, alquileres de automóviles o servicios con tarifas variables). -***deviceChannel:*** 03 indica que el canal es 3RI -***threeRIInd:*** 11 indica que la transacción de tipo otros pagos +**threeRIInd:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 -***threeDSReqPriorAuthMethod:*** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +- **DEVICE_BINDING_STATUS_CHECK (13):** Este indicador se utiliza para verificar el estado de la vinculación de un dispositivo. Se refiere a situaciones en las que es necesario verificar si un dispositivo está vinculado correctamente a una cuenta o tarjeta, lo que puede mejorar la seguridad de las transacciones recurrentes o de pago. -***threeDSReqPriorAuthTimestamp:*** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +- **CARD_SECURITY_CODE_STATUS_CHECK (14):** Este indicador permite verificar el estado del código de seguridad de la tarjeta (CVV o CVC). Es común en transacciones donde se requiere una autenticación adicional del código de seguridad para validar la legitimidad de la tarjeta utilizada. -***threeDSReqPriorRef:*** El ID otorgado por el ACS en la transacción previa (primera autenticación), consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +- **DELAYED_SHIPMENT (15):** Este indicador se utiliza para transacciones en las que el envío del producto o servicio se realizará en una fecha posterior. Es útil para casos en los que el pago se procesa de inmediato, pero la entrega se retrasa o se realiza más adelante. -***threeDSReqPriorAuthData:*** El ID otorgado por el DS en la transacción previa (primera autenticación), si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +- **SPLIT_PAYMENT (16):** Se refiere a una transacción en la que el pago se divide en varias partes. Esto puede ocurrir cuando el comprador elige pagar en diferentes cuotas o mediante diferentes métodos de pago para una sola transacción. -***Response Lookup*** +- **FIDO_CREDENTIAL_DELETION (17):** Este indicador se emplea cuando se solicita la eliminación de las credenciales de FIDO (Fast Identity Online) asociadas a una cuenta o dispositivo. FIDO es un estándar de autenticación que permite la eliminación de credenciales para mejorar la seguridad. -```json - { - "action": "continue", - "messageType": "ARes", - "threeDSServerTransID": "7a64778d-45de-48ae-8c78-ec688775315d", - "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", - "acsTransID": "d4b3bbae-5594-4c89-9cf8-ae2ac3499223", - "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "5c4c3ec0-d31b-442d-81e8-86025c08cb9d", - "messageVersion": "2.2.0", - "acsOperatorID": "10078025", - "authenticationValue": "AJkCByOJNAAAABOIhAJUdYknEmE=", - "eci": "05", - "transStatus": "Y", - "whiteListStatusSource": "03", - "whiteListStatus": "Y", - "deviceChannel": "03", - "messageCategory": "PA", - "authMethod": "01", - "authTimestamp": "2024-09-10T22:49:54+00:00", - "transactionID": 248166 -} -``` +- **FIDO_CREDENTIAL_REGISTRATION (18):** Se utiliza cuando se realiza la inscripción de nuevas credenciales FIDO. Este proceso vincula un dispositivo o cuenta a un método de autenticación más seguro, que es independiente de contraseñas tradicionales. -**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo +- **DECOUPLED_AUTHENTICATION_FALLBACK (19):** Este indicador se activa cuando se produce un fallo en el proceso de autenticación desacoplada. La autenticación desacoplada permite al titular de la tarjeta autenticarse en un canal distinto al del comercio (por ejemplo, a través de una app bancaria), y este código indica que el método ha fallado y se requiere una alternativa. +**transChar:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 ---- +- **CRYPTOCURRENCY_TRANSACTION (01):** Este indicador se utiliza para identificar transacciones relacionadas con criptomonedas. Permite que el emisor y otros actores del sistema de pagos reconozcan de forma explícita cuando la transacción involucra la compra, venta o intercambio de criptomonedas, lo que puede requerir un tratamiento especial debido a la naturaleza de este tipo de activos. +- **NFT_TRANSACTION (02):** Este indicador está diseñado para transacciones que implican la compra o el intercambio de tokens no fungibles (NFTs). Los NFTs son activos digitales únicos basados en tecnología blockchain, y este código ayuda a diferenciar estas transacciones de las compras tradicionales, ofreciendo una capa adicional de información relevante para la autenticación y el análisis de riesgos. -## Transacciones con tarjeta registrada no programadas -Las transacciones UCOF **Unscheduled card-on-file** se producen cuando un comerciante utiliza la información de la tarjeta almacenada en su sistema para realizar un cargo único y no programado en la tarjeta del cliente. Estas transacciones no están asociadas con pagos recurrentes o a plazos, sino que son transacciones únicas que aprovechan la información de la tarjeta almacenada previamente para facilitar el pago. +**amountInd:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 -* Compras en línea sin intervención del titular de la tarjeta: Por ejemplo, un cliente realiza una compra en un sitio web utilizando la opción de ***guardar tarjeta para futuras compras***. Luego, en una fecha posterior, el comerciante utiliza la información de la tarjeta almacenada para procesar un pago por una compra adicional sin la necesidad de una interacción adicional por parte del cliente. -* Renovaciones automáticas de servicios no periódicos: Algunos servicios no siguen un ciclo de facturación regular, pero aún pueden optar por utilizar la información de la tarjeta almacenada para facilitar el pago de renovaciones automáticas. Por ejemplo, la renovación anual de una suscripción a un software que no se factura mensualmente, pero que utiliza la información de la tarjeta almacenada para procesar automáticamente el pago cuando llega la fecha de renovación. -* Pagos de tarifas o cargos únicos: Situaciones en las que un cliente necesita realizar un pago único y no programado a un comerciante, como el pago de una factura pendiente, un cargo por servicio adicional, o una compra de último minuto. +- **FIXED_PURCHASE (01):** Indica que el monto de la transacción es fijo y no varía. Este tipo de compra es común en transacciones estándar donde el valor del producto o servicio está predefinido y no cambia durante el proceso de pago. -***Para Visa está disponible el flujo de pago dividido a través del DAF a partir de Abríl de 2024. Consultar para más detalle sobre VISA DAF*** +- **VARIABLE_PURCHASE (02):** Indica que el monto de la transacción puede variar. Se utiliza en casos donde el valor final de la compra no está determinado en el momento de la autenticación inicial, como en situaciones de envío fraccionado, cargos adicionales, o ajustes por servicios o productos variables. Este indicador proporciona flexibilidad en el manejo de transacciones con montos ajustables. -`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions +**frequencyInd:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 -**Primera Autenticación - Agregar tarjeta** +- **FIXED_FREQUENCY (01):** Indica que la frecuencia de la transacción recurrente es fija. Es utilizado cuando los pagos se realizan a intervalos regulares y predefinidos, como pagos mensuales, suscripciones o cuotas de préstamos. La periodicidad es constante y no cambia a lo largo del tiempo. +- **VARIABLE_FREQUENCY (02):** Indica que la frecuencia de la transacción recurrente puede variar. Se aplica en casos donde los pagos no se realizan a intervalos regulares, o la frecuencia cambia según las necesidades o circunstancias, como en pagos esporádicos o cuando el intervalo entre pagos no es predecible. Este indicador brinda flexibilidad para manejar pagos recurrentes que no siguen un patrón estricto. -### VISA con DAF -**Opción NPA:** esta opción no require verificar fondos de la cuenta. +## Casos de usos del BME +1. **Pagos Recurrentes (Recurring Payments)** -***Request Lookup*** +Indicadores Relevantes: + +- **threeRIInd:** RECURRING_TRANSACTION (01) +- **amountInd:** FIXED_PURCHASE (01) o VARIABLE_PURCHASE (02) +- **frequencyInd:** FIXED_FREQUENCY (01) o VARIABLE_FREQUENCY (02) + +**Caso de Uso:** Cuando un comerciante quiere procesar una transacción recurrente con un monto fijo o variable (como una suscripción mensual de un servicio o cuotas de pago de un préstamo), el BME puede ser utilizado para indicar el tipo de transacción recurrente, la frecuencia con la que se realizarán los pagos, y si el monto será fijo o variable. + +**Ejemplo:** Una plataforma de streaming quiere cobrar una suscripción mensual fija (por ejemplo, $10), pero también puede manejar casos donde el usuario paga montos variables basados en consumo, con una frecuencia no predefinida. ```json + { - "deviceChannel": "02", - "messageCategory": "02", - "threeDSAuthenticationInd": "04", - "threeDSChallengeInd": "04", - "acctNumber": "4931119220729333", - "cardExpiryDate": "2902", - "redirectURI": "https://www.placetopay.com/web", - "reference": "Enero 2024", - "messageVersion": "2.2.0", - "billAddrCity": "Medellín", - "billAddrCountry": "COL", - "billAddrLine1": "Carrera 65 # 45 - 20", - "billAddrPostCode": "050004", - "billAddrState": "ANT", - "email": "john.doe@evertecinc.com", - "mobilePhone": { - "cc": "57", - "subscriber": "30011122333" + "acctNumber": "4005580000000040", + "cardExpiryDate": "2411", + "purchaseAmount": "8.25", + "redirectURI": "https://www.placetopay.com", + "purchaseCurrency": "USD", + "addPriorInformation": "Y", + "threeDSAuthenticationInd": "02", + "messageCategory": "01", + "deviceChannel": "03", + "threeRIInd": "01", + "recurringFrequency": "031", + "recurringExpiry": "20241020", + "bridgingMessageExtension": { + "data": { + "addData": { + "threeRIInd": "RECURRING_TRANSACTION", + "cardSecurityCode": "123" + }, + "recurringData": { + "recurringDate": "20241023", + "recurringInd": { + "frequencyInd": "FIXED_PURCHASE", + "amountInd": "FIXED_FREQUENCY" + } + } + } } } + ``` -**deviceChannel:** 02 - Navegador -**messageCategory:** El valor 02 corresponde a transacción de NPA - No pago +2. **Transacciones a Plazos (Instalment Payments)** -**threeDSAuthenticationInd**, indica el tipo de autenticación. El valor de 04 corresponde a agregar tarjeta. +Indicadores Relevantes: -**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes +- **threeRIInd:** INSTALMENT_TRANSACTION (02) +- **amountInd:** FIXED_PURCHASE (01) o VARIABLE_PURCHASE (02) +- **frequencyInd:** FIXED_FREQUENCY (01) o VARIABLE_FREQUENCY (02) -* billAddrCity -* billAddrCountry -* billAddrLine1 -* billAddrPostCode -* billAddrState -* email -* mobilePhone +**Caso de Uso:** Para pagos a plazos, como la compra de un producto caro en cuotas, el BME puede especificar que la transacción es a plazos y ajustar la frecuencia de los pagos, además de indicar si los montos son fijos o variables a lo largo del tiempo. + +**Ejemplo:** Un cliente compra un electrodoméstico costoso y elige pagarlo en 6 cuotas fijas. Se puede usar el BME para indicar que es un pago a plazos con una frecuencia mensual fija y un monto constante. + +```json + +{ + "acctNumber": "4005580000000040", + "cardExpiryDate": "2411", + "purchaseAmount": "8.25", + "redirectURI": "https://www.placetopay.com", + "purchaseCurrency": "USD", + "addPriorInformation": "Y", + "threeDSAuthenticationInd": "02", + "messageCategory": "01", + "deviceChannel": "03", + "threeRIInd": "01", + "recurringFrequency": "031", + "recurringExpiry": "20241020", + "bridgingMessageExtension": { + "data": { + "addData": { + "threeRIInd": "INSTALMENT_TRANSACTION", + "cardSecurityCode": "123" + }, + "recurringData": { + "recurringDate": "20241023", + "recurringInd": { + "frequencyInd": "VARIABLE_PURCHASE", + "amountInd": "VARIABLE_FREQUENCY" + } + } + } + } +} + +``` + +3. **Envío Dividido o Demorado (Split or Delayed Shipment)** +Indicadores Relevantes: -***Response Lookup*** +**threeRIInd:** DELAYED_SHIPMENT (15) o SPLIT_PAYMENT (16) + +**Caso de Uso:** Para escenarios donde el pedido de un cliente se divide en varios envíos o donde el envío es retrasado, el BME puede proporcionar detalles adicionales sobre la naturaleza del pago. Esto es útil para gestionar transacciones donde una parte del pedido se envía ahora y otra más tarde, o cuando el envío se pospone. +**Ejemplo:** Un cliente hace una compra de múltiples artículos, pero algunos productos no están disponibles para envío inmediato. Se usa DELAYED_SHIPMENT para señalar al banco emisor que la transacción incluye envíos demorados. ```json + { - "action": "redirect", - "sessionToken": "b8ba7e2e3cb4b7cf8045c8e098bf84e5f77b6b643a1ce19cef9ebe4be8b05473", - "redirectURL": "https://3dss-dev.placetopay.ws/threeds/v2x/sessions/1268/b8ba7e2e3cb4b7cf8045c8e098bf84e5f77b6b643a1ce19cef9ebe4be8b05473", - "transactionID": 1312 + "acctNumber": "4005580000000040", + "cardExpiryDate": "2411", + "purchaseAmount": "8.25", + "redirectURI": "https://www.placetopay.com", + "purchaseCurrency": "USD", + "addPriorInformation": "Y", + "threeDSAuthenticationInd": "02", + "messageCategory": "01", + "deviceChannel": "03", + "threeRIInd": "01", + "recurringFrequency": "031", + "recurringExpiry": "20241020", + "bridgingMessageExtension": { + "data": { + "addData": { + "threeRIInd": "DELAYED_SHIPMENT", + "cardSecurityCode": "123" + } + } + } } -``` -**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo +``` +4. **Transacciones con Monedas Digitales (Cryptocurrency/NFT Transactions)** -**Autenticaciones posteriores** +Indicadores Relevantes: +**transChar:** CRYPTOCURRENCY_TRANSACTION (01) o NFT_TRANSACTION (02) -### VISA con DAF +**Caso de Uso:** En situaciones donde el pago se realiza con criptomonedas o NFT (tokens no fungibles), el BME puede ser usado para indicar que el pago no es con moneda tradicional, sino con activos digitales. Esto ayuda a los bancos emisores a evaluar correctamente el riesgo asociado a la transacción. -***Request Lookup*** +**Ejemplo:** Un cliente compra un NFT en una plataforma de arte digital utilizando criptomonedas. El BME indicaría que la transacción está asociada con un NFT_TRANSACTION o CRYPTOCURRENCY_TRANSACTION. ```json + { - "deviceChannel": "03", - "threeRIInd": "81", - "threeDSRequestorPriorAuthenticationInfo": { - "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-05-03T22:48:06+00:00", - "threeDSReqPriorRef": "5d822226-d2ad-4a43-8270-87c95003dad4", - "threeDSReqPriorAuthData": "valid_data" - }, - "acctNumber": "4931119220729333", - "cardExpiryDate": "2902", - "purchaseAmount": "1.00", + "acctNumber": "4005580000000040", + "cardExpiryDate": "2411", + "purchaseAmount": "8.25", + "redirectURI": "https://www.placetopay.com", "purchaseCurrency": "USD", - "redirectURI": "https://www.placetopay.com/web", - "reference": "Febrero 2024", - "billAddrCity": "Medellín", - "billAddrCountry": "COL", - "billAddrLine1": "Carrera 65 # 45 - 20", - "billAddrPostCode": "050004", - "billAddrState": "ANT", - "email": "john.doe@evertecinc.com", - "mobilePhone": { - "cc": "57", - "subscriber": "30011122333" - }, - "messageVersion": "2.2.0" + "addPriorInformation": "Y", + "threeDSAuthenticationInd": "01", + "messageCategory": "01", + "deviceChannel": "03", + "threeRIInd": "01", + "recurringFrequency": "031", + "recurringExpiry": "20241020", + "bridgingMessageExtension": { + "data": { + "addData": { + "transChar": "NFT_TRANSACTION", + "cardSecurityCode": "123", + "threeDSRequestorAuthenticationInd": "SPLIT_PAYMENT" + } + } + } } + + ``` -**deviceChannel:** 03 indica que el canal es 3RI +5. **Chequeo de Estado del Código de Seguridad de la Tarjeta (Card Security Code Status Check)** -**threeRIInd:** 81 indica que la transacción con una tarjeta registrada no programada +Indicadores Relevantes: -**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeRIInd:** CARD_SECURITY_CODE_STATUS_CHECK (14) -**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**Caso de Uso:** Este caso es relevante cuando el comerciante necesita realizar un chequeo del código de seguridad (CVV) asociado a la tarjeta sin realizar un pago inmediato. El BME permite agregar información adicional que indique que la transacción es solo una verificación del CVV. -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**Ejemplo:** Un servicio de verificación de tarjetas realiza un chequeo del código CVV antes de que se complete una transacción en el futuro. El BME indicaría este escenario sin necesidad de procesar un pago. -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa **primera autenticación**, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +```json -**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes +{ + "acctNumber": "4005580000000040", + "cardExpiryDate": "2411", + "purchaseAmount": "8.25", + "redirectURI": "https://www.placetopay.com", + "purchaseCurrency": "USD", + "addPriorInformation": "Y", + "threeDSAuthenticationInd": "04", + "messageCategory": "01", + "deviceChannel": "03", + "threeRIInd": "01", + "recurringFrequency": "031", + "recurringExpiry": "20241020", + "bridgingMessageExtension": { + "data": { + "addData": { + "threeRIInd": "CARD_SECURITY_CODE_STATUS_CHECK", + "cardSecurityCode": "123" + } + } + } +} -* billAddrCity -* billAddrCountry -* billAddrLine1 -* billAddrPostCode -* billAddrState -* email -* mobilePhone +``` + +6. **Eliminación y Registro de Credenciales FIDO (FIDO Credential Deletion/Registration)** -***Response Lookup*** +Indicadores Relevantes: + +**threeRIInd:** FIDO_CREDENTIAL_DELETION (17) o FIDO_CREDENTIAL_REGISTRATION (18) + +**Caso de Uso:** Estos indicadores se utilizan cuando se gestionan credenciales FIDO, un estándar para autenticación sin contraseña. El BME puede incluir información sobre la eliminación o el registro de credenciales FIDO en el contexto de una transacción, mejorando la seguridad del proceso. +**Ejemplo:** Un banco realiza una actualización de credenciales FIDO vinculadas a una cuenta de usuario. El BME incluiría indicadores que registren o eliminen dichas credenciales en la transacción. ```json + { - "action": "continue", - "messageType": "ARes", - "threeDSServerTransID": "aec4b66f-f4ce-4bbf-9904-0759efa6ea8e", - "acsReferenceNumber": "PTOPID", - "acsTransID": "f7a98ab1-37d1-4e20-a7db-8f0491fbdd6d", - "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "655fabd4-ee08-4bab-963f-68c79063438f", - "messageVersion": "2.2.0", - "acsOperatorID": "CAS_OPERD_DR", - "authenticationValue": "BpkCBBYBJAAAAABkhAEkdYR0cUU=", - "eci": "05", - "messageExtension": [ - { - "name": "DAF Extension", - "id": "A000000003-003", - "criticalityIndicator": false, - "data": { - "chAccReqID": "PZFPk0jJzA/4p5cWcAufzU0vPnEWCABOuPE4vLp/FNk=", - "authPayProcessReqInd": "01", - "version": "1.0", - "authPayCredStatus": "Y", - "dafAdvice": "01" - } - } - ], - "transStatus": "Y", - "whiteListStatusSource": "03", - "whiteListStatus": "Y", - "deviceChannel": "03", - "messageCategory": "PA", - "authMethod": "FRICTIONLESS_AUTHENTICATION", - "authTimestamp": "2024-05-03T22:49:38+00:00" + "acctNumber": "4005580000000040", + "cardExpiryDate": "2411", + "purchaseAmount": "8.25", + "redirectURI": "https://www.placetopay.com", + "purchaseCurrency": "USD", + "addPriorInformation": "Y", + "threeDSAuthenticationInd": "04", + "messageCategory": "01", + "deviceChannel": "03", + "threeRIInd": "01", + "recurringFrequency": "031", + "recurringExpiry": "20241020", + "bridgingMessageExtension": { + "data": { + "addData": { + "threeRIInd": "FIDO_CREDENTIAL_REGISTRATION", + "cardSecurityCode": "123" + } + } + } } + + ``` -**Actión:** continue indica que ls API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo +7. **Pagos Diferidos o Fraccionados (Split/Delayed Shipment)** ---- +Indicadores Relevantes: +**threeDSRequestorAuthenticationInd:** SPLIT_SHIPMENT (08) o DELAYED_SHIPMENT (09) +**threeRIInd:** DELAYED_SHIPMENT (15) o SPLIT_PAYMENT (16) -## Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**Caso de Uso:** Este escenario se aplica cuando un pedido se divide en varios envíos (split shipment) o cuando se retrasa el envío (delayed shipment). Los indicadores permiten que el emisor reconozca que la transacción no se completará de inmediato en su totalidad, sino que se llevará a cabo en varias partes o en momentos diferentes. -Para obtener los datos requeridos se deberá de lanzar la transacción tipo CIT **primera autenticación**, para posterior consultar los datos de dicha transacción y poder enviar la información del threeDSRequestorPriorAuthenticationInfo en la transacción MIT. +**SPLIT_SHIPMENT (08):** Se utiliza cuando la compra del cliente incluye múltiples productos que se enviarán por separado en diferentes momentos. +**DELAYED_SHIPMENT (09):** Aplica cuando el envío de un pedido completo se retrasa y el pago no se procesa hasta que los productos estén listos para su envío. -***Request Lookup*** +**Beneficio:** Proporciona un mecanismo para que el Access Control Server (ACS) reconozca que la transacción no se completa de una sola vez, lo que ayuda a evitar rechazos innecesarios por transacciones incompletas o por la percepción de pagos duplicados. -`GET` https://3dss-dev.placetopay.ws/api/v2x/transactions/{transactionID} +**Ejemplo:** Un cliente compra varios artículos en una tienda en línea, pero algunos productos están en preventa y serán enviados más tarde. El indicador SPLIT_SHIPMENT se incluye para informar al emisor que el pago se fraccionará en función de los envíos. Si, por otro lado, la tienda notifica un retraso en todo el envío, se utilizaría el indicador DELAYED_SHIPMENT para evitar problemas con la autorización del pago. -***Response Lookup*** ```json + { - "transStatus": "Y", - "transStatusReason": null, - "eci": "05", - "acsTransID": "5d822226-d2ad-4a43-8270-87c95003dad4", - "dsTransID": "5b3e6516-0a88-41a4-9c20-f97af2003acd", - "threeDSServerTransID": "fbefea2f-2ae6-4a21-94cc-d7e5083f05a6", - "sdkTransID": null, - "authenticationValue": "AAICAImZhwAAAAAAAAEkdYR0cUU=", - "messageVersion": "2.2.0", - "authMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "authTimestamp": "2024-05-03T22:48:06+00:00", - "enrolled": "Y", - "messageCategory": "NPA" + "acctNumber": "4005580000000040", + "cardExpiryDate": "2411", + "purchaseAmount": "8.25", + "redirectURI": "https://www.placetopay.com", + "purchaseCurrency": "USD", + "addPriorInformation": "Y", + "threeDSAuthenticationInd": "04", + "messageCategory": "01", + "deviceChannel": "03", + "threeRIInd": "01", + "recurringFrequency": "031", + "recurringExpiry": "20241020", + "bridgingMessageExtension": { + "data": { + "addData": { + "threeRIInd": "DELAYED_SHIPMENT", + "cardSecurityCode": "123", + "threeDSRequestorAuthenticationInd": "DELAYED_SHIPMENT" + } + } + } } -``` - ---- - -## Otros casos - -* Delayed Shipment **threeDSAuthenticationInd 09, threeRIInd 15** aplica par EMV 3DS 2.2 with Bridging Message Extension o par la versión EMV 3DS 2.3.1 -* Split Shipment **threeDSAuthenticationInd 08, threeRIInd 06** aplica par EMV 3DS 2.2 with Bridging Message Extension o par la versión EMV 3DS 2.3.1 -* Split Payment **threeDSAuthenticationInd 10, threeRIInd 16** aplica par EMV 3DS 2.2 with Bridging Message Extension o par la versión EMV 3DS 2.3.1 - ---- -## Mejora la tasa de autenticaciones con datos adicionales -Nos complace invitarles a visitar el apartado de [Adicional Data](/three-d-s-server/api/sessions/detail-info) en nuestra documentación del API. Este apartado ofrece información crucial para optimizar el proceso de autenticación 3DS. - -La inclusión de estos datos adicionales en sus solicitudes permite a los emisores realizar una evaluación más precisa, lo que puede mejorar considerablemente la tasa de autenticaciones exitosas. -Les recomendamos revisar estas pautas para aprovechar al máximo las funcionalidades del API y así ofrecer una experiencia más segura y eficiente a sus usuarios. +``` \ No newline at end of file diff --git a/src/pages/three-d-s-server/api/integration/session.mdx b/src/pages/three-d-s-server/api/integration/session.mdx index 04b91b1..a470dc7 100644 --- a/src/pages/three-d-s-server/api/integration/session.mdx +++ b/src/pages/three-d-s-server/api/integration/session.mdx @@ -355,514 +355,911 @@ Este tipo de sesiones se presentan cuando el comerciante está iniciando una tra --- +## Agregar tarjeta +### Opción PA -## Sesión transacción con Bridging Message Extension (BME) - -El 3DS **v2.3** introduce elementos de datos en la extensión del mensaje que pueden duplicar aquellos presentes en las versiones 3DS **v2.1 y v2.2**, pero con valores nuevos o diferentes. De acuerdo con la Especificación Básica **v2.3**, estos valores se establecen en la extensión del mensaje, mientras que en las versiones **v2.1 y v2.2** se encuentran en la parte central de los mensajes 3DS. En estos casos, el valor del elemento de datos en la extensión del mensaje prevalece sobre el valor correspondiente en la parte central del mensaje 3DS. Además, el Servidor 3DS genera el mensaje AReq **v2.1** o **v2.2** bajo la suposición de que el ACS no soporta la Extensión del Mensaje de Puente, y posteriormente, proporciona la información adicional a través de dicha extensión. Si se soporta la Extensión del Mensaje de Puente, el componente 3DS deberá ser compatible al menos con uno de los objetos de datos ***como datos recurrentes, datos de desafío, datos adicionales o datos de URL de archivo*** de la extensión del mensaje e implementar los requisitos correspondientes de la Especificación Básica **v2.3**. - -Con el objetivo de mejorar la tasa de aprobación en las autenticaciones, hemos ampliado este requerimiento creando la extensión BMS. Esta extensión facilita el acceso a la información disponible en la versión **2.3.1** del protocolo, que no estaba accesible en versiones anteriores **2.1.0 y 2.2.0**. De este modo, tanto el ACS como el servidor de directorios podrán tomar decisiones más informadas. - -### Especificaciones - -| Versión BME | Mastercard | Visa | -|-----------------------------|---------------|---------------| -| Versión 1.0 **habilitada** | **Soportada** | **Soportada** | -| Versión 2.0 | En proceso | En proceso | - -**Transacción con BME inicial** - -En esta versión, pondremos a disposición en la API de sesión varios elementos que podrá enviar para optimizar el uso de esta extensión. - -**cardSecurityCode:** Código de seguridad asociado a las tarjetas de crédito o débito. - -**threeDSRequestorAuthenticationInd:** Indicador de autenticación solicitado por el 3DS. - -**threeRIInd:** Indica el tipo de **3RI** pedido. Este elemento de datos proporciona adicional información al ACS para determinar el mejor enfoque para entregar una solicitud 3RI. - -**transChar:** Indica a la ACS transacciones específicas identificadas por el Comerciante. - -Ver más detalle en [Reglas a tener en cuenta de la session API](/en/three-d-s-server/api/sessions/rules) - -***La Extension solo se creara si es enviada en la session request bridgingMessageExtension*** +Durante el proceso de pago se tiene disponible la casilla que dice ***Guardar tarjeta para pagos futuros*** y se quiere verificar los fondos de la cuenta. +`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions -### Ejemplo de los datos en el request +***Request Lookup*** ```json - { - "acctNumber": "4005580000000040", - "cardExpiryDate": "2411", - "purchaseAmount": "8.25", - "redirectURI": "https://www.placetopay.com", + "deviceChannel": "02", + "threeDSChallengeInd": "04", + "threeDSAuthenticationInd": "04", + "acctNumber": "4009000000502", + "cardExpiryDate": "2902", + "purchaseAmount": "10", + "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", - "addPriorInformation": "Y", - "threeDSAuthenticationInd": "01", - "messageCategory": "01", - "deviceChannel": "03", - "threeRIInd": "01", - "recurringFrequency": "031", - "recurringExpiry": "20241020", - "bridgingMessageExtension": { - "data": { - "addData": { - "transChar": "CRYPTOCURRENCY_TRANSACTION", - "threeRIInd": "DELAYED_SHIPMENT", - "cardSecurityCode": "123", - "threeDSRequestorAuthenticationInd": "SPLIT_PAYMENT" - }, - "recurringData": { - "recurringDate": "20241023", - "recurringInd": { - "frequencyInd": "VARIABLE_FREQUENCY", - "amountInd": "VARIABLE_PURCHASE" - } - } - } - } + "reference": "Enero 2024", + "messageVersion": "2.2.0" } +``` +**deviceChannel:** 02 - Navegador. -``` +**threeDSChallengeInd:** indica si se solicita desafío o no, las opciones recomendables son: -### Ejemplo De la extención creada por 3DSS +* **03:** el requestor tiene la preferencia de que se aplique desafío. +* **04:** el desafío es obligatorio. + +**threeDSAuthenticationInd**, indica el tipo de autenticación. El valor de 04 corresponde a agregar tarjeta. + +**Nota:** El messageCategory es por defecto 01 (PA) + +***Response Lookup*** ```json { - { - "id": "A000000802-004", - "data": { - "addData": { - "transChar": "02", - "threeRIInd": "15", - "cardSecurityCode": "123", - "acquirerCountryCode": "170", - "acquirerCountryCodeSource": "01", - "threeDSRequestorAuthenticationInd": "10" - }, - "recurringData": { - "recurringInd": { - "amountInd": "02", - "frequencyInd": "02" - }, - "recurringDate": "20241023", - "recurringAmount": "8.25", - "recurringExpiry": "20241020", - "recurringCurrency": "USD", - "recurringFrequency": "031" - } - }, - "name": "Bridging", - "version": "1.0", - "criticalityIndicator": false - } + "action": "redirect", + "sessionToken": "e3f2d86cfffc96837f0762e08ec88a39704eff5ce2c7bbfeac83fac12c9f16d2", + "redirectURL": "https://3dss-dev.placetopay.ws/threeds/v2x/sessions/1253/e3f2d86cfffc96837f0762e08ec88a39704eff5ce2c7bbfeac83fac12c9f16d2", + "transactionID": 1297 } - ``` +**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo +### Opción NPA -**Versión 1 (v1):** - -- Atributos Soportados: +Esta opción no require verificar fondos de la cuenta. - **addData:** Esta versión incluye soporte únicamente para el atributo addData, que contiene información adicional sobre la transacción, como el indicador de autenticación y otros datos relevantes. +`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions -- Ejemplo JSON para v1: +***Request Lookup*** ```json { - "addData": { - "transChar": "CRYPTOCURRENCY_TRANSACTION", - "threeRIInd": "DELAYED_SHIPMENT", - "cardSecurityCode": "123", - "threeDSRequestorAuthenticationInd": "SPLIT_PAYMENT" - } + "deviceChannel": "02", + "messageCategory": "02", + "threeDSChallengeInd": "04", + "threeDSAuthenticationInd": "04", + "acctNumber": "4009000000502", + "cardExpiryDate": "2902", + "redirectURI": "https://www.placetopay.com/web", + "reference": "Febrero 2024", + "messageVersion": "2.2.0" } - ``` -**Versión 2 (v2):** +**deviceChannel:** 02 - Navegador -- Atributos Soportados: +**messageCategory:** 02 (NPA) - **addData:** Además de los datos adicionales que incluyen el indicador de autenticación, esta versión también soporta los mismos atributos que en v1. +**threeDSChallengeInd**, indica si se solicita desafío o no, las opciones recomendables son: - **recurringData:** Se introduce en v2 el soporte para el atributo recurringData, que permite manejar información sobre transacciones recurrentes como la cantidad, frecuencia, y fecha de vencimiento. +* **03:** el requestor tiene la preferencia de que se aplique desafío. +* **04:** el desafío es obligatorio. -- Ejemplo JSON para v2: +**threeDSAuthenticationInd**, indica el tipo de autenticación. El valor de 04 corresponde a agregar tarjeta. +***Response Lookup*** ```json { - "addData": { - "transChar": "CRYPTOCURRENCY_TRANSACTION", - "threeRIInd": "DELAYED_SHIPMENT", - "cardSecurityCode": "123", - "threeDSRequestorAuthenticationInd": "SPLIT_PAYMENT" - }, - "recurringData": { - "recurringDate": "20241023", - "recurringInd": { - "frequencyInd": "VARIABLE_FREQUENCY", - "amountInd": "VARIABLE_PURCHASE" - } - } + "action": "redirect", + "sessionToken": "7d1dd0ee35609312d7dbeb666481d9fc18f762e83a238583fa31c904c6c028d7", + "redirectURL": "https://3dss-dev.placetopay.ws/threeds/v2x/sessions/1254/7d1dd0ee35609312d7dbeb666481d9fc18f762e83a238583fa31c904c6c028d7", + "transactionID": 1298 } - ``` +**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo -## Transacción de Recurrencia con el BME - -### Atributos de la Transacción con Recurrencia - -Los atributos de la transacción de recurrencia para el **BME** son válidos si el valor del campo `threeRIInd` es igual a alguno de los siguientes: +--- -- **RECURRING_TRANSACTION** (Transacción Recurrente) -- **INSTALMENT_TRANSACTION** (Transacción a Plazos) -Cuando alguno de estos valores es el indicador en `threeRIInd`, se aplican las siguientes reglas para los indicadores de recurrencia sobre los datos del request base: +## Pagos recurrentes (Suscripción mensual a una plataforma) -**Datos Asociados a la Extensión del BME** +Una transacción recurrente es aquella en la que se realiza un cargo periódico al titular de la tarjeta de forma programada. +Estas transacciones son comunes en servicios de suscripción, como membresías, suscripciones a servicios de streaming, pagos de facturas recurrentes, etc. -Los siguientes datos se asociarán a la extensión del **BME** de acuerdo con los indicadores previamente mencionados: +`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions -### 1. `recurringAmount` +***Casos de uso:*** -El campo `recurringAmount` será agregado a la extensión del **BME** en la sección de datos de recurrencia bajo las siguientes condiciones: +* **Suscripciones a servicios digitales:** Por ejemplo, una suscripción mensual a una plataforma de streaming de video. +* **Pagos de facturas recurrentes:** Como el pago mensual de servicios públicos, pagos de seguros, o pagos de préstamos. +* **Renovaciones de membresía:** Por ejemplo, renovación automática de membresía en gimnasios o clubs. -- **Condición 1**: El valor de `recurringInd.amountInd` es igual a **FIXED_FREQUENCY**. +***Para VISA está disponible el flujo de pago recurrente a través del DAF*** - **Y** +**Primera Autenticación** -- **Condición 2**: El valor de `threeDSRequestorAuthenticationInd` es igual a: **RECURRING_TRANSACTION (02)**, **INSTALMENT_TRANSACTION (03)** o el valor de `threeRIInd` es igual a **RECURRING_TRANSACTION (01)**, **INSTALMENT_TRANSACTION (02)**. +Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación EMV 3DS donde el titular de la tarjeta esté disponible para autenticarse. -Si se cumplen las condiciones anteriores, el valor de `recurringAmount` se añadirá a la extensión del **BME**. El valor de `recurringAmount` será tomado del campo `purchaseAmount` en la solicitud base. +### MASTERCARD +***Request Lookup*** -### 2. `recurringCurrency` +```json +{ + "deviceChannel": "02", + "threeDSAuthenticationInd": "02", + "threeDSChallengeInd": "04", + "recurringExpiry": "20250101", + "recurringFrequency": "2", + "purchaseInstalData": "2", + "acctNumber": "5107000000010018", + "cardExpiryDate": "2902", + "redirectURI": "https://www.placetopay.com/web", + "purchaseAmount": "10", + "purchaseCurrency": "USD", + "reference": "Enero 2024", + "messageVersion": "2.2.0" +} +``` -El campo `recurringCurrency` será agregado a la extensión del **BME** bajo las siguientes condiciones: +**deviceChannel:** 02 - Navegador -- **Condición**: El valor de `threeRIInd` es igual a: **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. +**threeDSAuthenticationInd:** 02 indica que la transacción es una recurrencia -Cuando se cumple esta condición, el valor de `recurringCurrency` será añadido a la extensión del **BME**, y corresponderá al valor proporcionado en el request base bajo el campo `purchaseCurrency`. +**threeDSChallengeInd:** 04: el desafío es obligatorio +**recurringExpiry:** fecha final de la suscripción -### 3. `recurringExponent` +**recurringFrequency:** indica el número de días entre autorizaciones -El campo `recurringExponent` será agregado a la extensión del **BME** bajo las siguientes condiciones: +**purchaseInstalData:** Indica el número máximo de autorizaciones permitidas para pagos fraccionados. -- **Condición**: El valor de `threeRIInd` es igual a: **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. +***Response Lookup*** -Cuando se cumple esta condición, el valor de `recurringExponent` será añadido a la extensión del **BME**, y corresponderá al valor proporcionado en el request base bajo el campo `purchaseExponent`. +```json +{ + "action": "redirect", + "sessionToken": "398864c1e4c8217283b67f0312a2d8ee14e3814c0e000a92d4532bc406f65d2f", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86036/398864c1e4c8217283b67f0312a2d8ee14e3814c0e000a92d4532bc406f65d2f", + "transactionID": 248002 +} +``` +**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo -### 4. `recurringDate` -El campo `recurringDate` será agregado a la extensión del **BME** bajo las siguientes condiciones: +### VISA -- **Condición**: El valor de `recurringInd.frequencyInd` es igual a: **FIXED_FREQUENCY (01)**. +***Para Visa está disponible el flujo de pago dividido a través del DAF a partir de Abríl de 2024. Consultar para más detalle sobre VISA DAF*** -Si esta condición se cumple, el campo `recurringDate` será añadido a la extensión del **BME**, siempre y cuando esté presente en el request base en `bridgingMessageExtension.data.recurringData.recurringDate`. +**Prerrequisitos:** +1. El identificador de comercio de **Visa Merchant ID VMID** deberá estar disponible en la subscripción. +2. El rango de tarjetas debe soportar el procesamiento con DAF -### 5. `recurringExpiry` +Datos requeridos en la petición API -El valor de `recurringExpiry` es calculado automáticamente por el sistema según las siguientes condiciones. +**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes -- **Condición**: El valor de `threeRIInd` es igual a **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. -- **Condición**: Si el valor de `deviceChannel` en los atributos es igual a **RI** y no existe un valor previo para `recurringExpiry` en el request base. -- El campo `recurringExpiry` se toma de los datos de los datos enviados en el request base. +* billAddrCity +* billAddrCountry +* billAddrLine1 +* billAddrPostCode +* billAddrState +* email +* mobilePhone +***Request Lookup*** -### 6. `recurringFrequency` +```json +{ + "deviceChannel": "02", + "threeDSAuthenticationInd": "02", + "threeDSChallengeInd": "04", + "recurringExpiry": "20260101", + "recurringFrequency": "2", + "acctNumber": "4931119220729333", + "cardExpiryDate": "2902", + "purchaseAmount": "1.02", + "redirectURI": "https://www.placetopay.com/web", + "purchaseCurrency": "USD", + "reference": "Enero 2024", + "billAddrCity": "Medellín", + "billAddrCountry": "COL", + "billAddrLine1": "Carrera 65 # 45 - 20", + "billAddrPostCode": "050004", + "billAddrState": "ANT", + "email": "john.doe@evertecinc.com", + "mobilePhone": { + "cc": "57", + "subscriber": "30011122333" + }, + "messageVersion": "2.2.0" +} +``` -El valor de `recurringFrequency` será tomado del request base bajo las siguientes condiciones: +**deviceChannel:** 02 - Navegador -- **Condición**: El valor de `recurringInd.frequencyInd` es igual a **FIXED_FREQUENCY (01)**. +**threeDSAuthenticationInd:** 02 indica que la transacción es recurrente -Si esta condición se cumple, el valor de `recurringFrequency` se tomará directamente del request base de lo contrario no se asignara un valor a la extension. +**threeDSChallengeInd:** 04: el desafío es obligatorio +**recurringExpiry:** fecha final de la suscripción -### 7. `recurringInd` +**recurringFrequency:** indica el número de días entre autorizaciones -El campo `recurringInd` se compone de dos subcampos: `amountInd` y `frequencyInd`. Ambos serán agregados a la extensión del **BME** bajo las siguientes condiciones: +**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes -- **Condición**: El valor de `threeRIInd` es igual a **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. +* billAddrCity +* billAddrCountry +* billAddrLine1 +* billAddrPostCode +* billAddrState +* email +* mobilePhone -Cuando se cumple esta condición, los siguientes subcampos serán agregados: -#### Subcampos +***Response Lookup*** -- **`amountInd`**: Se agregará el valor proporcionado en `bridgingMessageExtension.data.recurringData.recurringInd.amountInd` si está presente en el request base y -si no se proporciona un valor en el request base, él `amountInd` tendrá un valor por defecto de **FIXED_PURCHASE (01)**. +```json +{ + "action": "redirect", + "sessionToken": "c56d238b35d23b8cf564f2b6b641ed0e8a3056fb639d9df245d4bec825e4b74a", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86039/c56d238b35d23b8cf564f2b6b641ed0e8a3056fb639d9df245d4bec825e4b74a", + "transactionID": 248005 +} +``` + +**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo + +**Autenticaciones posteriores** + +Envíe una solicitud 3RI por el valor de la recurrencia + +### MASTERCARD + +***Request Lookup*** + +```json +{ + "deviceChannel": "03", + "threeRIInd": "01", + "threeDSRequestorPriorAuthenticationInfo": { + "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", + "threeDSReqPriorAuthTimestamp": "2024-09-09T19:48:20+00:00", + "threeDSReqPriorRef": "fa4544ea-9002-444a-a891-5fd126735c41" + }, + "acctNumber": "5107000000010018", + "cardExpiryDate": "2902", + "purchaseAmount": "5", + "redirectURI": "https://www.placetopay.com/web", + "purchaseCurrency": "USD", + "reference": "Febrero 2024", + "messageVersion": "2.2.0" +} +``` + +**deviceChannel:** 03 indica que el canal es 3RI + +**threeRIInd:** 01 indica que la transacción es recurrente + +**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, +02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, +consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, +consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, +si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +***Response Lookup*** + +```json +{ + "action": "continue", + "messageType": "ARes", + "threeDSServerTransID": "2e6bd601-7a61-4fa5-accc-10a30e0d66db", + "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", + "acsTransID": "80fb86d5-35e7-4249-b6df-6905d9c6ba4f", + "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", + "dsTransID": "3a961497-8ac7-447d-9926-06bf4c1fa1a9", + "messageVersion": "2.2.0", + "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", + "authenticationValue": "xgQiqOYmAAAAAAAAAAAAAAAAAAA=", + "eci": "07", + "messageExtension": [ + { + "name": "ACS RBA", + "id": "A000000004-acsRBA", + "criticalityIndicator": false, + "data": { + "A000000004-acsRBA": { + "status": "success", + "score": "500", + "decision": "Low Risk", + "reasonCode1": "H", + "reasonCode2": "GG" + } + } + } + ], + "transStatus": "Y", + "whiteListStatusSource": "03", + "whiteListStatus": "Y", + "deviceChannel": "03", + "messageCategory": "PA", + "authMethod": "01", + "authTimestamp": "2024-09-09T19:52:20+00:00", + "transactionID": 248003 +} +``` + +**Actión:** continue indica que la API retornara la información de la autenticación,y por ende no es necesario consumir endpoints adicionales para continuar con el flujo + + +### VISA + +***Para Visa está disponible el flujo de pago dividido a través del DAF a partir de Abríl de 2024. Consultar para más detalle sobre VISA DAF*** + +**Prerrequisitos:** + +1. El identificador de comercio de **Visa Merchant ID VMID** deberá estar disponible en la subscripción. +2. El rango de tarjetas debe soportar el procesamiento con DAF + +Datos requeridos en la petición API + +**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes + +* billAddrCity +* billAddrCountry +* billAddrLine1 +* billAddrPostCode +* billAddrState +* email +* mobilePhone + +***Request Lookup*** + +```json +{ + "deviceChannel": "03", + "threeRIInd": "01", + "threeDSRequestorPriorAuthenticationInfo": { + "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", + "threeDSReqPriorAuthTimestamp": "2024-09-09T20:06:30+00:00", + "threeDSReqPriorRef": "3b632ce4-26ea-407d-a2a0-4a7b27c91c14" + }, + "acctNumber": "4931119220729333", + "cardExpiryDate": "2902", + "purchaseAmount": "1.00", + "redirectURI": "https://www.placetopay.com/web", + "purchaseCurrency": "USD", + "reference": "Febrero 2024", + "billAddrCity": "Medellín", + "billAddrCountry": "COL", + "billAddrLine1": "Carrera 65 # 45 - 20", + "billAddrPostCode": "050004", + "billAddrState": "ANT", + "email": "john.doe@evertecinc.com", + "mobilePhone": { + "cc": "57", + "subscriber": "30011122333" + }, + "messageVersion": "2.2.0" +} +``` + +**deviceChannel:** 03 indica que el canal es 3RI + +**threeRIInd:** 01 indica que la transacción es recurrente + +**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa **primera autenticación**, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes + +* billAddrCity +* billAddrCountry +* billAddrLine1 +* billAddrPostCode +* billAddrState +* email +* mobilePhone + + +***Response Lookup*** + +```json +{ + "action": "continue", + "messageType": "ARes", + "threeDSServerTransID": "0e0ee43c-9601-4e29-9c8d-32b893ded4db", + "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", + "acsTransID": "ab8b1aec-2cf9-4d60-a45f-8d499894dae5", + "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", + "dsTransID": "072b329b-ca7f-47ff-a6b0-ff5a3d6321cb", + "messageVersion": "2.2.0", + "acsOperatorID": "10078025", + "authenticationValue": "BpkCBIU4VgAAAABkhAJTdYknEmE=", + "eci": "05", + "messageExtension": [ + { + "name": "DAF Extension", + "id": "A000000003-003", + "criticalityIndicator": false, + "data": { + "chAccReqID": "MUHZx0nojuVVAZJwPD4CWps0RuxUPxepI8sk57Yd/s4=", + "authPayProcessReqInd": "01", + "version": "1.0", + "authPayCredStatus": "Y", + "dafAdvice": "01" + } + } + ], + "transStatus": "Y", + "whiteListStatusSource": "03", + "whiteListStatus": "Y", + "deviceChannel": "03", + "messageCategory": "PA", + "authMethod": "01", + "authTimestamp": "2024-09-09T20:52:36+00:00", + "transactionID": 248013 +} +``` + +**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo + +--- + +## Pagos a Plazos + +Una transacción a plazos es aquella en la que el monto total de la compra se divide en pagos periódicos más pequeños a lo largo de un período de tiempo determinado. Estos pagos pueden incluir intereses u otras tarifas asociadas con la financiación de la compra. + +A diferencia de una transacción recurrente, en una transacción a plazos, el titular de la tarjeta realiza una única compra que se divide en varios pagos, en lugar de autorizar múltiples cargos separados. Cada pago puede requerir una autorización individual, pero el titular de la tarjeta no necesita autorizar los pagos futuros al realizar la compra inicial. Adicionalmente, la compra a plazos tiene límite en cantidad de autorizaciones ***purchaseInstalData*** y ***recurringExpiry*** y los montos son acumulados, la recurrencia tiene límite la fecha recurringExpiry y el monto es siempre el mismo, o al menos ese es el máximo + +`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions + +***Casos de uso:*** + +* **Compras a plazos en línea:** Por ejemplo, comprar un artículo como una computadora y dividir el pago en cuotas mensuales. +* **Financiación de productos o servicios:** Como la compra de muebles para el hogar, equipos electrónicos, o servicios médicos que ofrecen opciones de financiación a plazos. +* **Planes de pago de vacaciones:** Agencias de viajes que ofrecen la opción de pagar las vacaciones en varios pagos antes de la fecha del viaje + +***Para VISA está disponible el flujo de pagos a plazo a través del DAF*** + +**Primera Autenticación** + +Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación EMV 3DS donde el titular de la tarjeta esté disponible para autenticarse. + +### MASTERCARD + +***Request Lookup*** + +```json +{ + "deviceChannel": "02", + "threeDSAuthenticationInd": "03", + "threeDSChallengeInd": "04", + "recurringExpiry": "20250101", + "recurringFrequency": "2", + "purchaseInstalData": "2", + "acctNumber": "5107000000010018", + "cardExpiryDate": "2902", + "redirectURI": "https://www.placetopay.com/web", + "purchaseAmount": "1000", + "purchaseCurrency": "USD", + "reference": "Enero 2024", + "messageVersion": "2.2.0" +} +``` + +**deviceChannel:** 02 - Navegador + +**threeDSAuthenticationInd:** 03 indica que la transacción es a plazos + +**threeDSChallengeInd:** 04: el desafío es obligatorio + +**recurringExpiry:** fecha final de la suscripción + +**recurringFrequency:** indica el número de días entre autorizaciones -- **`frequencyInd`**: Se agregará el valor proporcionado en `bridgingMessageExtension.data.recurringData.recurringInd.frequencyInd` si está presente en el request base y si no se proporciona un valor en el request base, él `frequencyInd` tendrá un valor por defecto de **FIXED_FREQUENCY (01)**. +**purchaseInstalData:** Indica el número máximo de autorizaciones permitidas para pagos fraccionados. -## Beneficios de la V2.3.1 del protocolo con el BME en 3DS con sus nuevos indicadores +***Response Lookup*** -Ver más detalle en [Reglas a tener en cuenta de la session API con BME](/en/three-d-s-server/api/sessions/rules#elementos-que-podra-enviar-para-optimizar-el-uso-de-esta-extension-bme) +```json +{ + "action": "redirect", + "sessionToken": "d6aa0439b5f0e29e6a9413321962cf962593130717098cbcde322b6bb50808fb", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86048/d6aa0439b5f0e29e6a9413321962cf962593130717098cbcde322b6bb50808fb", + "transactionID": 248014 +} +``` -**threeDSRequestorAuthenticationInd:** usado en el request base como: threeDSAuthenticationInd, este campo incluye nuevos indicadores disponibles en la versión 2.3.1 +**Actión:** redirect indica que LA API retornara un redirectURL que deberá ser consumido para continuar con el flujo -- **BILLING_AGREEMENT (07):** Este indicador se refiere a un acuerdo de facturación entre el cliente y el comerciante, donde el cliente autoriza pagos recurrentes o futuros sin necesidad de autenticar cada transacción individualmente. Es común en suscripciones o servicios continuos donde los pagos se procesan periódicamente. -- **SPLIT_SHIPMENT (08):** Indica que el pedido se enviará en múltiples envíos. Esto puede ocurrir cuando el comerciante no tiene todos los artículos en stock o por conveniencia logística. En este caso, el cargo total puede dividirse y procesarse en función de los envíos parciales. +### VISA -- **DELAYED_SHIPMENT (09):** Se refiere a una transacción en la que el envío del pedido se retrasa intencionalmente, ya sea por solicitud del cliente o por motivos logísticos del comerciante. El pago puede procesarse en el momento de la compra, pero el envío se llevará a cabo más tarde. +***Request Lookup*** -- **SPLIT_PAYMENT (10):** Este indicador señala que el pago de una transacción se divide en varias partes, ya sea entre diferentes métodos de pago o en diferentes momentos. Por ejemplo, el cliente podría pagar una parte con una tarjeta de crédito y el resto con otro método, o pagar en varias cuotas. +```json +{ + "deviceChannel": "02", + "threeDSAuthenticationInd": "03", + "threeDSChallengeInd": "04", + "recurringExpiry": "20260101", + "recurringFrequency": "2", + "purchaseInstalData": "2", + "acctNumber": "4931119220729333", + "cardExpiryDate": "2902", + "purchaseAmount": "1000", + "redirectURI": "https://www.placetopay.com/web", + "purchaseCurrency": "USD", + "reference": "Enero 2024", + "billAddrCity": "Medellín", + "billAddrCountry": "COL", + "billAddrLine1": "Carrera 65 # 45 - 20", + "billAddrPostCode": "050004", + "billAddrState": "ANT", + "email": "john.doe@evertecinc.com", + "mobilePhone": { + "cc": "57", + "subscriber": "30011122333" + }, + "messageVersion": "2.2.0" +} +``` -- **MASTERCARD_THE_PAYMENT_REQUEST_IS_FOR_AN_AGENT_PAYMENT_TRANSACTION (85):** Este indicador se utiliza cuando la solicitud de pago está relacionada con una transacción gestionada por un agente en nombre del comerciante o cliente. Es común en casos donde una agencia u otro intermediario gestiona el pago, actuando como un tercero que facilita la transacción entre el comerciante y el cliente. +**deviceChannel:** 02 - Navegador -- **MASTERCARD_FOR_UNKNOWN_OR_UNDEFINED_FINAL_AMOUNT_BEFORE_PURCHASE_TRANSACTION (86):** Este indicador se emplea cuando el monto final de la transacción no se conoce o no está definido en el momento de la compra. Es útil en situaciones donde el importe total podría variar, como cuando se realizan reservas o compras que pueden implicar cargos adicionales, pero el monto exacto se determina posteriormente (por ejemplo, reservas de hotel, alquileres de automóviles o servicios con tarifas variables). +**threeDSAuthenticationInd:** 03 indica que la transacción es a plazos +**threeDSChallengeInd:** 04: el desafío es obligatorio -**threeRIInd:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 +**recurringExpiry:** fecha final de la suscripción -- **DEVICE_BINDING_STATUS_CHECK (13):** Este indicador se utiliza para verificar el estado de la vinculación de un dispositivo. Se refiere a situaciones en las que es necesario verificar si un dispositivo está vinculado correctamente a una cuenta o tarjeta, lo que puede mejorar la seguridad de las transacciones recurrentes o de pago. +**recurringFrequency:** indica el número de días entre autorizaciones -- **CARD_SECURITY_CODE_STATUS_CHECK (14):** Este indicador permite verificar el estado del código de seguridad de la tarjeta (CVV o CVC). Es común en transacciones donde se requiere una autenticación adicional del código de seguridad para validar la legitimidad de la tarjeta utilizada. +**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes -- **DELAYED_SHIPMENT (15):** Este indicador se utiliza para transacciones en las que el envío del producto o servicio se realizará en una fecha posterior. Es útil para casos en los que el pago se procesa de inmediato, pero la entrega se retrasa o se realiza más adelante. +* billAddrCity +* billAddrCountry +* billAddrLine1 +* billAddrPostCode +* billAddrState +* email +* mobilePhone -- **SPLIT_PAYMENT (16):** Se refiere a una transacción en la que el pago se divide en varias partes. Esto puede ocurrir cuando el comprador elige pagar en diferentes cuotas o mediante diferentes métodos de pago para una sola transacción. +***Response Lookup*** -- **FIDO_CREDENTIAL_DELETION (17):** Este indicador se emplea cuando se solicita la eliminación de las credenciales de FIDO (Fast Identity Online) asociadas a una cuenta o dispositivo. FIDO es un estándar de autenticación que permite la eliminación de credenciales para mejorar la seguridad. -- **FIDO_CREDENTIAL_REGISTRATION (18):** Se utiliza cuando se realiza la inscripción de nuevas credenciales FIDO. Este proceso vincula un dispositivo o cuenta a un método de autenticación más seguro, que es independiente de contraseñas tradicionales. +```json +{ + "action": "redirect", + "sessionToken": "96c03fe78346d11024057dfccbc8eed58b736de36631c8ff25e5c154386ade1f", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86104/96c03fe78346d11024057dfccbc8eed58b736de36631c8ff25e5c154386ade1f", + "transactionID": 248070 +} +``` -- **DECOUPLED_AUTHENTICATION_FALLBACK (19):** Este indicador se activa cuando se produce un fallo en el proceso de autenticación desacoplada. La autenticación desacoplada permite al titular de la tarjeta autenticarse en un canal distinto al del comercio (por ejemplo, a través de una app bancaria), y este código indica que el método ha fallado y se requiere una alternativa. +**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo -**transChar:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 -- **CRYPTOCURRENCY_TRANSACTION (01):** Este indicador se utiliza para identificar transacciones relacionadas con criptomonedas. Permite que el emisor y otros actores del sistema de pagos reconozcan de forma explícita cuando la transacción involucra la compra, venta o intercambio de criptomonedas, lo que puede requerir un tratamiento especial debido a la naturaleza de este tipo de activos. +**Autenticaciones posteriores** -- **NFT_TRANSACTION (02):** Este indicador está diseñado para transacciones que implican la compra o el intercambio de tokens no fungibles (NFTs). Los NFTs son activos digitales únicos basados en tecnología blockchain, y este código ayuda a diferenciar estas transacciones de las compras tradicionales, ofreciendo una capa adicional de información relevante para la autenticación y el análisis de riesgos. +Envíe una solicitud 3RI por el valor del pago a plazos +### MASTERCARD -**amountInd:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 +***Request Lookup*** -- **FIXED_PURCHASE (01):** Indica que el monto de la transacción es fijo y no varía. Este tipo de compra es común en transacciones estándar donde el valor del producto o servicio está predefinido y no cambia durante el proceso de pago. +```json +{ + "deviceChannel": "03", + "threeRIInd": "02", + "recurringExpiry": "20250101", + "recurringFrequency": "2", + "purchaseInstalData": "2", + "threeDSRequestorPriorAuthenticationInfo": { + "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", + "threeDSReqPriorAuthTimestamp": "2024-09-10T16:12:47+00:00", + "threeDSReqPriorRef": "51bbcd10-0c31-4efc-ad49-ba9bdea2f413" + }, + "acctNumber": "5107000000010018", + "cardExpiryDate": "2902", + "purchaseAmount": "500", + "redirectURI": "https://www.placetopay.com/web", + "purchaseCurrency": "USD", + "reference": "Febrero 2024", + "messageVersion": "2.2.0" +} +``` -- **VARIABLE_PURCHASE (02):** Indica que el monto de la transacción puede variar. Se utiliza en casos donde el valor final de la compra no está determinado en el momento de la autenticación inicial, como en situaciones de envío fraccionado, cargos adicionales, o ajustes por servicios o productos variables. Este indicador proporciona flexibilidad en el manejo de transacciones con montos ajustables. +**deviceChannel:** 03 indica que el canal es 3RI +**threeRIInd:** 02 indica que la transacción es a plazos -**frequencyInd:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 +**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -- **FIXED_FREQUENCY (01):** Indica que la frecuencia de la transacción recurrente es fija. Es utilizado cuando los pagos se realizan a intervalos regulares y predefinidos, como pagos mensuales, suscripciones o cuotas de préstamos. La periodicidad es constante y no cambia a lo largo del tiempo. +**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -- **VARIABLE_FREQUENCY (02):** Indica que la frecuencia de la transacción recurrente puede variar. Se aplica en casos donde los pagos no se realizan a intervalos regulares, o la frecuencia cambia según las necesidades o circunstancias, como en pagos esporádicos o cuando el intervalo entre pagos no es predecible. Este indicador brinda flexibilidad para manejar pagos recurrentes que no siguen un patrón estricto. +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -## Casos de usos del BME +***Response Lookup*** -1. **Pagos Recurrentes (Recurring Payments)** -Indicadores Relevantes: +```json +{ + "action": "continue", + "messageType": "ARes", + "threeDSServerTransID": "f5e8b9c4-5cfd-461d-9115-e51fe7d5c42a", + "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", + "acsTransID": "98d5739a-c623-4512-9f87-a48368848d44", + "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", + "dsTransID": "def67c44-653a-4879-b500-935d8429b4a4", + "messageVersion": "2.2.0", + "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", + "authenticationValue": "xgRKM8pzAAAAAAAAAAAAAAAAAAA=", + "eci": "07", + "transStatus": "Y", + "whiteListStatusSource": "03", + "whiteListStatus": "Y", + "deviceChannel": "03", + "messageCategory": "PA", + "authMethod": "01", + "authTimestamp": "2024-09-10T16:16:19+00:00", + "transactionID": 248067 +} +``` -- **threeRIInd:** RECURRING_TRANSACTION (01) -- **amountInd:** FIXED_PURCHASE (01) o VARIABLE_PURCHASE (02) -- **frequencyInd:** FIXED_FREQUENCY (01) o VARIABLE_FREQUENCY (02) +**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo -**Caso de Uso:** Cuando un comerciante quiere procesar una transacción recurrente con un monto fijo o variable (como una suscripción mensual de un servicio o cuotas de pago de un préstamo), el BME puede ser utilizado para indicar el tipo de transacción recurrente, la frecuencia con la que se realizarán los pagos, y si el monto será fijo o variable. +### VISA -**Ejemplo:** Una plataforma de streaming quiere cobrar una suscripción mensual fija (por ejemplo, $10), pero también puede manejar casos donde el usuario paga montos variables basados en consumo, con una frecuencia no predefinida. +***Para Visa está disponible el flujo de pago dividido a través del DAF a partir de Abríl de 2024. Consultar para más detalle sobre VISA DAF*** -2. **Transacciones a Plazos (Instalment Payments)** +**Prerrequisitos:** -Indicadores Relevantes: +1. El identificador de comercio de **Visa Merchant ID VMID** deberá estar disponible en la subscripción. +2. El rango de tarjetas debe soportar el procesamiento con DAF -**threeRIInd:** INSTALMENT_TRANSACTION (02) -**amountInd:** FIXED_PURCHASE (01) o VARIABLE_PURCHASE (02) -**frequencyInd:** FIXED_FREQUENCY (01) o VARIABLE_FREQUENCY (02) +Datos requeridos en la petición API -**Caso de Uso:** Para pagos a plazos, como la compra de un producto caro en cuotas, el BME puede especificar que la transacción es a plazos y ajustar la frecuencia de los pagos, además de indicar si los montos son fijos o variables a lo largo del tiempo. +**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes -**Ejemplo:** Un cliente compra un electrodoméstico costoso y elige pagarlo en 6 cuotas fijas. Se puede usar el BME para indicar que es un pago a plazos con una frecuencia mensual fija y un monto constante. +* billAddrCity +* billAddrCountry +* billAddrLine1 +* billAddrPostCode +* billAddrState +* email +* mobilePhone -3. **Envío Dividido o Demorado (Split or Delayed Shipment)** +***Request Lookup*** -Indicadores Relevantes: +```json +{ + "deviceChannel": "03", + "threeRIInd": "02", + "threeDSRequestorPriorAuthenticationInfo": { + "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", + "threeDSReqPriorAuthTimestamp": "2024-09-10T16:35:31+00:00", + "threeDSReqPriorRef": "f0bb9172-018d-42ae-b2ad-715e274bddef" + }, + "acctNumber": "4931119220729333", + "cardExpiryDate": "2902", + "purchaseAmount": "500", + "redirectURI": "https://www.placetopay.com/web", + "purchaseCurrency": "USD", + "reference": "Febrero 2024", + "billAddrCity": "Medellín", + "billAddrCountry": "COL", + "billAddrLine1": "Carrera 65 # 45 - 20", + "billAddrPostCode": "050004", + "billAddrState": "ANT", + "email": "john.doe@evertecinc.com", + "mobilePhone": { + "cc": "57", + "subscriber": "30011122333" + }, + "messageVersion": "2.2.0" +} +``` -**threeRIInd:** DELAYED_SHIPMENT (15) o SPLIT_PAYMENT (16) +**deviceChannel:** 03 indica que el canal es 3RI -**Caso de Uso:** Para escenarios donde el pedido de un cliente se divide en varios envíos o donde el envío es retrasado, el BME puede proporcionar detalles adicionales sobre la naturaleza del pago. Esto es útil para gestionar transacciones donde una parte del pedido se envía ahora y otra más tarde, o cuando el envío se pospone. +**threeRIInd:** 02 indica que la transacción es a plazos -**Ejemplo:** Un cliente hace una compra de múltiples artículos, pero algunos productos no están disponibles para envío inmediato. Se usa DELAYED_SHIPMENT para señalar al banco emisor que la transacción incluye envíos demorados. +**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -4. **Transacciones con Monedas Digitales (Cryptocurrency/NFT Transactions)** +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa **primera autenticación**, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -Indicadores Relevantes: +**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes -**transChar:** CRYPTOCURRENCY_TRANSACTION (01) o NFT_TRANSACTION (02) +* billAddrCity +* billAddrCountry +* billAddrLine1 +* billAddrPostCode +* billAddrState +* email +* mobilePhone -**Caso de Uso:** En situaciones donde el pago se realiza con criptomonedas o NFT (tokens no fungibles), el BME puede ser usado para indicar que el pago no es con moneda tradicional, sino con activos digitales. Esto ayuda a los bancos emisores a evaluar correctamente el riesgo asociado a la transacción. +***Response Lookup*** -**Ejemplo:** Un cliente compra un NFT en una plataforma de arte digital utilizando criptomonedas. El BME indicaría que la transacción está asociada con un NFT_TRANSACTION o CRYPTOCURRENCY_TRANSACTION. -5. **Chequeo de Estado del Código de Seguridad de la Tarjeta (Card Security Code Status Check)** +```json +{ + "action": "continue", + "messageType": "ARes", + "threeDSServerTransID": "50709e2a-4dad-4c60-acaa-c5d3e1ede924", + "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", + "acsTransID": "3cdfa009-4018-4230-a72b-658587a5794c", + "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", + "dsTransID": "72455b8f-5a57-4716-93fe-b72d3878805b", + "messageVersion": "2.2.0", + "acsOperatorID": "10078025", + "authenticationValue": "BpkCBSMnAAAAAMNQhAJUdYknEmE=", + "eci": "05", + "messageExtension": [ + { + "name": "DAF Extension", + "id": "A000000003-003", + "criticalityIndicator": false, + "data": { + "chAccReqID": "MUHZx0nojuVVAZJwPD4CWps0RuxUPxepI8sk57Yd/s4=", + "authPayProcessReqInd": "01", + "version": "1.0", + "authPayCredStatus": "Y", + "dafAdvice": "01" + } + } + ], + "transStatus": "Y", + "whiteListStatusSource": "03", + "whiteListStatus": "Y", + "deviceChannel": "03", + "messageCategory": "PA", + "authMethod": "01", + "authTimestamp": "2024-09-10T19:45:25+00:00", + "transactionID": 248109 +} +``` -Indicadores Relevantes: +**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo -**threeRIInd:** CARD_SECURITY_CODE_STATUS_CHECK (14) -**Caso de Uso:** Este caso es relevante cuando el comerciante necesita realizar un chequeo del código de seguridad (CVV) asociado a la tarjeta sin realizar un pago inmediato. El BME permite agregar información adicional que indique que la transacción es solo una verificación del CVV. +--- -**Ejemplo:** Un servicio de verificación de tarjetas realiza un chequeo del código CVV antes de que se complete una transacción en el futuro. El BME indicaría este escenario sin necesidad de procesar un pago. -6. **Eliminación y Registro de Credenciales FIDO (FIDO Credential Deletion/Registration)** +## Envío dividido -Indicadores Relevantes: +Este tipo de transacción se utiliza para indicar que la transacción corresponde a un envío dividido ***Split Shipment***. En un escenario de Split Shipment, un pedido o reserva se paga en varias transacciones porque los servicios o productos se proporcionan en momentos diferentes. Aunque el pedido inicial es único, la entrega de sus componentes se divide, y cada parte puede ser cobrada cuando esté lista o confirmada. -**threeRIInd:** FIDO_CREDENTIAL_DELETION (17) o FIDO_CREDENTIAL_REGISTRATION (18) +Los Envíos divididos permiten a los comerciantes solicitar un nuevo CAVV para obtener protección de responsabilidad en autorizaciones posteriores que puedan ser necesarias debido a múltiples autorizaciones relacionadas con un solo pedido. Este tipo de solicitudes pueden ser realizadas por cualquier comerciante que deba procesar varias autorizaciones asociadas a una única autenticación. -**Caso de Uso:** Estos indicadores se utilizan cuando se gestionan credenciales FIDO, un estándar para autenticación sin contraseña. El BME puede incluir información sobre la eliminación o el registro de credenciales FIDO en el contexto de una transacción, mejorando la seguridad del proceso. +***Datos a considerar al procesar envíos divididos:*** -**Ejemplo:** Un banco realiza una actualización de credenciales FIDO vinculadas a una cuenta de usuario. El BME incluiría indicadores que registren o eliminen dichas credenciales en la transacción. +* El nombre del solicitante 3DS **threeDSRequestorName** y el nombre del comerciante **merchantName** deben ser los mismos en la solicitud de autenticación inicial y en cada una de las solicitudes 3RI asociadas. +* El valor total de todas las solicitudes 3RI no debe superar la suma del monto de la solicitud inicial de autenticación y del total de los montos ya autorizados. Los emisores deben realizar un seguimiento del valor total utilizando los datos de transacción tanto de la autorización directa como de la autenticación **EMV 3DS** +`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions -7. **Pagos Diferidos o Fraccionados (Split/Delayed Shipment)** -Indicadores Relevantes: +***Casos de Uso:*** -**threeDSRequestorAuthenticationInd:** SPLIT_SHIPMENT (08) o DELAYED_SHIPMENT (09) -**threeRIInd:** DELAYED_SHIPMENT (15) o SPLIT_PAYMENT (16) +* **Pedidos con múltiples artículos:** un cliente realiza un pedido de varios productos que no están todos disponibles en el almacén al mismo tiempo. +Por lo tanto, el comerciante decide enviar los artículos en varias entregas, dependiendo de la disponibilidad. -**Caso de Uso:** Este escenario se aplica cuando un pedido se divide en varios envíos (split shipment) o cuando se retrasa el envío (delayed shipment). Los indicadores permiten que el emisor reconozca que la transacción no se completará de inmediato en su totalidad, sino que se llevará a cabo en varias partes o en momentos diferentes. -**SPLIT_SHIPMENT (08):** Se utiliza cuando la compra del cliente incluye múltiples productos que se enviarán por separado en diferentes momentos. -**DELAYED_SHIPMENT (09):** Aplica cuando el envío de un pedido completo se retrasa y el pago no se procesa hasta que los productos estén listos para su envío. +| Evento | Valor | Descripción | +|---------------------------------------------------------------------------------|-------|------------------------------------------------------------------------------------------------------------------------| +| Autenticación inicial | $167 | Autenticación inicial por el importe total del pedido. | +| Autorización Inicial del primer bien/servicio. | $25 | Se realiza la autorización para el primer bien/servicio utilizando CAVV a partir de la autenticación inicial anterior. | +| 3RI Solicitud de segundo bien/servicio. | $12 | Envíe una solicitud 3RI por el valor del segundo bien/servicio. | +| Autorización como reautorización MIT para un segundo bien/servicio. | $12 | Se realiza la autorización del segundo bien/servicio utilizando el CAVV de la solicitud 3RI anterior. | +| 3RI Solicitud de tercer y último bien/servicio. | $130 | Enviar una solicitud 3RI por el valor del tercer y último bien/servicio. | +| Autorización como reautorización del MIT para el tercer y último bien/servicio. | $130 | Realizar la autorización del tercer y último bien/servicio utilizando el CAVV de la solicitud 3RI anterior. | -**Beneficio:** Proporciona un mecanismo para que el Access Control Server (ACS) reconozca que la transacción no se completa de una sola vez, lo que ayuda a evitar rechazos innecesarios por transacciones incompletas o por la percepción de pagos duplicados. -**Ejemplo:** Un cliente compra varios artículos en una tienda en línea, pero algunos productos están en preventa y serán enviados más tarde. El indicador SPLIT_SHIPMENT se incluye para informar al emisor que el pago se fraccionará en función de los envíos. Si, por otro lado, la tienda notifica un retraso en todo el envío, se utilizaría el indicador DELAYED_SHIPMENT para evitar problemas con la autorización del pago. +****Para Visa está disponible el flujo de envío dividido a través del DAF**** ---- -## Agregar tarjeta +**Primera Autenticación** -### Opción PA +***Autenticación inicial por el importe total de la orden.*** -Durante el proceso de pago se tiene disponible la casilla que dice ***Guardar tarjeta para pagos futuros*** y se quiere verificar los fondos de la cuenta. +Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación EMV 3DS donde el titular de la tarjeta esté disponible para autenticarse por el valor total del pedido. Esta autenticación inicial puede utilizarse para la autorización asociada a la primera entrega de los bienes/servicios. -`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions +### MASTERCARD ***Request Lookup*** ```json { - "deviceChannel": "02", + "deviceChannel": "02", + "threeDSAuthenticationInd": "01", "threeDSChallengeInd": "04", - "threeDSAuthenticationInd": "04", - "acctNumber": "4009000000502", + "acctNumber": "5107000000010018", "cardExpiryDate": "2902", - "purchaseAmount": "10", "redirectURI": "https://www.placetopay.com/web", + "purchaseAmount": "167", "purchaseCurrency": "USD", "reference": "Enero 2024", "messageVersion": "2.2.0" } ``` -**deviceChannel:** 02 - Navegador. - -**threeDSChallengeInd:** indica si se solicita desafío o no, las opciones recomendables son: +**deviceChannel:** 02 - Navegador -* **03:** el requestor tiene la preferencia de que se aplique desafío. -* **04:** el desafío es obligatorio. +**threeDSAuthenticationInd:** 01 indica que la transacción es de pago -**threeDSAuthenticationInd**, indica el tipo de autenticación. El valor de 04 corresponde a agregar tarjeta. +**threeDSChallengeInd:** 04: el desafío es obligatorio -**Nota:** El messageCategory es por defecto 01 (PA) ***Response Lookup*** + ```json { "action": "redirect", - "sessionToken": "e3f2d86cfffc96837f0762e08ec88a39704eff5ce2c7bbfeac83fac12c9f16d2", - "redirectURL": "https://3dss-dev.placetopay.ws/threeds/v2x/sessions/1253/e3f2d86cfffc96837f0762e08ec88a39704eff5ce2c7bbfeac83fac12c9f16d2", - "transactionID": 1297 + "sessionToken": "dc6c2a30c763d7ce640dcf0a98b5d172e3f86c62c3dea3ea1175469d0e6befae", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86152/dc6c2a30c763d7ce640dcf0a98b5d172e3f86c62c3dea3ea1175469d0e6befae", + "transactionID": 248118 } ``` **Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo -### Opción NPA - -Esta opción no require verificar fondos de la cuenta. - -`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions +### VISA ***Request Lookup*** ```json { - "deviceChannel": "02", - "messageCategory": "02", + "deviceChannel": "02", + "threeDSAuthenticationInd": "01", "threeDSChallengeInd": "04", - "threeDSAuthenticationInd": "04", - "acctNumber": "4009000000502", + "acctNumber": "4931119220729333", "cardExpiryDate": "2902", + "purchaseAmount": "167", "redirectURI": "https://www.placetopay.com/web", - "reference": "Febrero 2024", + "purchaseCurrency": "USD", + "reference": "Enero 2024", "messageVersion": "2.2.0" } ``` **deviceChannel:** 02 - Navegador -**messageCategory:** 02 (NPA) - -**threeDSChallengeInd**, indica si se solicita desafío o no, las opciones recomendables son: - -* **03:** el requestor tiene la preferencia de que se aplique desafío. -* **04:** el desafío es obligatorio. +**threeDSAuthenticationInd:** 01 indica que la transacción es de pago -**threeDSAuthenticationInd**, indica el tipo de autenticación. El valor de 04 corresponde a agregar tarjeta. +**threeDSChallengeInd:** 04: el desafío es obligatorio ***Response Lookup*** + ```json { "action": "redirect", - "sessionToken": "7d1dd0ee35609312d7dbeb666481d9fc18f762e83a238583fa31c904c6c028d7", - "redirectURL": "https://3dss-dev.placetopay.ws/threeds/v2x/sessions/1254/7d1dd0ee35609312d7dbeb666481d9fc18f762e83a238583fa31c904c6c028d7", - "transactionID": 1298 + "sessionToken": "1e7c2e6f2516a07020f30f8e5ef63bca7de42e16ac9498b61f2a8efd5ba52968", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86160/1e7c2e6f2516a07020f30f8e5ef63bca7de42e16ac9498b61f2a8efd5ba52968", + "transactionID": 248126 } ``` - **Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo ---- - - -## Pagos recurrentes (Suscripción mensual a una plataforma) - -Una transacción recurrente es aquella en la que se realiza un cargo periódico al titular de la tarjeta de forma programada. -Estas transacciones son comunes en servicios de suscripción, como membresías, suscripciones a servicios de streaming, pagos de facturas recurrentes, etc. - -`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions - -***Casos de uso:*** - -* **Suscripciones a servicios digitales:** Por ejemplo, una suscripción mensual a una plataforma de streaming de video. -* **Pagos de facturas recurrentes:** Como el pago mensual de servicios públicos, pagos de seguros, o pagos de préstamos. -* **Renovaciones de membresía:** Por ejemplo, renovación automática de membresía en gimnasios o clubs. - -***Para VISA está disponible el flujo de pago recurrente a través del DAF*** - -**Primera Autenticación** +**3RI Solicitud de segundo bien/servicio.** -Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación EMV 3DS donde el titular de la tarjeta esté disponible para autenticarse. +Envíe una solicitud 3RI por el valor del segundo bien/servicio. ### MASTERCARD @@ -870,135 +1267,131 @@ Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación E ```json { - "deviceChannel": "02", - "threeDSAuthenticationInd": "02", - "threeDSChallengeInd": "04", - "recurringExpiry": "20250101", - "recurringFrequency": "2", - "purchaseInstalData": "2", + "deviceChannel": "03", + "threeRIInd": "06", + "threeDSRequestorPriorAuthenticationInfo": { + "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", + "threeDSReqPriorAuthTimestamp": "2024-08-14T16:16:01+00:00", + "threeDSReqPriorRef": "bd8571cb-f4f3-4ec6-ac23-d7ec11038c1c" + }, "acctNumber": "5107000000010018", "cardExpiryDate": "2902", + "purchaseAmount": "12", "redirectURI": "https://www.placetopay.com/web", - "purchaseAmount": "10", "purchaseCurrency": "USD", - "reference": "Enero 2024", + "reference": "Febrero 2024", "messageVersion": "2.2.0" } ``` -**deviceChannel:** 02 - Navegador +**deviceChannel:** 03 indica que el canal es 3RI -**threeDSAuthenticationInd:** 02 indica que la transacción es una recurrencia +**threeRIInd:** 06 indica que la transacción es un envío dividido o retrasado -**threeDSChallengeInd:** 04: el desafío es obligatorio +**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**recurringExpiry:** fecha final de la suscripción +**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**recurringFrequency:** indica el número de días entre autorizaciones +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**purchaseInstalData:** Indica el número máximo de autorizaciones permitidas para pagos fraccionados. +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo ***Response Lookup*** + ```json { - "action": "redirect", - "sessionToken": "398864c1e4c8217283b67f0312a2d8ee14e3814c0e000a92d4532bc406f65d2f", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86036/398864c1e4c8217283b67f0312a2d8ee14e3814c0e000a92d4532bc406f65d2f", - "transactionID": 248002 + "action": "continue", + "messageType": "ARes", + "threeDSServerTransID": "4159591c-bb88-4321-a295-0e6397377d3b", + "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", + "acsTransID": "b4ec2f82-106b-469b-897d-f2aa37bbf25f", + "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", + "dsTransID": "dc477252-ff8d-433d-b44a-4f8edbb0cae8", + "messageVersion": "2.2.0", + "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", + "authenticationValue": "xgTkbC8MAAAAAAAAAAAAAAAAAAA=", + "eci": "07", + "transStatus": "Y", + "whiteListStatusSource": "03", + "whiteListStatus": "Y", + "deviceChannel": "03", + "messageCategory": "PA", + "authMethod": "01", + "authTimestamp": "2024-09-10T20:19:30+00:00", + "transactionID": 248121 } ``` -**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo - +**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo ### VISA -***Para Visa está disponible el flujo de pago dividido a través del DAF a partir de Abríl de 2024. Consultar para más detalle sobre VISA DAF*** - -**Prerrequisitos:** - -1. El identificador de comercio de **Visa Merchant ID VMID** deberá estar disponible en la subscripción. -2. El rango de tarjetas debe soportar el procesamiento con DAF - -Datos requeridos en la petición API - -**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes - -* billAddrCity -* billAddrCountry -* billAddrLine1 -* billAddrPostCode -* billAddrState -* email -* mobilePhone - ***Request Lookup*** ```json { - "deviceChannel": "02", - "threeDSAuthenticationInd": "02", - "threeDSChallengeInd": "04", - "recurringExpiry": "20260101", - "recurringFrequency": "2", + "deviceChannel": "03", + "threeRIInd": "06", + "threeDSRequestorPriorAuthenticationInfo": { + "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", + "threeDSReqPriorAuthTimestamp": "2024-09-10T20:33:55+00:00", + "threeDSReqPriorRef": "68ea3861-fa27-429b-8633-ff3f6a288f71" + }, "acctNumber": "4931119220729333", "cardExpiryDate": "2902", - "purchaseAmount": "1.02", + "purchaseAmount": "12", "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", - "reference": "Enero 2024", - "billAddrCity": "Medellín", - "billAddrCountry": "COL", - "billAddrLine1": "Carrera 65 # 45 - 20", - "billAddrPostCode": "050004", - "billAddrState": "ANT", - "email": "john.doe@evertecinc.com", - "mobilePhone": { - "cc": "57", - "subscriber": "30011122333" - }, + "reference": "Febrero 2024", "messageVersion": "2.2.0" } ``` -**deviceChannel:** 02 - Navegador - -**threeDSAuthenticationInd:** 02 indica que la transacción es recurrente - -**threeDSChallengeInd:** 04: el desafío es obligatorio +**deviceChannel:** 03 indica que el canal es 3RI -**recurringExpiry:** fecha final de la suscripción +**threeRIInd:** 06 indica que la transacción es un envío dividido o retrasado -**recurringFrequency:** indica el número de días entre autorizaciones +**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes +**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -* billAddrCity -* billAddrCountry -* billAddrLine1 -* billAddrPostCode -* billAddrState -* email -* mobilePhone +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo ***Response Lookup*** + ```json { - "action": "redirect", - "sessionToken": "c56d238b35d23b8cf564f2b6b641ed0e8a3056fb639d9df245d4bec825e4b74a", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86039/c56d238b35d23b8cf564f2b6b641ed0e8a3056fb639d9df245d4bec825e4b74a", - "transactionID": 248005 + "action": "continue", + "messageType": "ARes", + "threeDSServerTransID": "87b8930d-8523-4083-8780-67adf3aeca96", + "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", + "acsTransID": "b02b97b8-6748-4ecb-9f42-441b7d83d9cd", + "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", + "dsTransID": "26281147-cee2-4683-a538-c70fad690a08", + "messageVersion": "2.2.0", + "acsOperatorID": "10078025", + "authenticationValue": "AJkCBxaRcQAAAASwhAJUdYknEmE=", + "eci": "05", + "transStatus": "Y", + "whiteListStatusSource": "03", + "whiteListStatus": "Y", + "deviceChannel": "03", + "messageCategory": "PA", + "authMethod": "01", + "authTimestamp": "2024-09-10T20:35:17+00:00", + "transactionID": 248127 } ``` **Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo -**Autenticaciones posteriores** +**3RI Solicitud de tercer y último bien/servicio** -Envíe una solicitud 3RI por el valor de la recurrencia +Enviar una solicitud 3RI por el valor del tercer y último bien/servicio. ### MASTERCARD @@ -1007,15 +1400,15 @@ Envíe una solicitud 3RI por el valor de la recurrencia ```json { "deviceChannel": "03", - "threeRIInd": "01", + "threeRIInd": "06", "threeDSRequestorPriorAuthenticationInfo": { "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-09T19:48:20+00:00", - "threeDSReqPriorRef": "fa4544ea-9002-444a-a891-5fd126735c41" + "threeDSReqPriorAuthTimestamp": "2024-09-10T20:16:01+00:00", + "threeDSReqPriorRef": "49c34627-aa6b-41dc-bdc8-e21c0276d9ce" }, "acctNumber": "5107000000010018", "cardExpiryDate": "2902", - "purchaseAmount": "5", + "purchaseAmount": "130", "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", "reference": "Febrero 2024", @@ -1025,177 +1418,101 @@ Envíe una solicitud 3RI por el valor de la recurrencia **deviceChannel:** 03 indica que el canal es 3RI -**threeRIInd:** 01 indica que la transacción es recurrente +**threeRIInd:** 06 indica que la transacción es un envío dividido o retrasado -**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, -02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, -consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, -consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, -si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo ***Response Lookup*** + ```json { "action": "continue", "messageType": "ARes", - "threeDSServerTransID": "2e6bd601-7a61-4fa5-accc-10a30e0d66db", + "threeDSServerTransID": "bc925646-c654-4ba2-9e0a-9afaaa5684cc", "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", - "acsTransID": "80fb86d5-35e7-4249-b6df-6905d9c6ba4f", + "acsTransID": "187648b7-ae15-4da6-a5df-f7298db768d9", "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "3a961497-8ac7-447d-9926-06bf4c1fa1a9", + "dsTransID": "a0a446cd-0767-4fa7-942b-e94571f1f37c", "messageVersion": "2.2.0", "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", - "authenticationValue": "xgQiqOYmAAAAAAAAAAAAAAAAAAA=", + "authenticationValue": "xgSlHx+5AAAAAAAAAAAAAAAAAAA=", "eci": "07", - "messageExtension": [ - { - "name": "ACS RBA", - "id": "A000000004-acsRBA", - "criticalityIndicator": false, - "data": { - "A000000004-acsRBA": { - "status": "success", - "score": "500", - "decision": "Low Risk", - "reasonCode1": "H", - "reasonCode2": "GG" - } - } - } - ], "transStatus": "Y", "whiteListStatusSource": "03", "whiteListStatus": "Y", "deviceChannel": "03", "messageCategory": "PA", "authMethod": "01", - "authTimestamp": "2024-09-09T19:52:20+00:00", - "transactionID": 248003 + "authTimestamp": "2024-09-10T20:23:36+00:00", + "transactionID": 248122 } -``` -**Actión:** continue indica que la API retornara la información de la autenticación,y por ende no es necesario consumir endpoints adicionales para continuar con el flujo +``` +**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo ### VISA -***Para Visa está disponible el flujo de pago dividido a través del DAF a partir de Abríl de 2024. Consultar para más detalle sobre VISA DAF*** - -**Prerrequisitos:** - -1. El identificador de comercio de **Visa Merchant ID VMID** deberá estar disponible en la subscripción. -2. El rango de tarjetas debe soportar el procesamiento con DAF - -Datos requeridos en la petición API - -**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes - -* billAddrCity -* billAddrCountry -* billAddrLine1 -* billAddrPostCode -* billAddrState -* email -* mobilePhone ***Request Lookup*** ```json { "deviceChannel": "03", - "threeRIInd": "01", + "threeRIInd": "06", "threeDSRequestorPriorAuthenticationInfo": { "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-09T20:06:30+00:00", - "threeDSReqPriorRef": "3b632ce4-26ea-407d-a2a0-4a7b27c91c14" + "threeDSReqPriorAuthTimestamp": "2024-09-10T20:33:55+00:00", + "threeDSReqPriorRef": "68ea3861-fa27-429b-8633-ff3f6a288f71" }, "acctNumber": "4931119220729333", "cardExpiryDate": "2902", - "purchaseAmount": "1.00", + "purchaseAmount": "130", "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", "reference": "Febrero 2024", - "billAddrCity": "Medellín", - "billAddrCountry": "COL", - "billAddrLine1": "Carrera 65 # 45 - 20", - "billAddrPostCode": "050004", - "billAddrState": "ANT", - "email": "john.doe@evertecinc.com", - "mobilePhone": { - "cc": "57", - "subscriber": "30011122333" - }, "messageVersion": "2.2.0" } -``` - -**deviceChannel:** 03 indica que el canal es 3RI - -**threeRIInd:** 01 indica que la transacción es recurrente - -**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo - -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa **primera autenticación**, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo - -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +``` -**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes +**deviceChannel:** 02 - Navegador -* billAddrCity -* billAddrCountry -* billAddrLine1 -* billAddrPostCode -* billAddrState -* email -* mobilePhone +**threeDSAuthenticationInd:** 01 indica que la transacción es de pago +**threeDSChallengeInd:** 04: el desafío es obligatorio ***Response Lookup*** + ```json { "action": "continue", "messageType": "ARes", - "threeDSServerTransID": "0e0ee43c-9601-4e29-9c8d-32b893ded4db", + "threeDSServerTransID": "2f9f285a-f876-4744-adaa-9c1cedf97271", "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", - "acsTransID": "ab8b1aec-2cf9-4d60-a45f-8d499894dae5", + "acsTransID": "14f3123b-d769-4a14-afea-d6bd5719d332", "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "072b329b-ca7f-47ff-a6b0-ff5a3d6321cb", + "dsTransID": "f1ca5639-b587-4cd1-894e-fa14b97b9fdf", "messageVersion": "2.2.0", "acsOperatorID": "10078025", - "authenticationValue": "BpkCBIU4VgAAAABkhAJTdYknEmE=", + "authenticationValue": "AJkCAWCXJgAAADLIhAJUdYknEmE=", "eci": "05", - "messageExtension": [ - { - "name": "DAF Extension", - "id": "A000000003-003", - "criticalityIndicator": false, - "data": { - "chAccReqID": "MUHZx0nojuVVAZJwPD4CWps0RuxUPxepI8sk57Yd/s4=", - "authPayProcessReqInd": "01", - "version": "1.0", - "authPayCredStatus": "Y", - "dafAdvice": "01" - } - } - ], "transStatus": "Y", "whiteListStatusSource": "03", "whiteListStatus": "Y", "deviceChannel": "03", "messageCategory": "PA", "authMethod": "01", - "authTimestamp": "2024-09-09T20:52:36+00:00", - "transactionID": 248013 + "authTimestamp": "2024-09-10T20:38:23+00:00", + "transactionID": 248129 } ``` @@ -1203,25 +1520,49 @@ Datos requeridos en la petición API --- -## Pagos a Plazos -Una transacción a plazos es aquella en la que el monto total de la compra se divide en pagos periódicos más pequeños a lo largo de un período de tiempo determinado. Estos pagos pueden incluir intereses u otras tarifas asociadas con la financiación de la compra. +## Envío retrasado -A diferencia de una transacción recurrente, en una transacción a plazos, el titular de la tarjeta realiza una única compra que se divide en varios pagos, en lugar de autorizar múltiples cargos separados. Cada pago puede requerir una autorización individual, pero el titular de la tarjeta no necesita autorizar los pagos futuros al realizar la compra inicial. Adicionalmente, la compra a plazos tiene límite en cantidad de autorizaciones ***purchaseInstalData*** y ***recurringExpiry*** y los montos son acumulados, la recurrencia tiene límite la fecha recurringExpiry y el monto es siempre el mismo, o al menos ese es el máximo +Permite a los comerciantes mantener la protección de responsabilidad más allá de los 90 días después de una autenticación inicial. +Los comerciantes pueden utilizar esta funcionalidad cuando, por ejemplo, un envío/servicio se retrasa más de 90 días. +Si la solicitud 3RI tiene éxito, se generará un nuevo CAVV para el comerciante, otorgando otros 90 días de protección de responsabilidad. + +Cuando los comerciantes soliciten un nuevo CAVV a través de una autenticación de 3RI, deben hacerlo dentro de los 90 +días posteriores a la fecha de la autenticación inicial. Los comerciantes solo deben enviar este tipo de solicitudes si necesitan protección +de responsabilidad más allá de los 90 días desde la autenticación inicial. Deberían retrasar la solicitud de un nuevo CAVV tanto como sea posible +dentro del período de 90 días. Si el CAVV inicial ha expirado, aunque ya no proporciona protección de responsabilidad, los emisores deben considerar +que aún puede ser utilizado por el comerciante como prueba de que se realizó la autenticación. + +***Datos a considerar al procesar envíos divididos:*** + +* El nombre del solicitante 3DS **threeDSRequestorName** y el nombre del comerciante **merchantName** deben ser los mismos en la solicitud de autenticación inicial y en cada una de las solicitudes 3RI asociadas +* El valor total de todas las solicitudes 3RI no debe sumar un monto mayor que el monto de la solicitud de autenticación inicial y del total de los montos ya autorizados `POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions -***Casos de uso:*** -* **Compras a plazos en línea:** Por ejemplo, comprar un artículo como una computadora y dividir el pago en cuotas mensuales. -* **Financiación de productos o servicios:** Como la compra de muebles para el hogar, equipos electrónicos, o servicios médicos que ofrecen opciones de financiación a plazos. -* **Planes de pago de vacaciones:** Agencias de viajes que ofrecen la opción de pagar las vacaciones en varios pagos antes de la fecha del viaje +***Casos de Uso:*** -***Para VISA está disponible el flujo de pagos a plazo a través del DAF*** +* **Preventa de productos:** un cliente compra un producto en preventa, como un libro o un dispositivo electrónico que aún no está disponible. La tarjeta se carga cuando se realiza la compra, pero el producto se enviará semanas o meses después cuando esté disponible. +* **Productos fuera de stock:** un cliente compra un producto que no está en stock en ese momento, pero que será enviado una vez que esté disponible. La tarjeta se carga al hacer el pedido, y el producto se envía cuando el inventario se repone. +* **Pedidos con envíos programados:** un cliente compra varios productos, pero solicita que el envío se realice en una fecha futura específica. El pago se procesa de inmediato, pero el envío se retrasa hasta la fecha solicitada. + + +| Evento | Valor | Descripción | +|-------------------------------------------------------------|-------|-----------------------------------------------------------------------------------------------------------------------------------------------------------| +| Autenticación inicial | $112 | Autenticación inicial por el importe total del pedido. | +| Autorización Inicial del primer bien/servicio. | $0 | Realice la autorización $0 para configurar el MIT futuro utilizando el CAVV de la autenticación inicial anterior. | +| Solicitud 3RI de un bien o servicio retrasado. | $112 | Envíe una solicitud 3RI por el valor del bien o servicio retrasado. (p. ej., el día 85 después de la autenticación inicial) | +| Autorización como reautorización MIT para el bien/servicio. | $112 | Realice la autorización para el bien o servicio utilizando el CAVV de la solicitud 3RI anterior. (p. ej., el día 120 después de la autenticación inicial) | + +****Para Visa está disponible el flujo de envío dividido a través del DAF**** **Primera Autenticación** -Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación EMV 3DS donde el titular de la tarjeta esté disponible para autenticarse. +Autenticación inicial por el importe total de la orden. + +Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación EMV 3DS donde el titular de la tarjeta esté disponible para autenticarse por el valor total del pedido. Esta autenticación inicial puede utilizarse para la autorización asociada a la primera entrega de los bienes/servicios. + ### MASTERCARD @@ -1230,15 +1571,12 @@ Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación E ```json { "deviceChannel": "02", - "threeDSAuthenticationInd": "03", + "threeDSAuthenticationInd": "01", "threeDSChallengeInd": "04", - "recurringExpiry": "20250101", - "recurringFrequency": "2", - "purchaseInstalData": "2", "acctNumber": "5107000000010018", "cardExpiryDate": "2902", "redirectURI": "https://www.placetopay.com/web", - "purchaseAmount": "1000", + "purchaseAmount": "112", "purchaseCurrency": "USD", "reference": "Enero 2024", "messageVersion": "2.2.0" @@ -1247,29 +1585,23 @@ Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación E **deviceChannel:** 02 - Navegador -**threeDSAuthenticationInd:** 03 indica que la transacción es a plazos +**threeDSAuthenticationInd:** 01 indica que la transacción es de pago **threeDSChallengeInd:** 04: el desafío es obligatorio -**recurringExpiry:** fecha final de la suscripción - -**recurringFrequency:** indica el número de días entre autorizaciones - -**purchaseInstalData:** Indica el número máximo de autorizaciones permitidas para pagos fraccionados. - ***Response Lookup*** ```json { "action": "redirect", - "sessionToken": "d6aa0439b5f0e29e6a9413321962cf962593130717098cbcde322b6bb50808fb", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86048/d6aa0439b5f0e29e6a9413321962cf962593130717098cbcde322b6bb50808fb", - "transactionID": 248014 + "sessionToken": "c793365493edc34b17a7097ea8a33fdb5853d8e0da62d39ca9e49e6c021a641f", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86167/c793365493edc34b17a7097ea8a33fdb5853d8e0da62d39ca9e49e6c021a641f", + "transactionID": 248133 } ``` -**Actión:** redirect indica que LA API retornara un redirectURL que deberá ser consumido para continuar con el flujo +**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo ### VISA @@ -1279,69 +1611,42 @@ Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación E ```json { "deviceChannel": "02", - "threeDSAuthenticationInd": "03", + "threeDSAuthenticationInd": "01", "threeDSChallengeInd": "04", - "recurringExpiry": "20260101", - "recurringFrequency": "2", - "purchaseInstalData": "2", "acctNumber": "4931119220729333", "cardExpiryDate": "2902", - "purchaseAmount": "1000", + "purchaseAmount": "112", "redirectURI": "https://www.placetopay.com/web", - "purchaseCurrency": "USD", - "reference": "Enero 2024", - "billAddrCity": "Medellín", - "billAddrCountry": "COL", - "billAddrLine1": "Carrera 65 # 45 - 20", - "billAddrPostCode": "050004", - "billAddrState": "ANT", - "email": "john.doe@evertecinc.com", - "mobilePhone": { - "cc": "57", - "subscriber": "30011122333" - }, + "purchaseCurrency": "USD", + "reference": "Enero 2024", "messageVersion": "2.2.0" } ``` **deviceChannel:** 02 - Navegador -**threeDSAuthenticationInd:** 03 indica que la transacción es a plazos +**threeDSAuthenticationInd:** 01 indica que la transacción es de pago **threeDSChallengeInd:** 04: el desafío es obligatorio -**recurringExpiry:** fecha final de la suscripción - -**recurringFrequency:** indica el número de días entre autorizaciones - -**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes - -* billAddrCity -* billAddrCountry -* billAddrLine1 -* billAddrPostCode -* billAddrState -* email -* mobilePhone - ***Response Lookup*** ```json { "action": "redirect", - "sessionToken": "96c03fe78346d11024057dfccbc8eed58b736de36631c8ff25e5c154386ade1f", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86104/96c03fe78346d11024057dfccbc8eed58b736de36631c8ff25e5c154386ade1f", - "transactionID": 248070 + "sessionToken": "3dcdb5b0d1403b0b1e14348037a3c74f202bf18d73233597a07a38963721b18e", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86170/3dcdb5b0d1403b0b1e14348037a3c74f202bf18d73233597a07a38963721b18e", + "transactionID": 248136 } ``` **Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo -**Autenticaciones posteriores** +**Solicitud 3RI de un bien/servicio retrasado.** -Envíe una solicitud 3RI por el valor del pago a plazos +Envíe una solicitud 3RI por el valor del segundo bien/servicio ### MASTERCARD @@ -1350,18 +1655,15 @@ Envíe una solicitud 3RI por el valor del pago a plazos ```json { "deviceChannel": "03", - "threeRIInd": "02", - "recurringExpiry": "20250101", - "recurringFrequency": "2", - "purchaseInstalData": "2", + "threeRIInd": "06", "threeDSRequestorPriorAuthenticationInfo": { "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T16:12:47+00:00", - "threeDSReqPriorRef": "51bbcd10-0c31-4efc-ad49-ba9bdea2f413" + "threeDSReqPriorAuthTimestamp": "2024-09-10T21:06:02+00:00", + "threeDSReqPriorRef": "2dd8d5d0-8563-4ae5-aa9e-23d31fa6fb85" }, "acctNumber": "5107000000010018", "cardExpiryDate": "2902", - "purchaseAmount": "500", + "purchaseAmount": "112", "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", "reference": "Febrero 2024", @@ -1371,7 +1673,7 @@ Envíe una solicitud 3RI por el valor del pago a plazos **deviceChannel:** 03 indica que el canal es 3RI -**threeRIInd:** 02 indica que la transacción es a plazos +**threeRIInd:** 06 indica que la transacción es un envío dividido o retrasado **threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo @@ -1388,14 +1690,14 @@ Envíe una solicitud 3RI por el valor del pago a plazos { "action": "continue", "messageType": "ARes", - "threeDSServerTransID": "f5e8b9c4-5cfd-461d-9115-e51fe7d5c42a", + "threeDSServerTransID": "f91b89a9-7924-48de-97ab-8cc58bc5fcc2", "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", - "acsTransID": "98d5739a-c623-4512-9f87-a48368848d44", + "acsTransID": "cc3b5ff3-9dd7-44ae-bfa0-472de466f449", "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "def67c44-653a-4879-b500-935d8429b4a4", + "dsTransID": "a730d64c-ddb1-4f99-8f2c-4591d00021e3", "messageVersion": "2.2.0", "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", - "authenticationValue": "xgRKM8pzAAAAAAAAAAAAAAAAAAA=", + "authenticationValue": "xgQkuJ5tAAAAAAAAAAAAAAAAAAA=", "eci": "07", "transStatus": "Y", "whiteListStatusSource": "03", @@ -1403,8 +1705,8 @@ Envíe una solicitud 3RI por el valor del pago a plazos "deviceChannel": "03", "messageCategory": "PA", "authMethod": "01", - "authTimestamp": "2024-09-10T16:16:19+00:00", - "transactionID": 248067 + "authTimestamp": "2024-09-10T21:07:09+00:00", + "transactionID": 248135 } ``` @@ -1412,59 +1714,30 @@ Envíe una solicitud 3RI por el valor del pago a plazos ### VISA -***Para Visa está disponible el flujo de pago dividido a través del DAF a partir de Abríl de 2024. Consultar para más detalle sobre VISA DAF*** - -**Prerrequisitos:** - -1. El identificador de comercio de **Visa Merchant ID VMID** deberá estar disponible en la subscripción. -2. El rango de tarjetas debe soportar el procesamiento con DAF - -Datos requeridos en la petición API - -**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes - -* billAddrCity -* billAddrCountry -* billAddrLine1 -* billAddrPostCode -* billAddrState -* email -* mobilePhone - ***Request Lookup*** ```json { "deviceChannel": "03", - "threeRIInd": "02", + "threeRIInd": "06", "threeDSRequestorPriorAuthenticationInfo": { "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T16:35:31+00:00", - "threeDSReqPriorRef": "f0bb9172-018d-42ae-b2ad-715e274bddef" + "threeDSReqPriorAuthTimestamp": "2024-09-10T21:10:29+00:00", + "threeDSReqPriorRef": "7f7c0594-7e0f-4b13-bd45-6d180c35ffb0" }, "acctNumber": "4931119220729333", "cardExpiryDate": "2902", - "purchaseAmount": "500", + "purchaseAmount": "112", "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", "reference": "Febrero 2024", - "billAddrCity": "Medellín", - "billAddrCountry": "COL", - "billAddrLine1": "Carrera 65 # 45 - 20", - "billAddrPostCode": "050004", - "billAddrState": "ANT", - "email": "john.doe@evertecinc.com", - "mobilePhone": { - "cc": "57", - "subscriber": "30011122333" - }, "messageVersion": "2.2.0" } ``` **deviceChannel:** 03 indica que el canal es 3RI -**threeRIInd:** 02 indica que la transacción es a plazos +**threeRIInd:** 06 indica que la transacción es un envío dividido o retrasado **threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo @@ -1474,102 +1747,68 @@ Datos requeridos en la petición API **threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa **primera autenticación**, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes - -* billAddrCity -* billAddrCountry -* billAddrLine1 -* billAddrPostCode -* billAddrState -* email -* mobilePhone - ***Response Lookup*** ```json -{ + { "action": "continue", "messageType": "ARes", - "threeDSServerTransID": "50709e2a-4dad-4c60-acaa-c5d3e1ede924", + "threeDSServerTransID": "0ec3a36a-3c91-4864-bfc0-730300027805", "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", - "acsTransID": "3cdfa009-4018-4230-a72b-658587a5794c", + "acsTransID": "4483ff06-0f36-45a2-aa13-b7f88564910b", "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "72455b8f-5a57-4716-93fe-b72d3878805b", + "dsTransID": "8360727e-22ff-4c23-bef8-ba2510eaf59b", "messageVersion": "2.2.0", "acsOperatorID": "10078025", - "authenticationValue": "BpkCBSMnAAAAAMNQhAJUdYknEmE=", + "authenticationValue": "AJkCAREXeQAAACvAhAJUdYknEmE=", "eci": "05", - "messageExtension": [ - { - "name": "DAF Extension", - "id": "A000000003-003", - "criticalityIndicator": false, - "data": { - "chAccReqID": "MUHZx0nojuVVAZJwPD4CWps0RuxUPxepI8sk57Yd/s4=", - "authPayProcessReqInd": "01", - "version": "1.0", - "authPayCredStatus": "Y", - "dafAdvice": "01" - } - } - ], "transStatus": "Y", "whiteListStatusSource": "03", "whiteListStatus": "Y", "deviceChannel": "03", "messageCategory": "PA", "authMethod": "01", - "authTimestamp": "2024-09-10T19:45:25+00:00", - "transactionID": 248109 + "authTimestamp": "2024-09-10T21:12:29+00:00", + "transactionID": 248138 } ``` -**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo - +**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo --- +## Otros pagos/comercio entre múltiples partes +**Otros pagos** es la categoría reservada para los escenarios de **comercio entre múltiples partes** que pueden tener lugar cuando varias partes están involucradas en el procesamiento de múltiples autorizaciones asociadas con una única reserva de viaje o cuando varias partes en sectores distintos al de viajes están involucradas en el procesamiento de múltiples autorizaciones asociadas con un único pago desde el punto de vista del titular de la tarjeta. -## Envío dividido - -Este tipo de transacción se utiliza para indicar que la transacción corresponde a un envío dividido ***Split Shipment***. En un escenario de Split Shipment, un pedido o reserva se paga en varias transacciones porque los servicios o productos se proporcionan en momentos diferentes. Aunque el pedido inicial es único, la entrega de sus componentes se divide, y cada parte puede ser cobrada cuando esté lista o confirmada. - -Los Envíos divididos permiten a los comerciantes solicitar un nuevo CAVV para obtener protección de responsabilidad en autorizaciones posteriores que puedan ser necesarias debido a múltiples autorizaciones relacionadas con un solo pedido. Este tipo de solicitudes pueden ser realizadas por cualquier comerciante que deba procesar varias autorizaciones asociadas a una única autenticación. - -***Datos a considerar al procesar envíos divididos:*** - -* El nombre del solicitante 3DS **threeDSRequestorName** y el nombre del comerciante **merchantName** deben ser los mismos en la solicitud de autenticación inicial y en cada una de las solicitudes 3RI asociadas. -* El valor total de todas las solicitudes 3RI no debe superar la suma del monto de la solicitud inicial de autenticación y del total de los montos ya autorizados. Los emisores deben realizar un seguimiento del valor total utilizando los datos de transacción tanto de la autorización directa como de la autenticación **EMV 3DS** +En la solicitud de autenticación inicial y las solicitudes 3RI asociadas, los agentes de reservas/proveedores de servicios comerciales también deben usar las convenciones de nomenclatura y los identificadores apropiados para el caso de uso para el que están autenticando: -`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions +* Autenticación solo en nombre de un solo comerciante +* Autenticación en nombre de varios comerciantes +* Autenticarse a sí mismos y en nombre de otro comerciante -***Casos de Uso:*** +De manera similar a los envíos divididos, los emisores deben realizar un seguimiento del valor total utilizando los datos de transacción tanto de autorización como de autenticación. Esto es necesario ya que el agente de reservas/proveedor de servicios del comerciante no puede realizar una solicitud 3RI para todas las partes involucradas en la transacción y, como tal, el emisor no puede asumir que la suma de todas las solicitudes 3RI será igual al total del monto de autenticación inicial, pero los montos 3RI no deben exceder el monto autenticado original. -* **Pedidos con múltiples artículos:** un cliente realiza un pedido de varios productos que no están todos disponibles en el almacén al mismo tiempo. -Por lo tanto, el comerciante decide enviar los artículos en varias entregas, dependiendo de la disponibilidad. +Agente de reservas que realiza la autenticación en nombre de un único comerciante +El titular de una tarjeta ha reservado un artículo en el sitio web de un agente de viajes, por ejemplo, un vuelo +por valor de $395, que se debe pagar al vendedor (es decir, la aerolínea, que será el comerciante en el +sistema de autorización) o cobrar por él en el momento de la reserva, pero el agente de viajes se encarga de la autenticación. -| Evento | Valor | Descripción | -|---------------------------------------------------------------------------------|-------|------------------------------------------------------------------------------------------------------------------------| -| Autenticación inicial | $167 | Autenticación inicial por el importe total del pedido. | -| Autorización Inicial del primer bien/servicio. | $25 | Se realiza la autorización para el primer bien/servicio utilizando CAVV a partir de la autenticación inicial anterior. | -| 3RI Solicitud de segundo bien/servicio. | $12 | Envíe una solicitud 3RI por el valor del segundo bien/servicio. | -| Autorización como reautorización MIT para un segundo bien/servicio. | $12 | Se realiza la autorización del segundo bien/servicio utilizando el CAVV de la solicitud 3RI anterior. | -| 3RI Solicitud de tercer y último bien/servicio. | $130 | Enviar una solicitud 3RI por el valor del tercer y último bien/servicio. | -| Autorización como reautorización del MIT para el tercer y último bien/servicio. | $130 | Realizar la autorización del tercer y último bien/servicio utilizando el CAVV de la solicitud 3RI anterior. | +| **Evento** | **Parte** | **Valor** | **Descripción** | +|--------------------------------------------------------|-------------------------|-----------|-----------------------------------------------------------------------------------------------------------------------------------------------------| +| Autenticación inicial por parte del agente de reservas | Agente de reservas | $395 | Autenticación inicial por el importe total del pedido por parte del agente de reservas | +| Autorización para bienes/servicios | Comerciante de viajes 1 | $395 | El agente de reservas proporciona el CAVV de la autenticación inicial al vendedor, lo que le permite realizar una autorización por el importe total | -****Para Visa está disponible el flujo de envío dividido a través del DAF**** -**Primera Autenticación** -***Autenticación inicial por el importe total de la orden.*** +**Autenticación inicial por parte del agente de reservas** -Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación EMV 3DS donde el titular de la tarjeta esté disponible para autenticarse por el valor total del pedido. Esta autenticación inicial puede utilizarse para la autorización asociada a la primera entrega de los bienes/servicios. +Autenticación inicial por el importe total del pedido por parte del agente de reservas ### MASTERCARD @@ -1578,16 +1817,17 @@ Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación E ```json { "deviceChannel": "02", - "threeDSAuthenticationInd": "01", + "threeDSAuthenticationInd": "85", "threeDSChallengeInd": "04", "acctNumber": "5107000000010018", "cardExpiryDate": "2902", "redirectURI": "https://www.placetopay.com/web", - "purchaseAmount": "167", + "purchaseAmount": "395", "purchaseCurrency": "USD", "reference": "Enero 2024", "messageVersion": "2.2.0" } + ``` **deviceChannel:** 02 - Navegador @@ -1599,18 +1839,18 @@ Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación E ***Response Lookup*** - ```json { "action": "redirect", - "sessionToken": "dc6c2a30c763d7ce640dcf0a98b5d172e3f86c62c3dea3ea1175469d0e6befae", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86152/dc6c2a30c763d7ce640dcf0a98b5d172e3f86c62c3dea3ea1175469d0e6befae", - "transactionID": 248118 + "sessionToken": "cf980dc8f7bc550243c9aa49e36902474b36dfcddd0d5671f78a924311c8bdc0", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86177/cf980dc8f7bc550243c9aa49e36902474b36dfcddd0d5671f78a924311c8bdc0", + "transactionID": 248143 } ``` **Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo + ### VISA ***Request Lookup*** @@ -1622,8 +1862,8 @@ Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación E "threeDSChallengeInd": "04", "acctNumber": "4931119220729333", "cardExpiryDate": "2902", - "purchaseAmount": "167", "redirectURI": "https://www.placetopay.com/web", + "purchaseAmount": "395", "purchaseCurrency": "USD", "reference": "Enero 2024", "messageVersion": "2.2.0" @@ -1636,22 +1876,46 @@ Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación E **threeDSChallengeInd:** 04: el desafío es obligatorio + ***Response Lookup*** ```json { "action": "redirect", - "sessionToken": "1e7c2e6f2516a07020f30f8e5ef63bca7de42e16ac9498b61f2a8efd5ba52968", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86160/1e7c2e6f2516a07020f30f8e5ef63bca7de42e16ac9498b61f2a8efd5ba52968", - "transactionID": 248126 + "sessionToken": "c7bf55043c2d0403e87eaff8895951f70067e48a12a3d46203fd82df3da0a7c1", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86180/c7bf55043c2d0403e87eaff8895951f70067e48a12a3d46203fd82df3da0a7c1", + "transactionID": 248146 } ``` + **Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo -**3RI Solicitud de segundo bien/servicio.** -Envíe una solicitud 3RI por el valor del segundo bien/servicio. + + +### Agente de reservas que realiza la autenticación en nombre de varios comerciantes + +Un titular de tarjeta ha reservado en un sitio web de viajes **agente de reservas** tres artículos pagaderos a cada proveedor de viajes individual **comerciante 1, 2 y 3 en el sistema de autorización**. El sitio web de viajes no está recaudando fondos, sino que realiza la autenticación en nombre de los 3 proveedores de viajes: + +* Un vuelo por $170 pagadero a la aerolínea **proveedor/comerciante 1** en el momento de la reserva +* Un hotel para el cual no se debe realizar un depósito en el momento de la reserva (el hotel **proveedor/comerciante 2 toma los datos de la tarjeta en caso de que se requiera un pago por no presentarse** +* Un alquiler de automóvil para el cual se debe realizar un depósito de $50 a la compañía de alquiler **vendedor/comerciante 3** en el momento de la reserva + + +| **Evento** | **Parte** | **Valor** | **Descripción** | +|------------------------------------------------------------|---------------------------------|-----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Autenticación inicial por parte del agente de reservas | Agente de reservas | $220 | Autenticación inicial por parte del agente de reservas por el monto adeudado por el pedido | +| El agente de reservas realiza tres transacciones 3RI | Agente de reservas | $220 | El agente de reservas realiza tres transacciones 3RI para obtener tres CAVV independientes: Aerolínea $170, Hotel $0, Alquiler de automóvil $50 | +| Autorización para bienes/servicios (Vuelo) | Comerciante de viajes 1 | $170 | El comerciante de la aerolínea utiliza el CAVV de la transacción 3RI con un valor de 170 (y su nombre en el CAVV) para realizar la autorización del boleto de avión. | +| Autorización para bienes/servicios (Alojamiento) | Comerciante de viajes 2 (hotel) | $0 | El comerciante de alojamiento utiliza el CAVV de la transacción 3RI con un valor de 0 (y su nombre en el CAVV) para realizar la autorización para configurar un MIT. | +| Autorización para bienes/servicios (Alquiler de automóvil) | Comerciante de viajes 3 | $50 | El comerciante de alquiler de automóviles utiliza el CAVV de la transacción 3RI con un valor de 50 (y su nombre en el CAVV) para realizar la autorización del depósito. | + + + +**Autenticación inicial por parte del agente de reservas** + +Autenticación inicial por parte del agente de reservas por el monto adeudado por el pedido. ### MASTERCARD @@ -1659,63 +1923,37 @@ Envíe una solicitud 3RI por el valor del segundo bien/servicio. ```json { - "deviceChannel": "03", - "threeRIInd": "06", - "threeDSRequestorPriorAuthenticationInfo": { - "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-08-14T16:16:01+00:00", - "threeDSReqPriorRef": "bd8571cb-f4f3-4ec6-ac23-d7ec11038c1c" - }, - "acctNumber": "5107000000010018", - "cardExpiryDate": "2902", - "purchaseAmount": "12", - "redirectURI": "https://www.placetopay.com/web", - "purchaseCurrency": "USD", - "reference": "Febrero 2024", - "messageVersion": "2.2.0" + "deviceChannel": "02", + "threeDSAuthenticationInd": "85", + "threeDSChallengeInd": "04", + "acctNumber": "5107000000010018", + "cardExpiryDate": "2806", + "purchaseAmount": "220", + "redirectURI": "https://www.placetopay.com/web", + "purchaseCurrency": "USD", + "messageVersion": "2.2.0" } ``` -**deviceChannel:** 03 indica que el canal es 3RI - -**threeRIInd:** 06 indica que la transacción es un envío dividido o retrasado - -**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo - -**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**deviceChannel:** 02 - Navegador -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSAuthenticationInd:** 85 indica que la transacción es de otros pagos -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSChallengeInd: 04:** el desafío es obligatorio ***Response Lookup*** - ```json { - "action": "continue", - "messageType": "ARes", - "threeDSServerTransID": "4159591c-bb88-4321-a295-0e6397377d3b", - "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", - "acsTransID": "b4ec2f82-106b-469b-897d-f2aa37bbf25f", - "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "dc477252-ff8d-433d-b44a-4f8edbb0cae8", - "messageVersion": "2.2.0", - "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", - "authenticationValue": "xgTkbC8MAAAAAAAAAAAAAAAAAAA=", - "eci": "07", - "transStatus": "Y", - "whiteListStatusSource": "03", - "whiteListStatus": "Y", - "deviceChannel": "03", - "messageCategory": "PA", - "authMethod": "01", - "authTimestamp": "2024-09-10T20:19:30+00:00", - "transactionID": 248121 + "action": "redirect", + "sessionToken": "a52df573f6a0a8071714958671d018030c90fc1e6cdc00ac4b7b50a35403da53", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86184/a52df573f6a0a8071714958671d018030c90fc1e6cdc00ac4b7b50a35403da53", + "transactionID": 248150 } ``` -**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo +**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo + ### VISA @@ -1723,67 +1961,44 @@ Envíe una solicitud 3RI por el valor del segundo bien/servicio. ```json { - "deviceChannel": "03", - "threeRIInd": "06", - "threeDSRequestorPriorAuthenticationInfo": { - "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T20:33:55+00:00", - "threeDSReqPriorRef": "68ea3861-fa27-429b-8633-ff3f6a288f71" - }, + "deviceChannel": "02", + "threeDSAuthenticationInd": "01", + "threeDSChallengeInd": "04", + "recurringExpiry": "20260101", + "recurringFrequency": "2", "acctNumber": "4931119220729333", "cardExpiryDate": "2902", - "purchaseAmount": "12", + "purchaseAmount": "220", "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", - "reference": "Febrero 2024", + "reference": "Enero 2024", "messageVersion": "2.2.0" } -``` -**deviceChannel:** 03 indica que el canal es 3RI - -**threeRIInd:** 06 indica que la transacción es un envío dividido o retrasado - -**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +``` -**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**deviceChannel:** 02 - Navegador -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSAuthenticationInd:** 01 indica que la transacción es de pago -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSChallengeInd:** 04 el desafío es obligatorio ***Response Lookup*** - ```json { - "action": "continue", - "messageType": "ARes", - "threeDSServerTransID": "87b8930d-8523-4083-8780-67adf3aeca96", - "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", - "acsTransID": "b02b97b8-6748-4ecb-9f42-441b7d83d9cd", - "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "26281147-cee2-4683-a538-c70fad690a08", - "messageVersion": "2.2.0", - "acsOperatorID": "10078025", - "authenticationValue": "AJkCBxaRcQAAAASwhAJUdYknEmE=", - "eci": "05", - "transStatus": "Y", - "whiteListStatusSource": "03", - "whiteListStatus": "Y", - "deviceChannel": "03", - "messageCategory": "PA", - "authMethod": "01", - "authTimestamp": "2024-09-10T20:35:17+00:00", - "transactionID": 248127 + "action": "redirect", + "sessionToken": "e672a6977da87394e43b3da848a754f0fc0c3f73153e4adb781fc54db1e80525", + "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86196/e672a6977da87394e43b3da848a754f0fc0c3f73153e4adb781fc54db1e80525", + "transactionID": 248162 } ``` **Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo -**3RI Solicitud de tercer y último bien/servicio** +**Transacciones 3RI aerolínea** -Enviar una solicitud 3RI por el valor del tercer y último bien/servicio. +El agente de reservas realiza la transaccion 3RI para obtener el CAVV y proporcionarlo al comerciante de viajes 1 (aerolínea) ### MASTERCARD @@ -1792,49 +2007,49 @@ Enviar una solicitud 3RI por el valor del tercer y último bien/servicio. ```json { "deviceChannel": "03", - "threeRIInd": "06", + "threeRIInd": "85", "threeDSRequestorPriorAuthenticationInfo": { "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T20:16:01+00:00", - "threeDSReqPriorRef": "49c34627-aa6b-41dc-bdc8-e21c0276d9ce" + "threeDSReqPriorAuthTimestamp": "2024-09-10T22:21:27+00:00", + "threeDSReqPriorRef": "c524216d-a19e-4a6b-ae1c-40b82c59fe38" }, "acctNumber": "5107000000010018", "cardExpiryDate": "2902", - "purchaseAmount": "130", + "purchaseAmount": "170", "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", - "reference": "Febrero 2024", + "reference": "Marzo 2024", "messageVersion": "2.2.0" } ``` **deviceChannel:** 03 indica que el canal es 3RI -**threeRIInd:** 06 indica que la transacción es un envío dividido o retrasado +**threeRIInd:** 85 indica que la transacción de tipo otros pagos **threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo **threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa (primera autenticación), consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa (primera autenticación), si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -***Response Lookup*** +***Response Lookup*** ```json { "action": "continue", "messageType": "ARes", - "threeDSServerTransID": "bc925646-c654-4ba2-9e0a-9afaaa5684cc", + "threeDSServerTransID": "1045a464-161f-4538-a769-9a0f84e27a3d", "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", - "acsTransID": "187648b7-ae15-4da6-a5df-f7298db768d9", + "acsTransID": "f31f4da1-7ac1-4be4-b37a-9e28d8e4eb9e", "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "a0a446cd-0767-4fa7-942b-e94571f1f37c", + "dsTransID": "a0dca8a6-5fc5-49f9-96b2-8ee5c9e51508", "messageVersion": "2.2.0", "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", - "authenticationValue": "xgSlHx+5AAAAAAAAAAAAAAAAAAA=", + "authenticationValue": "xgSFPEJIAAAAAAAAAAAAAAAAAAA=", "eci": "07", "transStatus": "Y", "whiteListStatusSource": "03", @@ -1842,60 +2057,54 @@ Enviar una solicitud 3RI por el valor del tercer y último bien/servicio. "deviceChannel": "03", "messageCategory": "PA", "authMethod": "01", - "authTimestamp": "2024-09-10T20:23:36+00:00", - "transactionID": 248122 + "authTimestamp": "2024-09-10T22:34:13+00:00", + "transactionID": 248159 } - ``` - **Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo -### VISA +### VISA ***Request Lookup*** ```json { "deviceChannel": "03", - "threeRIInd": "06", + "threeRIInd": "11", "threeDSRequestorPriorAuthenticationInfo": { "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T20:33:55+00:00", - "threeDSReqPriorRef": "68ea3861-fa27-429b-8633-ff3f6a288f71" + "threeDSReqPriorAuthTimestamp": "2024-09-10T22:44:39+00:00", + "threeDSReqPriorRef": "9e4c13a7-0813-4402-9c53-687a01303f78" }, "acctNumber": "4931119220729333", "cardExpiryDate": "2902", - "purchaseAmount": "130", + "purchaseAmount": "170", "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", "reference": "Febrero 2024", "messageVersion": "2.2.0" } - ``` -**deviceChannel:** 02 - Navegador - -**threeDSAuthenticationInd:** 01 indica que la transacción es de pago +**deviceChannel:** 03 indica que el canal es 3RI -**threeDSChallengeInd:** 04: el desafío es obligatorio +**threeRIInd:** 11 indica que la transacción de tipo otro pago ***Response Lookup*** - ```json -{ + { "action": "continue", "messageType": "ARes", - "threeDSServerTransID": "2f9f285a-f876-4744-adaa-9c1cedf97271", + "threeDSServerTransID": "1a53d143-230f-47b9-b886-a201ee867489", "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", - "acsTransID": "14f3123b-d769-4a14-afea-d6bd5719d332", + "acsTransID": "179f6511-b042-41f3-939d-7f862a527751", "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "f1ca5639-b587-4cd1-894e-fa14b97b9fdf", + "dsTransID": "f5eb0bae-dccf-498e-b639-4abf5e86b162", "messageVersion": "2.2.0", "acsOperatorID": "10078025", - "authenticationValue": "AJkCAWCXJgAAADLIhAJUdYknEmE=", + "authenticationValue": "AJkCAhAyeQAAAEJohAJUdYknEmE=", "eci": "05", "transStatus": "Y", "whiteListStatusSource": "03", @@ -1903,58 +2112,15 @@ Enviar una solicitud 3RI por el valor del tercer y último bien/servicio. "deviceChannel": "03", "messageCategory": "PA", "authMethod": "01", - "authTimestamp": "2024-09-10T20:38:23+00:00", - "transactionID": 248129 + "authTimestamp": "2024-09-10T22:46:32+00:00", + "transactionID": 248164 } ``` **Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo ---- - - -## Envío retrasado - -Permite a los comerciantes mantener la protección de responsabilidad más allá de los 90 días después de una autenticación inicial. -Los comerciantes pueden utilizar esta funcionalidad cuando, por ejemplo, un envío/servicio se retrasa más de 90 días. -Si la solicitud 3RI tiene éxito, se generará un nuevo CAVV para el comerciante, otorgando otros 90 días de protección de responsabilidad. - -Cuando los comerciantes soliciten un nuevo CAVV a través de una autenticación de 3RI, deben hacerlo dentro de los 90 -días posteriores a la fecha de la autenticación inicial. Los comerciantes solo deben enviar este tipo de solicitudes si necesitan protección -de responsabilidad más allá de los 90 días desde la autenticación inicial. Deberían retrasar la solicitud de un nuevo CAVV tanto como sea posible -dentro del período de 90 días. Si el CAVV inicial ha expirado, aunque ya no proporciona protección de responsabilidad, los emisores deben considerar -que aún puede ser utilizado por el comerciante como prueba de que se realizó la autenticación. - -***Datos a considerar al procesar envíos divididos:*** - -* El nombre del solicitante 3DS **threeDSRequestorName** y el nombre del comerciante **merchantName** deben ser los mismos en la solicitud de autenticación inicial y en cada una de las solicitudes 3RI asociadas -* El valor total de todas las solicitudes 3RI no debe sumar un monto mayor que el monto de la solicitud de autenticación inicial y del total de los montos ya autorizados - -`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions - - -***Casos de Uso:*** - -* **Preventa de productos:** un cliente compra un producto en preventa, como un libro o un dispositivo electrónico que aún no está disponible. La tarjeta se carga cuando se realiza la compra, pero el producto se enviará semanas o meses después cuando esté disponible. -* **Productos fuera de stock:** un cliente compra un producto que no está en stock en ese momento, pero que será enviado una vez que esté disponible. La tarjeta se carga al hacer el pedido, y el producto se envía cuando el inventario se repone. -* **Pedidos con envíos programados:** un cliente compra varios productos, pero solicita que el envío se realice en una fecha futura específica. El pago se procesa de inmediato, pero el envío se retrasa hasta la fecha solicitada. - - -| Evento | Valor | Descripción | -|-------------------------------------------------------------|-------|-----------------------------------------------------------------------------------------------------------------------------------------------------------| -| Autenticación inicial | $112 | Autenticación inicial por el importe total del pedido. | -| Autorización Inicial del primer bien/servicio. | $0 | Realice la autorización $0 para configurar el MIT futuro utilizando el CAVV de la autenticación inicial anterior. | -| Solicitud 3RI de un bien o servicio retrasado. | $112 | Envíe una solicitud 3RI por el valor del bien o servicio retrasado. (p. ej., el día 85 después de la autenticación inicial) | -| Autorización como reautorización MIT para el bien/servicio. | $112 | Realice la autorización para el bien o servicio utilizando el CAVV de la solicitud 3RI anterior. (p. ej., el día 120 después de la autenticación inicial) | - -****Para Visa está disponible el flujo de envío dividido a través del DAF**** - -**Primera Autenticación** - -Autenticación inicial por el importe total de la orden. - -Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación EMV 3DS donde el titular de la tarjeta esté disponible para autenticarse por el valor total del pedido. Esta autenticación inicial puede utilizarse para la autorización asociada a la primera entrega de los bienes/servicios. +**Transacciones 3RI hotel** ### MASTERCARD @@ -1962,83 +2128,128 @@ Antes de realizar una solicitud 3RI, debe haberse realizado una autenticación E ```json { - "deviceChannel": "02", - "threeDSAuthenticationInd": "01", - "threeDSChallengeInd": "04", + "deviceChannel": "03", + "threeRIInd": "85", + "threeDSRequestorPriorAuthenticationInfo": { + "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", + "threeDSReqPriorAuthTimestamp": "2024-09-10T22:21:27+00:00", + "threeDSReqPriorRef": "c524216d-a19e-4a6b-ae1c-40b82c59fe38" + }, "acctNumber": "5107000000010018", "cardExpiryDate": "2902", + "purchaseAmount": "0", "redirectURI": "https://www.placetopay.com/web", - "purchaseAmount": "112", "purchaseCurrency": "USD", - "reference": "Enero 2024", + "reference": "Abril 2024", "messageVersion": "2.2.0" } ``` -**deviceChannel:** 02 - Navegador +**deviceChannel:** 03 indica que el canal es 3RI -**threeDSAuthenticationInd:** 01 indica que la transacción es de pago +**threeRIInd:** 85 indica que la transacción de tipo otros pagos -**threeDSChallengeInd:** 04: el desafío es obligatorio +**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -***Response Lookup*** +**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa (primera autenticación), consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa (primera autenticación), si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +***Response Lookup*** ```json { - "action": "redirect", - "sessionToken": "c793365493edc34b17a7097ea8a33fdb5853d8e0da62d39ca9e49e6c021a641f", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86167/c793365493edc34b17a7097ea8a33fdb5853d8e0da62d39ca9e49e6c021a641f", - "transactionID": 248133 + "action": "continue", + "messageType": "ARes", + "threeDSServerTransID": "32c88ea6-7841-4c8b-9067-b84c99b20784", + "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", + "acsTransID": "fa92fe01-84f7-4ae7-a3f1-1dd50f97ebef", + "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", + "dsTransID": "634b8dc1-aa5b-48c3-b367-022156663c81", + "messageVersion": "2.2.0", + "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", + "authenticationValue": "xgRTaR2SAAAAAAAAAAAAAAAAAAA=", + "eci": "07", + "transStatus": "Y", + "whiteListStatusSource": "03", + "whiteListStatus": "Y", + "deviceChannel": "03", + "messageCategory": "PA", + "authMethod": "01", + "authTimestamp": "2024-09-10T22:36:05+00:00", + "transactionID": 248160 } ``` - -**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo - +**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo ### VISA ***Request Lookup*** -```json -{ - "deviceChannel": "02", - "threeDSAuthenticationInd": "01", - "threeDSChallengeInd": "04", +```json +{ + "deviceChannel": "03", + "threeRIInd": "11", + "threeDSRequestorPriorAuthenticationInfo": { + "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", + "threeDSReqPriorAuthTimestamp": "2024-09-10T22:44:39+00:00", + "threeDSReqPriorRef": "9e4c13a7-0813-4402-9c53-687a01303f78" + }, "acctNumber": "4931119220729333", "cardExpiryDate": "2902", - "purchaseAmount": "112", + "purchaseAmount": "0", "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", - "reference": "Enero 2024", + "reference": "Marzo 2024", "messageVersion": "2.2.0" } ``` -**deviceChannel:** 02 - Navegador +**deviceChannel:** 03 indica que el canal es 3RI -**threeDSAuthenticationInd:** 01 indica que la transacción es de pago +**threeRIInd:** 11 indica que la transacción de tipo otros pagos -**threeDSChallengeInd:** 04: el desafío es obligatorio +**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -***Response Lookup*** +**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa (primera autenticación), consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa (primera autenticación), si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +***Response Lookup*** ```json { - "action": "redirect", - "sessionToken": "3dcdb5b0d1403b0b1e14348037a3c74f202bf18d73233597a07a38963721b18e", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86170/3dcdb5b0d1403b0b1e14348037a3c74f202bf18d73233597a07a38963721b18e", - "transactionID": 248136 + "action": "continue", + "messageType": "ARes", + "threeDSServerTransID": "b9913d5d-4980-4103-b77c-5daf0c7054b0", + "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", + "acsTransID": "e9b7726c-6f9a-4606-afe3-09dce49f49a2", + "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", + "dsTransID": "6f9c449a-0ff3-4438-8c47-e3009ded9cd1", + "messageVersion": "2.2.0", + "acsOperatorID": "10078025", + "authenticationValue": "AJkCB4EjdQAAAAAAhAJUdYknEmE=", + "eci": "05", + "transStatus": "Y", + "whiteListStatusSource": "03", + "whiteListStatus": "Y", + "deviceChannel": "03", + "messageCategory": "PA", + "authMethod": "01", + "authTimestamp": "2024-09-10T22:48:07+00:00", + "transactionID": 248165 } ``` -**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo - +**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo -**Solicitud 3RI de un bien/servicio retrasado.** +**Transacciones 3RI alquiler de automóvil** -Envíe una solicitud 3RI por el valor del segundo bien/servicio +El agente de reservas realiza la transacción 3RI para obtener el CAVV y proporcionarlo al comerciante de viajes 3 (alquiler automóvil) ### MASTERCARD @@ -2047,49 +2258,48 @@ Envíe una solicitud 3RI por el valor del segundo bien/servicio ```json { "deviceChannel": "03", - "threeRIInd": "06", + "threeRIInd": "85", "threeDSRequestorPriorAuthenticationInfo": { "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T21:06:02+00:00", - "threeDSReqPriorRef": "2dd8d5d0-8563-4ae5-aa9e-23d31fa6fb85" + "threeDSReqPriorAuthTimestamp": "2024-09-10T22:21:27+00:00", + "threeDSReqPriorRef": "c524216d-a19e-4a6b-ae1c-40b82c59fe38" }, "acctNumber": "5107000000010018", "cardExpiryDate": "2902", - "purchaseAmount": "112", + "purchaseAmount": "50", "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", - "reference": "Febrero 2024", + "reference": "Marzo 2024", "messageVersion": "2.2.0" } ``` **deviceChannel:** 03 indica que el canal es 3RI -**threeRIInd:** 06 indica que la transacción es un envío dividido o retrasado +**threeRIInd:** 85 indica que la transacción de tipo otros pagos **threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo **threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa (primera autenticación), consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa ***primera autenticación***, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa (primera autenticación), si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo ***Response Lookup*** - ```json { "action": "continue", "messageType": "ARes", - "threeDSServerTransID": "f91b89a9-7924-48de-97ab-8cc58bc5fcc2", + "threeDSServerTransID": "c34f67dc-7a25-4977-97f7-ca1f961946be", "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", - "acsTransID": "cc3b5ff3-9dd7-44ae-bfa0-472de466f449", + "acsTransID": "fd189ecf-c65e-4a7d-9640-89662b850038", "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "a730d64c-ddb1-4f99-8f2c-4591d00021e3", + "dsTransID": "4680679e-d6ed-48d2-89d2-b73de0828a57", "messageVersion": "2.2.0", "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", - "authenticationValue": "xgQkuJ5tAAAAAAAAAAAAAAAAAAA=", + "authenticationValue": "xgSELtLrAAAAAAAAAAAAAAAAAAA=", "eci": "07", "transStatus": "Y", "whiteListStatusSource": "03", @@ -2097,13 +2307,14 @@ Envíe una solicitud 3RI por el valor del segundo bien/servicio "deviceChannel": "03", "messageCategory": "PA", "authMethod": "01", - "authTimestamp": "2024-09-10T21:07:09+00:00", - "transactionID": 248135 + "authTimestamp": "2024-09-10T22:38:11+00:00", + "transactionID": 248161 } ``` **Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo + ### VISA ***Request Lookup*** @@ -2111,49 +2322,48 @@ Envíe una solicitud 3RI por el valor del segundo bien/servicio ```json { "deviceChannel": "03", - "threeRIInd": "06", + "threeRIInd": "11", "threeDSRequestorPriorAuthenticationInfo": { "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T21:10:29+00:00", - "threeDSReqPriorRef": "7f7c0594-7e0f-4b13-bd45-6d180c35ffb0" + "threeDSReqPriorAuthTimestamp": "2024-09-10T22:44:39+00:00", + "threeDSReqPriorRef": "9e4c13a7-0813-4402-9c53-687a01303f78" }, "acctNumber": "4931119220729333", "cardExpiryDate": "2902", - "purchaseAmount": "112", + "purchaseAmount": "50", "redirectURI": "https://www.placetopay.com/web", "purchaseCurrency": "USD", - "reference": "Febrero 2024", + "reference": "Mayo 2024", "messageVersion": "2.2.0" } ``` -**deviceChannel:** 03 indica que el canal es 3RI +***deviceChannel:*** 03 indica que el canal es 3RI -**threeRIInd:** 06 indica que la transacción es un envío dividido o retrasado +***threeRIInd:*** 11 indica que la transacción de tipo otros pagos -**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +***threeDSReqPriorAuthMethod:*** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +***threeDSReqPriorAuthTimestamp:*** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +***threeDSReqPriorRef:*** El ID otorgado por el ACS en la transacción previa (primera autenticación), consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa **primera autenticación**, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +***threeDSReqPriorAuthData:*** El ID otorgado por el DS en la transacción previa (primera autenticación), si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo ***Response Lookup*** - ```json { "action": "continue", "messageType": "ARes", - "threeDSServerTransID": "0ec3a36a-3c91-4864-bfc0-730300027805", + "threeDSServerTransID": "7a64778d-45de-48ae-8c78-ec688775315d", "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", - "acsTransID": "4483ff06-0f36-45a2-aa13-b7f88564910b", + "acsTransID": "d4b3bbae-5594-4c89-9cf8-ae2ac3499223", "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "8360727e-22ff-4c23-bef8-ba2510eaf59b", + "dsTransID": "5c4c3ec0-d31b-442d-81e8-86025c08cb9d", "messageVersion": "2.2.0", "acsOperatorID": "10078025", - "authenticationValue": "AJkCAREXeQAAACvAhAJUdYknEmE=", + "authenticationValue": "AJkCByOJNAAAABOIhAJUdYknEmE=", "eci": "05", "transStatus": "Y", "whiteListStatusSource": "03", @@ -2161,846 +2371,844 @@ Envíe una solicitud 3RI por el valor del segundo bien/servicio "deviceChannel": "03", "messageCategory": "PA", "authMethod": "01", - "authTimestamp": "2024-09-10T21:12:29+00:00", - "transactionID": 248138 + "authTimestamp": "2024-09-10T22:49:54+00:00", + "transactionID": 248166 } ``` -**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo +**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo + --- -## Otros pagos/comercio entre múltiples partes -**Otros pagos** es la categoría reservada para los escenarios de **comercio entre múltiples partes** que pueden tener lugar cuando varias partes están involucradas en el procesamiento de múltiples autorizaciones asociadas con una única reserva de viaje o cuando varias partes en sectores distintos al de viajes están involucradas en el procesamiento de múltiples autorizaciones asociadas con un único pago desde el punto de vista del titular de la tarjeta. +## Transacciones con tarjeta registrada no programadas -En la solicitud de autenticación inicial y las solicitudes 3RI asociadas, los agentes de reservas/proveedores de servicios comerciales también deben usar las convenciones de nomenclatura y los identificadores apropiados para el caso de uso para el que están autenticando: +Las transacciones UCOF **Unscheduled card-on-file** se producen cuando un comerciante utiliza la información de la tarjeta almacenada en su sistema para realizar un cargo único y no programado en la tarjeta del cliente. Estas transacciones no están asociadas con pagos recurrentes o a plazos, sino que son transacciones únicas que aprovechan la información de la tarjeta almacenada previamente para facilitar el pago. -* Autenticación solo en nombre de un solo comerciante -* Autenticación en nombre de varios comerciantes -* Autenticarse a sí mismos y en nombre de otro comerciante +* Compras en línea sin intervención del titular de la tarjeta: Por ejemplo, un cliente realiza una compra en un sitio web utilizando la opción de ***guardar tarjeta para futuras compras***. Luego, en una fecha posterior, el comerciante utiliza la información de la tarjeta almacenada para procesar un pago por una compra adicional sin la necesidad de una interacción adicional por parte del cliente. +* Renovaciones automáticas de servicios no periódicos: Algunos servicios no siguen un ciclo de facturación regular, pero aún pueden optar por utilizar la información de la tarjeta almacenada para facilitar el pago de renovaciones automáticas. Por ejemplo, la renovación anual de una suscripción a un software que no se factura mensualmente, pero que utiliza la información de la tarjeta almacenada para procesar automáticamente el pago cuando llega la fecha de renovación. +* Pagos de tarifas o cargos únicos: Situaciones en las que un cliente necesita realizar un pago único y no programado a un comerciante, como el pago de una factura pendiente, un cargo por servicio adicional, o una compra de último minuto. +***Para Visa está disponible el flujo de pago dividido a través del DAF a partir de Abríl de 2024. Consultar para más detalle sobre VISA DAF*** -De manera similar a los envíos divididos, los emisores deben realizar un seguimiento del valor total utilizando los datos de transacción tanto de autorización como de autenticación. Esto es necesario ya que el agente de reservas/proveedor de servicios del comerciante no puede realizar una solicitud 3RI para todas las partes involucradas en la transacción y, como tal, el emisor no puede asumir que la suma de todas las solicitudes 3RI será igual al total del monto de autenticación inicial, pero los montos 3RI no deben exceder el monto autenticado original. +`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions -Agente de reservas que realiza la autenticación en nombre de un único comerciante -El titular de una tarjeta ha reservado un artículo en el sitio web de un agente de viajes, por ejemplo, un vuelo -por valor de $395, que se debe pagar al vendedor (es decir, la aerolínea, que será el comerciante en el -sistema de autorización) o cobrar por él en el momento de la reserva, pero el agente de viajes se encarga de la autenticación. +**Primera Autenticación - Agregar tarjeta** -| **Evento** | **Parte** | **Valor** | **Descripción** | -|--------------------------------------------------------|-------------------------|-----------|-----------------------------------------------------------------------------------------------------------------------------------------------------| -| Autenticación inicial por parte del agente de reservas | Agente de reservas | $395 | Autenticación inicial por el importe total del pedido por parte del agente de reservas | -| Autorización para bienes/servicios | Comerciante de viajes 1 | $395 | El agente de reservas proporciona el CAVV de la autenticación inicial al vendedor, lo que le permite realizar una autorización por el importe total | +### VISA con DAF +**Opción NPA:** esta opción no require verificar fondos de la cuenta. +***Request Lookup*** -**Autenticación inicial por parte del agente de reservas** +```json +{ + "deviceChannel": "02", + "messageCategory": "02", + "threeDSAuthenticationInd": "04", + "threeDSChallengeInd": "04", + "acctNumber": "4931119220729333", + "cardExpiryDate": "2902", + "redirectURI": "https://www.placetopay.com/web", + "reference": "Enero 2024", + "messageVersion": "2.2.0", + "billAddrCity": "Medellín", + "billAddrCountry": "COL", + "billAddrLine1": "Carrera 65 # 45 - 20", + "billAddrPostCode": "050004", + "billAddrState": "ANT", + "email": "john.doe@evertecinc.com", + "mobilePhone": { + "cc": "57", + "subscriber": "30011122333" + } +} +``` -Autenticación inicial por el importe total del pedido por parte del agente de reservas +**deviceChannel:** 02 - Navegador -### MASTERCARD +**messageCategory:** El valor 02 corresponde a transacción de NPA - No pago + +**threeDSAuthenticationInd**, indica el tipo de autenticación. El valor de 04 corresponde a agregar tarjeta. + +**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes + +* billAddrCity +* billAddrCountry +* billAddrLine1 +* billAddrPostCode +* billAddrState +* email +* mobilePhone + + +***Response Lookup*** + + +```json +{ + "action": "redirect", + "sessionToken": "b8ba7e2e3cb4b7cf8045c8e098bf84e5f77b6b643a1ce19cef9ebe4be8b05473", + "redirectURL": "https://3dss-dev.placetopay.ws/threeds/v2x/sessions/1268/b8ba7e2e3cb4b7cf8045c8e098bf84e5f77b6b643a1ce19cef9ebe4be8b05473", + "transactionID": 1312 +} +``` + +**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo + + +**Autenticaciones posteriores** + + +### VISA con DAF ***Request Lookup*** ```json { - "deviceChannel": "02", - "threeDSAuthenticationInd": "85", - "threeDSChallengeInd": "04", - "acctNumber": "5107000000010018", + "deviceChannel": "03", + "threeRIInd": "81", + "threeDSRequestorPriorAuthenticationInfo": { + "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", + "threeDSReqPriorAuthTimestamp": "2024-05-03T22:48:06+00:00", + "threeDSReqPriorRef": "5d822226-d2ad-4a43-8270-87c95003dad4", + "threeDSReqPriorAuthData": "valid_data" + }, + "acctNumber": "4931119220729333", "cardExpiryDate": "2902", - "redirectURI": "https://www.placetopay.com/web", - "purchaseAmount": "395", + "purchaseAmount": "1.00", "purchaseCurrency": "USD", - "reference": "Enero 2024", + "redirectURI": "https://www.placetopay.com/web", + "reference": "Febrero 2024", + "billAddrCity": "Medellín", + "billAddrCountry": "COL", + "billAddrLine1": "Carrera 65 # 45 - 20", + "billAddrPostCode": "050004", + "billAddrState": "ANT", + "email": "john.doe@evertecinc.com", + "mobilePhone": { + "cc": "57", + "subscriber": "30011122333" + }, "messageVersion": "2.2.0" } - ``` -**deviceChannel:** 02 - Navegador +**deviceChannel:** 03 indica que el canal es 3RI -**threeDSAuthenticationInd:** 01 indica que la transacción es de pago +**threeRIInd:** 81 indica que la transacción con una tarjeta registrada no programada -**threeDSChallengeInd:** 04: el desafío es obligatorio +**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa **primera autenticación**, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo + +**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes + +* billAddrCity +* billAddrCountry +* billAddrLine1 +* billAddrPostCode +* billAddrState +* email +* mobilePhone ***Response Lookup*** + ```json { - "action": "redirect", - "sessionToken": "cf980dc8f7bc550243c9aa49e36902474b36dfcddd0d5671f78a924311c8bdc0", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86177/cf980dc8f7bc550243c9aa49e36902474b36dfcddd0d5671f78a924311c8bdc0", - "transactionID": 248143 + "action": "continue", + "messageType": "ARes", + "threeDSServerTransID": "aec4b66f-f4ce-4bbf-9904-0759efa6ea8e", + "acsReferenceNumber": "PTOPID", + "acsTransID": "f7a98ab1-37d1-4e20-a7db-8f0491fbdd6d", + "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", + "dsTransID": "655fabd4-ee08-4bab-963f-68c79063438f", + "messageVersion": "2.2.0", + "acsOperatorID": "CAS_OPERD_DR", + "authenticationValue": "BpkCBBYBJAAAAABkhAEkdYR0cUU=", + "eci": "05", + "messageExtension": [ + { + "name": "DAF Extension", + "id": "A000000003-003", + "criticalityIndicator": false, + "data": { + "chAccReqID": "PZFPk0jJzA/4p5cWcAufzU0vPnEWCABOuPE4vLp/FNk=", + "authPayProcessReqInd": "01", + "version": "1.0", + "authPayCredStatus": "Y", + "dafAdvice": "01" + } + } + ], + "transStatus": "Y", + "whiteListStatusSource": "03", + "whiteListStatus": "Y", + "deviceChannel": "03", + "messageCategory": "PA", + "authMethod": "FRICTIONLESS_AUTHENTICATION", + "authTimestamp": "2024-05-03T22:49:38+00:00" } ``` -**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo - - -### VISA +**Actión:** continue indica que ls API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo -***Request Lookup*** +--- -```json -{ - "deviceChannel": "02", - "threeDSAuthenticationInd": "01", - "threeDSChallengeInd": "04", - "acctNumber": "4931119220729333", - "cardExpiryDate": "2902", - "redirectURI": "https://www.placetopay.com/web", - "purchaseAmount": "395", - "purchaseCurrency": "USD", - "reference": "Enero 2024", - "messageVersion": "2.2.0" -} -``` -**deviceChannel:** 02 - Navegador +## Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSAuthenticationInd:** 01 indica que la transacción es de pago +Para obtener los datos requeridos se deberá de lanzar la transacción tipo CIT **primera autenticación**, para posterior consultar los datos de dicha transacción y poder enviar la información del threeDSRequestorPriorAuthenticationInfo en la transacción MIT. -**threeDSChallengeInd:** 04: el desafío es obligatorio +***Request Lookup*** +`GET` https://3dss-dev.placetopay.ws/api/v2x/transactions/{transactionID} ***Response Lookup*** ```json { - "action": "redirect", - "sessionToken": "c7bf55043c2d0403e87eaff8895951f70067e48a12a3d46203fd82df3da0a7c1", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86180/c7bf55043c2d0403e87eaff8895951f70067e48a12a3d46203fd82df3da0a7c1", - "transactionID": 248146 + "transStatus": "Y", + "transStatusReason": null, + "eci": "05", + "acsTransID": "5d822226-d2ad-4a43-8270-87c95003dad4", + "dsTransID": "5b3e6516-0a88-41a4-9c20-f97af2003acd", + "threeDSServerTransID": "fbefea2f-2ae6-4a21-94cc-d7e5083f05a6", + "sdkTransID": null, + "authenticationValue": "AAICAImZhwAAAAAAAAEkdYR0cUU=", + "messageVersion": "2.2.0", + "authMethod": "CARDHOLDER_CHALLENGE_OCCURRED", + "authTimestamp": "2024-05-03T22:48:06+00:00", + "enrolled": "Y", + "messageCategory": "NPA" } ``` -**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo +--- +## Otros casos +* Delayed Shipment **threeDSAuthenticationInd 09, threeRIInd 15** aplica par EMV 3DS 2.2 with Bridging Message Extension o par la versión EMV 3DS 2.3.1 +* Split Shipment **threeDSAuthenticationInd 08, threeRIInd 06** aplica par EMV 3DS 2.2 with Bridging Message Extension o par la versión EMV 3DS 2.3.1 +* Split Payment **threeDSAuthenticationInd 10, threeRIInd 16** aplica par EMV 3DS 2.2 with Bridging Message Extension o par la versión EMV 3DS 2.3.1 +--- -### Agente de reservas que realiza la autenticación en nombre de varios comerciantes +## Mejora la tasa de autenticaciones con datos adicionales +Nos complace invitarles a visitar el apartado de [Adicional Data](/three-d-s-server/api/sessions/detail-info) en nuestra documentación del API. Este apartado ofrece información crucial para optimizar el proceso de autenticación 3DS. -Un titular de tarjeta ha reservado en un sitio web de viajes **agente de reservas** tres artículos pagaderos a cada proveedor de viajes individual **comerciante 1, 2 y 3 en el sistema de autorización**. El sitio web de viajes no está recaudando fondos, sino que realiza la autenticación en nombre de los 3 proveedores de viajes: +La inclusión de estos datos adicionales en sus solicitudes permite a los emisores realizar una evaluación más precisa, lo que puede mejorar considerablemente la tasa de autenticaciones exitosas. -* Un vuelo por $170 pagadero a la aerolínea **proveedor/comerciante 1** en el momento de la reserva -* Un hotel para el cual no se debe realizar un depósito en el momento de la reserva (el hotel **proveedor/comerciante 2 toma los datos de la tarjeta en caso de que se requiera un pago por no presentarse** -* Un alquiler de automóvil para el cual se debe realizar un depósito de $50 a la compañía de alquiler **vendedor/comerciante 3** en el momento de la reserva +Les recomendamos revisar estas pautas para aprovechar al máximo las funcionalidades del API y así ofrecer una experiencia más segura y eficiente a sus usuarios. -| **Evento** | **Parte** | **Valor** | **Descripción** | -|------------------------------------------------------------|---------------------------------|-----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Autenticación inicial por parte del agente de reservas | Agente de reservas | $220 | Autenticación inicial por parte del agente de reservas por el monto adeudado por el pedido | -| El agente de reservas realiza tres transacciones 3RI | Agente de reservas | $220 | El agente de reservas realiza tres transacciones 3RI para obtener tres CAVV independientes: Aerolínea $170, Hotel $0, Alquiler de automóvil $50 | -| Autorización para bienes/servicios (Vuelo) | Comerciante de viajes 1 | $170 | El comerciante de la aerolínea utiliza el CAVV de la transacción 3RI con un valor de 170 (y su nombre en el CAVV) para realizar la autorización del boleto de avión. | -| Autorización para bienes/servicios (Alojamiento) | Comerciante de viajes 2 (hotel) | $0 | El comerciante de alojamiento utiliza el CAVV de la transacción 3RI con un valor de 0 (y su nombre en el CAVV) para realizar la autorización para configurar un MIT. | -| Autorización para bienes/servicios (Alquiler de automóvil) | Comerciante de viajes 3 | $50 | El comerciante de alquiler de automóviles utiliza el CAVV de la transacción 3RI con un valor de 50 (y su nombre en el CAVV) para realizar la autorización del depósito. | +--- -**Autenticación inicial por parte del agente de reservas** +## Sesión transacción con Bridging Message Extension (BME) -Autenticación inicial por parte del agente de reservas por el monto adeudado por el pedido. +El 3DS **v2.3** introduce elementos de datos en la extensión del mensaje que pueden duplicar aquellos presentes en las versiones 3DS **v2.1 y v2.2**, pero con valores nuevos o diferentes. De acuerdo con la Especificación Básica **v2.3**, estos valores se establecen en la extensión del mensaje, mientras que en las versiones **v2.1 y v2.2** se encuentran en la parte central de los mensajes 3DS. En estos casos, el valor del elemento de datos en la extensión del mensaje prevalece sobre el valor correspondiente en la parte central del mensaje 3DS. Además, el Servidor 3DS genera el mensaje AReq **v2.1** o **v2.2** bajo la suposición de que el ACS no soporta la Extensión del Mensaje de Puente, y posteriormente, proporciona la información adicional a través de dicha extensión. Si se soporta la Extensión del Mensaje de Puente, el componente 3DS deberá ser compatible al menos con uno de los objetos de datos ***como datos recurrentes, datos de desafío, datos adicionales o datos de URL de archivo*** de la extensión del mensaje e implementar los requisitos correspondientes de la Especificación Básica **v2.3**. -### MASTERCARD +Con el objetivo de mejorar la tasa de aprobación en las autenticaciones, hemos ampliado este requerimiento creando la extensión BMS. Esta extensión facilita el acceso a la información disponible en la versión **2.3.1** del protocolo, que no estaba accesible en versiones anteriores **2.1.0 y 2.2.0**. De este modo, tanto el ACS como el servidor de directorios podrán tomar decisiones más informadas. -***Request Lookup*** +### Especificaciones -```json -{ - "deviceChannel": "02", - "threeDSAuthenticationInd": "85", - "threeDSChallengeInd": "04", - "acctNumber": "5107000000010018", - "cardExpiryDate": "2806", - "purchaseAmount": "220", - "redirectURI": "https://www.placetopay.com/web", - "purchaseCurrency": "USD", - "messageVersion": "2.2.0" -} -``` +| Versión BME | Mastercard | Visa | +|-----------------------------|---------------|---------------| +| Versión 1.0 **habilitada** | **Soportada** | **Soportada** | +| Versión 2.0 | En proceso | En proceso | -**deviceChannel:** 02 - Navegador +**Transacción con BME inicial** -**threeDSAuthenticationInd:** 85 indica que la transacción es de otros pagos +En esta versión, pondremos a disposición en la API de sesión varios elementos que podrá enviar para optimizar el uso de esta extensión. -**threeDSChallengeInd: 04:** el desafío es obligatorio +**cardSecurityCode:** Código de seguridad asociado a las tarjetas de crédito o débito. -***Response Lookup*** +**threeDSRequestorAuthenticationInd:** Indicador de autenticación solicitado por el 3DS. -```json -{ - "action": "redirect", - "sessionToken": "a52df573f6a0a8071714958671d018030c90fc1e6cdc00ac4b7b50a35403da53", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86184/a52df573f6a0a8071714958671d018030c90fc1e6cdc00ac4b7b50a35403da53", - "transactionID": 248150 -} -``` +**threeRIInd:** Indica el tipo de **3RI** pedido. Este elemento de datos proporciona adicional información al ACS para determinar el mejor enfoque para entregar una solicitud 3RI. -**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo +**transChar:** Indica a la ACS transacciones específicas identificadas por el Comerciante. +Ver más detalle en [Reglas a tener en cuenta de la session API](/three-d-s-server/api/sessions/rules) -### VISA +***La Extension solo se creara si es enviada en la session request bridgingMessageExtension*** -***Request Lookup*** + +### Ejemplo de los datos en el request ```json + { - "deviceChannel": "02", - "threeDSAuthenticationInd": "01", - "threeDSChallengeInd": "04", - "recurringExpiry": "20260101", - "recurringFrequency": "2", - "acctNumber": "4931119220729333", - "cardExpiryDate": "2902", - "purchaseAmount": "220", - "redirectURI": "https://www.placetopay.com/web", + "acctNumber": "4005580000000040", + "cardExpiryDate": "2411", + "purchaseAmount": "8.25", + "redirectURI": "https://www.placetopay.com", "purchaseCurrency": "USD", - "reference": "Enero 2024", - "messageVersion": "2.2.0" + "addPriorInformation": "Y", + "threeDSAuthenticationInd": "01", + "messageCategory": "01", + "deviceChannel": "03", + "threeRIInd": "01", + "recurringFrequency": "031", + "recurringExpiry": "20241020", + "bridgingMessageExtension": { + "data": { + "addData": { + "transChar": "CRYPTOCURRENCY_TRANSACTION", + "threeRIInd": "SPLIT_PAYMENT", + "cardSecurityCode": "123", + "threeDSRequestorAuthenticationInd": "SPLIT_PAYMENT" + }, + "recurringData": { + "recurringDate": "20241023", + "recurringInd": { + "frequencyInd": "VARIABLE_FREQUENCY", + "amountInd": "VARIABLE_PURCHASE" + } + } + } + } } -``` - -**deviceChannel:** 02 - Navegador - -**threeDSAuthenticationInd:** 01 indica que la transacción es de pago - -**threeDSChallengeInd:** 04 el desafío es obligatorio - -***Response Lookup*** -```json -{ - "action": "redirect", - "sessionToken": "e672a6977da87394e43b3da848a754f0fc0c3f73153e4adb781fc54db1e80525", - "redirectURL": "https://3dss-test.placetopay.com/threeds/v2x/sessions/86196/e672a6977da87394e43b3da848a754f0fc0c3f73153e4adb781fc54db1e80525", - "transactionID": 248162 -} ``` -**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo - -**Transacciones 3RI aerolínea** - -El agente de reservas realiza la transaccion 3RI para obtener el CAVV y proporcionarlo al comerciante de viajes 1 (aerolínea) - -### MASTERCARD - -***Request Lookup*** +### Ejemplo De la extención creada por 3DSS ```json { - "deviceChannel": "03", - "threeRIInd": "85", - "threeDSRequestorPriorAuthenticationInfo": { - "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T22:21:27+00:00", - "threeDSReqPriorRef": "c524216d-a19e-4a6b-ae1c-40b82c59fe38" - }, - "acctNumber": "5107000000010018", - "cardExpiryDate": "2902", - "purchaseAmount": "170", - "redirectURI": "https://www.placetopay.com/web", - "purchaseCurrency": "USD", - "reference": "Marzo 2024", - "messageVersion": "2.2.0" + { + "id": "A000000802-004", + "data": { + "addData": { + "transChar": "02", + "threeRIInd": "15", + "cardSecurityCode": "123", + "acquirerCountryCode": "170", + "acquirerCountryCodeSource": "01", + "threeDSRequestorAuthenticationInd": "10" + }, + "recurringData": { + "recurringInd": { + "amountInd": "02", + "frequencyInd": "02" + }, + "recurringDate": "20241023", + "recurringAmount": "8.25", + "recurringExpiry": "20241020", + "recurringCurrency": "USD", + "recurringFrequency": "031" + } + }, + "name": "Bridging", + "version": "1.0", + "criticalityIndicator": false + } } -``` - -**deviceChannel:** 03 indica que el canal es 3RI -**threeRIInd:** 85 indica que la transacción de tipo otros pagos +``` -**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa (primera autenticación), consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**Versión 1 (v1):** -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa (primera autenticación), si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +- Atributos Soportados: +**addData:** Esta versión incluye soporte únicamente para el atributo addData, que contiene información adicional sobre la transacción, como el indicador de autenticación y otros datos relevantes. -***Response Lookup*** +- Ejemplo JSON para v1: ```json { - "action": "continue", - "messageType": "ARes", - "threeDSServerTransID": "1045a464-161f-4538-a769-9a0f84e27a3d", - "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", - "acsTransID": "f31f4da1-7ac1-4be4-b37a-9e28d8e4eb9e", - "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "a0dca8a6-5fc5-49f9-96b2-8ee5c9e51508", - "messageVersion": "2.2.0", - "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", - "authenticationValue": "xgSFPEJIAAAAAAAAAAAAAAAAAAA=", - "eci": "07", - "transStatus": "Y", - "whiteListStatusSource": "03", - "whiteListStatus": "Y", - "deviceChannel": "03", - "messageCategory": "PA", - "authMethod": "01", - "authTimestamp": "2024-09-10T22:34:13+00:00", - "transactionID": 248159 + "addData": { + "transChar": "CRYPTOCURRENCY_TRANSACTION", + "threeRIInd": "DELAYED_SHIPMENT", + "cardSecurityCode": "123", + "threeDSRequestorAuthenticationInd": "SPLIT_PAYMENT" + } } + ``` -**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo +**Versión 2 (v2):** -### VISA +- Atributos Soportados: + +**addData:** Además de los datos adicionales que incluyen el indicador de autenticación, esta versión también soporta los mismos atributos que en v1. + +**recurringData:** Se introduce en v2 el soporte para el atributo recurringData, que permite manejar información sobre transacciones recurrentes como la cantidad, frecuencia, y fecha de vencimiento. + +- Ejemplo JSON para v2: -***Request Lookup*** ```json { - "deviceChannel": "03", - "threeRIInd": "11", - "threeDSRequestorPriorAuthenticationInfo": { - "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T22:44:39+00:00", - "threeDSReqPriorRef": "9e4c13a7-0813-4402-9c53-687a01303f78" + "addData": { + "transChar": "CRYPTOCURRENCY_TRANSACTION", + "threeRIInd": "DELAYED_SHIPMENT", + "cardSecurityCode": "123", + "threeDSRequestorAuthenticationInd": "SPLIT_PAYMENT" }, - "acctNumber": "4931119220729333", - "cardExpiryDate": "2902", - "purchaseAmount": "170", - "redirectURI": "https://www.placetopay.com/web", - "purchaseCurrency": "USD", - "reference": "Febrero 2024", - "messageVersion": "2.2.0" + "recurringData": { + "recurringDate": "20241023", + "recurringInd": { + "frequencyInd": "VARIABLE_FREQUENCY", + "amountInd": "VARIABLE_PURCHASE" + } + } } + ``` -**deviceChannel:** 03 indica que el canal es 3RI -**threeRIInd:** 11 indica que la transacción de tipo otro pago +## Transacción de Recurrencia con el BME -***Response Lookup*** +### Atributos de la Transacción con Recurrencia -```json - { - "action": "continue", - "messageType": "ARes", - "threeDSServerTransID": "1a53d143-230f-47b9-b886-a201ee867489", - "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", - "acsTransID": "179f6511-b042-41f3-939d-7f862a527751", - "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "f5eb0bae-dccf-498e-b639-4abf5e86b162", - "messageVersion": "2.2.0", - "acsOperatorID": "10078025", - "authenticationValue": "AJkCAhAyeQAAAEJohAJUdYknEmE=", - "eci": "05", - "transStatus": "Y", - "whiteListStatusSource": "03", - "whiteListStatus": "Y", - "deviceChannel": "03", - "messageCategory": "PA", - "authMethod": "01", - "authTimestamp": "2024-09-10T22:46:32+00:00", - "transactionID": 248164 -} -``` +Los atributos de la transacción de recurrencia para el **BME** son válidos si el valor del campo `threeRIInd` es igual a alguno de los siguientes: -**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo +- **RECURRING_TRANSACTION** (Transacción Recurrente) +- **INSTALMENT_TRANSACTION** (Transacción a Plazos) +Cuando alguno de estos valores es el indicador en `threeRIInd`, se aplican las siguientes reglas para los indicadores de recurrencia sobre los datos del request base: -**Transacciones 3RI hotel** +**Datos Asociados a la Extensión del BME** -### MASTERCARD +Los siguientes datos se asociarán a la extensión del **BME** de acuerdo con los indicadores previamente mencionados: -***Request Lookup*** +### 1. `recurringAmount` -```json -{ - "deviceChannel": "03", - "threeRIInd": "85", - "threeDSRequestorPriorAuthenticationInfo": { - "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T22:21:27+00:00", - "threeDSReqPriorRef": "c524216d-a19e-4a6b-ae1c-40b82c59fe38" - }, - "acctNumber": "5107000000010018", - "cardExpiryDate": "2902", - "purchaseAmount": "0", - "redirectURI": "https://www.placetopay.com/web", - "purchaseCurrency": "USD", - "reference": "Abril 2024", - "messageVersion": "2.2.0" -} -``` +El campo `recurringAmount` será agregado a la extensión del **BME** en la sección de datos de recurrencia bajo las siguientes condiciones: -**deviceChannel:** 03 indica que el canal es 3RI +- **Condición 1**: El valor de `recurringInd.amountInd` es igual a **FIXED_FREQUENCY**. -**threeRIInd:** 85 indica que la transacción de tipo otros pagos +**Y** -**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +- **Condición 2**: El valor de `threeDSRequestorAuthenticationInd` es igual a: **RECURRING_TRANSACTION (02)**, **INSTALMENT_TRANSACTION (03)** o el valor de `threeRIInd` es igual a **RECURRING_TRANSACTION (01)**, **INSTALMENT_TRANSACTION (02)**. -**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +Si se cumplen las condiciones anteriores, el valor de `recurringAmount` se añadirá a la extensión del **BME**. El valor de `recurringAmount` será tomado del campo `purchaseAmount` en la solicitud base. -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa (primera autenticación), consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa (primera autenticación), si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +### 2. `recurringCurrency` -***Response Lookup*** +El campo `recurringCurrency` será agregado a la extensión del **BME** bajo las siguientes condiciones: -```json -{ - "action": "continue", - "messageType": "ARes", - "threeDSServerTransID": "32c88ea6-7841-4c8b-9067-b84c99b20784", - "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", - "acsTransID": "fa92fe01-84f7-4ae7-a3f1-1dd50f97ebef", - "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "634b8dc1-aa5b-48c3-b367-022156663c81", - "messageVersion": "2.2.0", - "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", - "authenticationValue": "xgRTaR2SAAAAAAAAAAAAAAAAAAA=", - "eci": "07", - "transStatus": "Y", - "whiteListStatusSource": "03", - "whiteListStatus": "Y", - "deviceChannel": "03", - "messageCategory": "PA", - "authMethod": "01", - "authTimestamp": "2024-09-10T22:36:05+00:00", - "transactionID": 248160 -} -``` -**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo +- **Condición**: El valor de `threeRIInd` es igual a: **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. -### VISA +Cuando se cumple esta condición, el valor de `recurringCurrency` será añadido a la extensión del **BME**, y corresponderá al valor proporcionado en el request base bajo el campo `purchaseCurrency`. -***Request Lookup*** -```json -{ - "deviceChannel": "03", - "threeRIInd": "11", - "threeDSRequestorPriorAuthenticationInfo": { - "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T22:44:39+00:00", - "threeDSReqPriorRef": "9e4c13a7-0813-4402-9c53-687a01303f78" - }, - "acctNumber": "4931119220729333", - "cardExpiryDate": "2902", - "purchaseAmount": "0", - "redirectURI": "https://www.placetopay.com/web", - "purchaseCurrency": "USD", - "reference": "Marzo 2024", - "messageVersion": "2.2.0" -} -``` +### 3. `recurringExponent` -**deviceChannel:** 03 indica que el canal es 3RI +El campo `recurringExponent` será agregado a la extensión del **BME** bajo las siguientes condiciones: -**threeRIInd:** 11 indica que la transacción de tipo otros pagos +- **Condición**: El valor de `threeRIInd` es igual a: **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. -**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +Cuando se cumple esta condición, el valor de `recurringExponent` será añadido a la extensión del **BME**, y corresponderá al valor proporcionado en el request base bajo el campo `purchaseExponent`. -**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa (primera autenticación), consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +### 4. `recurringDate` -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa (primera autenticación), si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +El campo `recurringDate` será agregado a la extensión del **BME** bajo las siguientes condiciones: -***Response Lookup*** +- **Condición**: El valor de `recurringInd.frequencyInd` es igual a: **FIXED_FREQUENCY (01)**. -```json -{ - "action": "continue", - "messageType": "ARes", - "threeDSServerTransID": "b9913d5d-4980-4103-b77c-5daf0c7054b0", - "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", - "acsTransID": "e9b7726c-6f9a-4606-afe3-09dce49f49a2", - "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "6f9c449a-0ff3-4438-8c47-e3009ded9cd1", - "messageVersion": "2.2.0", - "acsOperatorID": "10078025", - "authenticationValue": "AJkCB4EjdQAAAAAAhAJUdYknEmE=", - "eci": "05", - "transStatus": "Y", - "whiteListStatusSource": "03", - "whiteListStatus": "Y", - "deviceChannel": "03", - "messageCategory": "PA", - "authMethod": "01", - "authTimestamp": "2024-09-10T22:48:07+00:00", - "transactionID": 248165 -} -``` +Si esta condición se cumple, el campo `recurringDate` será añadido a la extensión del **BME**, siempre y cuando esté presente en el request base en `bridgingMessageExtension.data.recurringData.recurringDate`. + + +### 5. `recurringExpiry` + +El valor de `recurringExpiry` es calculado automáticamente por el sistema según las siguientes condiciones. + +- **Condición**: El valor de `threeRIInd` es igual a **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. +- **Condición**: Si el valor de `deviceChannel` en los atributos es igual a **RI** y no existe un valor previo para `recurringExpiry` en el request base. +- El campo `recurringExpiry` se toma de los datos de los datos enviados en el request base. + + +### 6. `recurringFrequency` + +El valor de `recurringFrequency` será tomado del request base bajo las siguientes condiciones: + +- **Condición**: El valor de `recurringInd.frequencyInd` es igual a **FIXED_FREQUENCY (01)**. -**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo +Si esta condición se cumple, el valor de `recurringFrequency` se tomará directamente del request base de lo contrario no se asignara un valor a la extension. -**Transacciones 3RI alquiler de automóvil** -El agente de reservas realiza la transacción 3RI para obtener el CAVV y proporcionarlo al comerciante de viajes 3 (alquiler automóvil) +### 7. `recurringInd` -### MASTERCARD +El campo `recurringInd` se compone de dos subcampos: `amountInd` y `frequencyInd`. Ambos serán agregados a la extensión del **BME** bajo las siguientes condiciones: -***Request Lookup*** +- **Condición**: El valor de `threeRIInd` es igual a **RECURRING_TRANSACTION (01)**, o **INSTALMENT_TRANSACTION (02)**. -```json -{ - "deviceChannel": "03", - "threeRIInd": "85", - "threeDSRequestorPriorAuthenticationInfo": { - "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T22:21:27+00:00", - "threeDSReqPriorRef": "c524216d-a19e-4a6b-ae1c-40b82c59fe38" - }, - "acctNumber": "5107000000010018", - "cardExpiryDate": "2902", - "purchaseAmount": "50", - "redirectURI": "https://www.placetopay.com/web", - "purchaseCurrency": "USD", - "reference": "Marzo 2024", - "messageVersion": "2.2.0" -} -``` +Cuando se cumple esta condición, los siguientes subcampos serán agregados: -**deviceChannel:** 03 indica que el canal es 3RI +#### Subcampos -**threeRIInd:** 85 indica que la transacción de tipo otros pagos +- **`amountInd`**: Se agregará el valor proporcionado en `bridgingMessageExtension.data.recurringData.recurringInd.amountInd` si está presente en el request base y +si no se proporciona un valor en el request base, él `amountInd` tendrá un valor por defecto de **FIXED_PURCHASE (01)**. -**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +- **`frequencyInd`**: Se agregará el valor proporcionado en `bridgingMessageExtension.data.recurringData.recurringInd.frequencyInd` si está presente en el request base y si no se proporciona un valor en el request base, él `frequencyInd` tendrá un valor por defecto de **FIXED_FREQUENCY (01)**. -**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +## Beneficios de la V2.3.1 del protocolo con el BME en 3DS con sus nuevos indicadores -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa (primera autenticación), consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +Ver más detalle en [Reglas a tener en cuenta de la session API con BME](/three-d-s-server/api/sessions/rules#elementos-que-podra-enviar-para-optimizar-el-uso-de-esta-extension-bme) -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa (primera autenticación), si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo -***Response Lookup*** +**threeDSRequestorAuthenticationInd:** usado en el request base como: threeDSAuthenticationInd, este campo incluye nuevos indicadores disponibles en la versión 2.3.1 -```json -{ - "action": "continue", - "messageType": "ARes", - "threeDSServerTransID": "c34f67dc-7a25-4977-97f7-ca1f961946be", - "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539", - "acsTransID": "fd189ecf-c65e-4a7d-9640-89662b850038", - "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "4680679e-d6ed-48d2-89d2-b73de0828a57", - "messageVersion": "2.2.0", - "acsOperatorID": "ACS-V210-ACS-PLACETOPAY-11174", - "authenticationValue": "xgSELtLrAAAAAAAAAAAAAAAAAAA=", - "eci": "07", - "transStatus": "Y", - "whiteListStatusSource": "03", - "whiteListStatus": "Y", - "deviceChannel": "03", - "messageCategory": "PA", - "authMethod": "01", - "authTimestamp": "2024-09-10T22:38:11+00:00", - "transactionID": 248161 -} -``` +- **BILLING_AGREEMENT (07):** Este indicador se refiere a un acuerdo de facturación entre el cliente y el comerciante, donde el cliente autoriza pagos recurrentes o futuros sin necesidad de autenticar cada transacción individualmente. Es común en suscripciones o servicios continuos donde los pagos se procesan periódicamente. -**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo +- **SPLIT_SHIPMENT (08):** Indica que el pedido se enviará en múltiples envíos. Esto puede ocurrir cuando el comerciante no tiene todos los artículos en stock o por conveniencia logística. En este caso, el cargo total puede dividirse y procesarse en función de los envíos parciales. +- **DELAYED_SHIPMENT (09):** Se refiere a una transacción en la que el envío del pedido se retrasa intencionalmente, ya sea por solicitud del cliente o por motivos logísticos del comerciante. El pago puede procesarse en el momento de la compra, pero el envío se llevará a cabo más tarde. -### VISA +- **SPLIT_PAYMENT (10):** Este indicador señala que el pago de una transacción se divide en varias partes, ya sea entre diferentes métodos de pago o en diferentes momentos. Por ejemplo, el cliente podría pagar una parte con una tarjeta de crédito y el resto con otro método, o pagar en varias cuotas. -***Request Lookup*** +- **MASTERCARD_THE_PAYMENT_REQUEST_IS_FOR_AN_AGENT_PAYMENT_TRANSACTION (85):** Este indicador se utiliza cuando la solicitud de pago está relacionada con una transacción gestionada por un agente en nombre del comerciante o cliente. Es común en casos donde una agencia u otro intermediario gestiona el pago, actuando como un tercero que facilita la transacción entre el comerciante y el cliente. -```json -{ - "deviceChannel": "03", - "threeRIInd": "11", - "threeDSRequestorPriorAuthenticationInfo": { - "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-09-10T22:44:39+00:00", - "threeDSReqPriorRef": "9e4c13a7-0813-4402-9c53-687a01303f78" - }, - "acctNumber": "4931119220729333", - "cardExpiryDate": "2902", - "purchaseAmount": "50", - "redirectURI": "https://www.placetopay.com/web", - "purchaseCurrency": "USD", - "reference": "Mayo 2024", - "messageVersion": "2.2.0" -} -``` +- **MASTERCARD_FOR_UNKNOWN_OR_UNDEFINED_FINAL_AMOUNT_BEFORE_PURCHASE_TRANSACTION (86):** Este indicador se emplea cuando el monto final de la transacción no se conoce o no está definido en el momento de la compra. Es útil en situaciones donde el importe total podría variar, como cuando se realizan reservas o compras que pueden implicar cargos adicionales, pero el monto exacto se determina posteriormente (por ejemplo, reservas de hotel, alquileres de automóviles o servicios con tarifas variables). -***deviceChannel:*** 03 indica que el canal es 3RI -***threeRIInd:*** 11 indica que la transacción de tipo otros pagos +**threeRIInd:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 -***threeDSReqPriorAuthMethod:*** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +- **DEVICE_BINDING_STATUS_CHECK (13):** Este indicador se utiliza para verificar el estado de la vinculación de un dispositivo. Se refiere a situaciones en las que es necesario verificar si un dispositivo está vinculado correctamente a una cuenta o tarjeta, lo que puede mejorar la seguridad de las transacciones recurrentes o de pago. -***threeDSReqPriorAuthTimestamp:*** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +- **CARD_SECURITY_CODE_STATUS_CHECK (14):** Este indicador permite verificar el estado del código de seguridad de la tarjeta (CVV o CVC). Es común en transacciones donde se requiere una autenticación adicional del código de seguridad para validar la legitimidad de la tarjeta utilizada. -***threeDSReqPriorRef:*** El ID otorgado por el ACS en la transacción previa (primera autenticación), consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +- **DELAYED_SHIPMENT (15):** Este indicador se utiliza para transacciones en las que el envío del producto o servicio se realizará en una fecha posterior. Es útil para casos en los que el pago se procesa de inmediato, pero la entrega se retrasa o se realiza más adelante. -***threeDSReqPriorAuthData:*** El ID otorgado por el DS en la transacción previa (primera autenticación), si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +- **SPLIT_PAYMENT (16):** Se refiere a una transacción en la que el pago se divide en varias partes. Esto puede ocurrir cuando el comprador elige pagar en diferentes cuotas o mediante diferentes métodos de pago para una sola transacción. -***Response Lookup*** +- **FIDO_CREDENTIAL_DELETION (17):** Este indicador se emplea cuando se solicita la eliminación de las credenciales de FIDO (Fast Identity Online) asociadas a una cuenta o dispositivo. FIDO es un estándar de autenticación que permite la eliminación de credenciales para mejorar la seguridad. -```json - { - "action": "continue", - "messageType": "ARes", - "threeDSServerTransID": "7a64778d-45de-48ae-8c78-ec688775315d", - "acsReferenceNumber": "3DS_LOA_ACS_EISF_020200_00539V3", - "acsTransID": "d4b3bbae-5594-4c89-9cf8-ae2ac3499223", - "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "5c4c3ec0-d31b-442d-81e8-86025c08cb9d", - "messageVersion": "2.2.0", - "acsOperatorID": "10078025", - "authenticationValue": "AJkCByOJNAAAABOIhAJUdYknEmE=", - "eci": "05", - "transStatus": "Y", - "whiteListStatusSource": "03", - "whiteListStatus": "Y", - "deviceChannel": "03", - "messageCategory": "PA", - "authMethod": "01", - "authTimestamp": "2024-09-10T22:49:54+00:00", - "transactionID": 248166 -} -``` +- **FIDO_CREDENTIAL_REGISTRATION (18):** Se utiliza cuando se realiza la inscripción de nuevas credenciales FIDO. Este proceso vincula un dispositivo o cuenta a un método de autenticación más seguro, que es independiente de contraseñas tradicionales. -**Actión:** continue indica que la API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo +- **DECOUPLED_AUTHENTICATION_FALLBACK (19):** Este indicador se activa cuando se produce un fallo en el proceso de autenticación desacoplada. La autenticación desacoplada permite al titular de la tarjeta autenticarse en un canal distinto al del comercio (por ejemplo, a través de una app bancaria), y este código indica que el método ha fallado y se requiere una alternativa. +**transChar:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 ---- +- **CRYPTOCURRENCY_TRANSACTION (01):** Este indicador se utiliza para identificar transacciones relacionadas con criptomonedas. Permite que el emisor y otros actores del sistema de pagos reconozcan de forma explícita cuando la transacción involucra la compra, venta o intercambio de criptomonedas, lo que puede requerir un tratamiento especial debido a la naturaleza de este tipo de activos. +- **NFT_TRANSACTION (02):** Este indicador está diseñado para transacciones que implican la compra o el intercambio de tokens no fungibles (NFTs). Los NFTs son activos digitales únicos basados en tecnología blockchain, y este código ayuda a diferenciar estas transacciones de las compras tradicionales, ofreciendo una capa adicional de información relevante para la autenticación y el análisis de riesgos. -## Transacciones con tarjeta registrada no programadas -Las transacciones UCOF **Unscheduled card-on-file** se producen cuando un comerciante utiliza la información de la tarjeta almacenada en su sistema para realizar un cargo único y no programado en la tarjeta del cliente. Estas transacciones no están asociadas con pagos recurrentes o a plazos, sino que son transacciones únicas que aprovechan la información de la tarjeta almacenada previamente para facilitar el pago. +**amountInd:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 -* Compras en línea sin intervención del titular de la tarjeta: Por ejemplo, un cliente realiza una compra en un sitio web utilizando la opción de ***guardar tarjeta para futuras compras***. Luego, en una fecha posterior, el comerciante utiliza la información de la tarjeta almacenada para procesar un pago por una compra adicional sin la necesidad de una interacción adicional por parte del cliente. -* Renovaciones automáticas de servicios no periódicos: Algunos servicios no siguen un ciclo de facturación regular, pero aún pueden optar por utilizar la información de la tarjeta almacenada para facilitar el pago de renovaciones automáticas. Por ejemplo, la renovación anual de una suscripción a un software que no se factura mensualmente, pero que utiliza la información de la tarjeta almacenada para procesar automáticamente el pago cuando llega la fecha de renovación. -* Pagos de tarifas o cargos únicos: Situaciones en las que un cliente necesita realizar un pago único y no programado a un comerciante, como el pago de una factura pendiente, un cargo por servicio adicional, o una compra de último minuto. +- **FIXED_PURCHASE (01):** Indica que el monto de la transacción es fijo y no varía. Este tipo de compra es común en transacciones estándar donde el valor del producto o servicio está predefinido y no cambia durante el proceso de pago. -***Para Visa está disponible el flujo de pago dividido a través del DAF a partir de Abríl de 2024. Consultar para más detalle sobre VISA DAF*** +- **VARIABLE_PURCHASE (02):** Indica que el monto de la transacción puede variar. Se utiliza en casos donde el valor final de la compra no está determinado en el momento de la autenticación inicial, como en situaciones de envío fraccionado, cargos adicionales, o ajustes por servicios o productos variables. Este indicador proporciona flexibilidad en el manejo de transacciones con montos ajustables. -`POST` https://3dss-dev.placetopay.ws/api/threeds/v2x/sessions +**frequencyInd:** Este campo incluye nuevos indicadores disponibles en la versión 2.3.1 -**Primera Autenticación - Agregar tarjeta** +- **FIXED_FREQUENCY (01):** Indica que la frecuencia de la transacción recurrente es fija. Es utilizado cuando los pagos se realizan a intervalos regulares y predefinidos, como pagos mensuales, suscripciones o cuotas de préstamos. La periodicidad es constante y no cambia a lo largo del tiempo. + +- **VARIABLE_FREQUENCY (02):** Indica que la frecuencia de la transacción recurrente puede variar. Se aplica en casos donde los pagos no se realizan a intervalos regulares, o la frecuencia cambia según las necesidades o circunstancias, como en pagos esporádicos o cuando el intervalo entre pagos no es predecible. Este indicador brinda flexibilidad para manejar pagos recurrentes que no siguen un patrón estricto. -### VISA con DAF +## Casos de usos del BME -**Opción NPA:** esta opción no require verificar fondos de la cuenta. +1. **Pagos Recurrentes (Recurring Payments)** +Indicadores Relevantes: -***Request Lookup*** +- **threeRIInd:** RECURRING_TRANSACTION (01) +- **amountInd:** FIXED_PURCHASE (01) o VARIABLE_PURCHASE (02) +- **frequencyInd:** FIXED_FREQUENCY (01) o VARIABLE_FREQUENCY (02) + +**Caso de Uso:** Cuando un comerciante quiere procesar una transacción recurrente con un monto fijo o variable (como una suscripción mensual de un servicio o cuotas de pago de un préstamo), el BME puede ser utilizado para indicar el tipo de transacción recurrente, la frecuencia con la que se realizarán los pagos, y si el monto será fijo o variable. + +**Ejemplo:** Una plataforma de streaming quiere cobrar una suscripción mensual fija (por ejemplo, $10), pero también puede manejar casos donde el usuario paga montos variables basados en consumo, con una frecuencia no predefinida. ```json + { - "deviceChannel": "02", - "messageCategory": "02", - "threeDSAuthenticationInd": "04", - "threeDSChallengeInd": "04", - "acctNumber": "4931119220729333", - "cardExpiryDate": "2902", - "redirectURI": "https://www.placetopay.com/web", - "reference": "Enero 2024", - "messageVersion": "2.2.0", - "billAddrCity": "Medellín", - "billAddrCountry": "COL", - "billAddrLine1": "Carrera 65 # 45 - 20", - "billAddrPostCode": "050004", - "billAddrState": "ANT", - "email": "john.doe@evertecinc.com", - "mobilePhone": { - "cc": "57", - "subscriber": "30011122333" + "acctNumber": "4005580000000040", + "cardExpiryDate": "2411", + "purchaseAmount": "8.25", + "redirectURI": "https://www.placetopay.com", + "purchaseCurrency": "USD", + "addPriorInformation": "Y", + "threeDSAuthenticationInd": "02", + "messageCategory": "01", + "deviceChannel": "03", + "threeRIInd": "01", + "recurringFrequency": "031", + "recurringExpiry": "20241020", + "bridgingMessageExtension": { + "data": { + "addData": { + "threeRIInd": "RECURRING_TRANSACTION", + "cardSecurityCode": "123" + }, + "recurringData": { + "recurringDate": "20241023", + "recurringInd": { + "frequencyInd": "FIXED_PURCHASE", + "amountInd": "FIXED_FREQUENCY" + } + } + } } } + ``` -**deviceChannel:** 02 - Navegador -**messageCategory:** El valor 02 corresponde a transacción de NPA - No pago +2. **Transacciones a Plazos (Instalment Payments)** -**threeDSAuthenticationInd**, indica el tipo de autenticación. El valor de 04 corresponde a agregar tarjeta. +Indicadores Relevantes: -**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes +- **threeRIInd:** INSTALMENT_TRANSACTION (02) +- **amountInd:** FIXED_PURCHASE (01) o VARIABLE_PURCHASE (02) +- **frequencyInd:** FIXED_FREQUENCY (01) o VARIABLE_FREQUENCY (02) -* billAddrCity -* billAddrCountry -* billAddrLine1 -* billAddrPostCode -* billAddrState -* email -* mobilePhone +**Caso de Uso:** Para pagos a plazos, como la compra de un producto caro en cuotas, el BME puede especificar que la transacción es a plazos y ajustar la frecuencia de los pagos, además de indicar si los montos son fijos o variables a lo largo del tiempo. + +**Ejemplo:** Un cliente compra un electrodoméstico costoso y elige pagarlo en 6 cuotas fijas. Se puede usar el BME para indicar que es un pago a plazos con una frecuencia mensual fija y un monto constante. + +```json + +{ + "acctNumber": "4005580000000040", + "cardExpiryDate": "2411", + "purchaseAmount": "8.25", + "redirectURI": "https://www.placetopay.com", + "purchaseCurrency": "USD", + "addPriorInformation": "Y", + "threeDSAuthenticationInd": "02", + "messageCategory": "01", + "deviceChannel": "03", + "threeRIInd": "01", + "recurringFrequency": "031", + "recurringExpiry": "20241020", + "bridgingMessageExtension": { + "data": { + "addData": { + "threeRIInd": "INSTALMENT_TRANSACTION", + "cardSecurityCode": "123" + }, + "recurringData": { + "recurringDate": "20241023", + "recurringInd": { + "frequencyInd": "VARIABLE_PURCHASE", + "amountInd": "VARIABLE_FREQUENCY" + } + } + } + } +} + +``` + +3. **Envío Dividido o Demorado (Split or Delayed Shipment)** + +Indicadores Relevantes: +**threeRIInd:** DELAYED_SHIPMENT (15) o SPLIT_PAYMENT (16) -***Response Lookup*** +**Caso de Uso:** Para escenarios donde el pedido de un cliente se divide en varios envíos o donde el envío es retrasado, el BME puede proporcionar detalles adicionales sobre la naturaleza del pago. Esto es útil para gestionar transacciones donde una parte del pedido se envía ahora y otra más tarde, o cuando el envío se pospone. +**Ejemplo:** Un cliente hace una compra de múltiples artículos, pero algunos productos no están disponibles para envío inmediato. Se usa DELAYED_SHIPMENT para señalar al banco emisor que la transacción incluye envíos demorados. ```json + { - "action": "redirect", - "sessionToken": "b8ba7e2e3cb4b7cf8045c8e098bf84e5f77b6b643a1ce19cef9ebe4be8b05473", - "redirectURL": "https://3dss-dev.placetopay.ws/threeds/v2x/sessions/1268/b8ba7e2e3cb4b7cf8045c8e098bf84e5f77b6b643a1ce19cef9ebe4be8b05473", - "transactionID": 1312 + "acctNumber": "4005580000000040", + "cardExpiryDate": "2411", + "purchaseAmount": "8.25", + "redirectURI": "https://www.placetopay.com", + "purchaseCurrency": "USD", + "addPriorInformation": "Y", + "threeDSAuthenticationInd": "02", + "messageCategory": "01", + "deviceChannel": "03", + "threeRIInd": "01", + "recurringFrequency": "031", + "recurringExpiry": "20241020", + "bridgingMessageExtension": { + "data": { + "addData": { + "threeRIInd": "DELAYED_SHIPMENT", + "cardSecurityCode": "123" + } + } + } } -``` -**Actión:** redirect indica que la API retornara un redirectURL que deberá ser consumido para continuar con el flujo +``` +4. **Transacciones con Monedas Digitales (Cryptocurrency/NFT Transactions)** -**Autenticaciones posteriores** +Indicadores Relevantes: +**transChar:** CRYPTOCURRENCY_TRANSACTION (01) o NFT_TRANSACTION (02) -### VISA con DAF +**Caso de Uso:** En situaciones donde el pago se realiza con criptomonedas o NFT (tokens no fungibles), el BME puede ser usado para indicar que el pago no es con moneda tradicional, sino con activos digitales. Esto ayuda a los bancos emisores a evaluar correctamente el riesgo asociado a la transacción. -***Request Lookup*** +**Ejemplo:** Un cliente compra un NFT en una plataforma de arte digital utilizando criptomonedas. El BME indicaría que la transacción está asociada con un NFT_TRANSACTION o CRYPTOCURRENCY_TRANSACTION. ```json + { - "deviceChannel": "03", - "threeRIInd": "81", - "threeDSRequestorPriorAuthenticationInfo": { - "threeDSReqPriorAuthMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "threeDSReqPriorAuthTimestamp": "2024-05-03T22:48:06+00:00", - "threeDSReqPriorRef": "5d822226-d2ad-4a43-8270-87c95003dad4", - "threeDSReqPriorAuthData": "valid_data" - }, - "acctNumber": "4931119220729333", - "cardExpiryDate": "2902", - "purchaseAmount": "1.00", + "acctNumber": "4005580000000040", + "cardExpiryDate": "2411", + "purchaseAmount": "8.25", + "redirectURI": "https://www.placetopay.com", "purchaseCurrency": "USD", - "redirectURI": "https://www.placetopay.com/web", - "reference": "Febrero 2024", - "billAddrCity": "Medellín", - "billAddrCountry": "COL", - "billAddrLine1": "Carrera 65 # 45 - 20", - "billAddrPostCode": "050004", - "billAddrState": "ANT", - "email": "john.doe@evertecinc.com", - "mobilePhone": { - "cc": "57", - "subscriber": "30011122333" - }, - "messageVersion": "2.2.0" + "addPriorInformation": "Y", + "threeDSAuthenticationInd": "01", + "messageCategory": "01", + "deviceChannel": "03", + "threeRIInd": "01", + "recurringFrequency": "031", + "recurringExpiry": "20241020", + "bridgingMessageExtension": { + "data": { + "addData": { + "transChar": "NFT_TRANSACTION", + "cardSecurityCode": "123", + "threeDSRequestorAuthenticationInd": "SPLIT_PAYMENT" + } + } + } } + + ``` -**deviceChannel:** 03 indica que el canal es 3RI +5. **Chequeo de Estado del Código de Seguridad de la Tarjeta (Card Security Code Status Check)** -**threeRIInd:** 81 indica que la transacción con una tarjeta registrada no programada +Indicadores Relevantes: -**threeDSReqPriorAuthMethod:** Método que fue usado por el tarjetahabiente para la autenticación. 01 sin fricción, 02 con fricción, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**threeRIInd:** CARD_SECURITY_CODE_STATUS_CHECK (14) -**threeDSReqPriorAuthTimestamp:** Fecha y hora en formato UTC de la autenticación previa. El formato es C, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**Caso de Uso:** Este caso es relevante cuando el comerciante necesita realizar un chequeo del código de seguridad (CVV) asociado a la tarjeta sin realizar un pago inmediato. El BME permite agregar información adicional que indique que la transacción es solo una verificación del CVV. -**threeDSReqPriorRef:** El ID otorgado por el ACS en la transacción previa ***primera autenticación***, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**Ejemplo:** Un servicio de verificación de tarjetas realiza un chequeo del código CVV antes de que se complete una transacción en el futuro. El BME indicaría este escenario sin necesidad de procesar un pago. -**threeDSReqPriorAuthData:** El ID otorgado por el DS en la transacción previa **primera autenticación**, si este dato no es enviado 3DSS lo asigna, consultar la sesión Obtener los datos del threeDSRequestorPriorAuthenticationInfo +```json -**Datos DAF:** las llaves adicionales que se deberán enviar para que se aplique el DAF con VISA son los siguientes +{ + "acctNumber": "4005580000000040", + "cardExpiryDate": "2411", + "purchaseAmount": "8.25", + "redirectURI": "https://www.placetopay.com", + "purchaseCurrency": "USD", + "addPriorInformation": "Y", + "threeDSAuthenticationInd": "04", + "messageCategory": "01", + "deviceChannel": "03", + "threeRIInd": "01", + "recurringFrequency": "031", + "recurringExpiry": "20241020", + "bridgingMessageExtension": { + "data": { + "addData": { + "threeRIInd": "CARD_SECURITY_CODE_STATUS_CHECK", + "cardSecurityCode": "123" + } + } + } +} -* billAddrCity -* billAddrCountry -* billAddrLine1 -* billAddrPostCode -* billAddrState -* email -* mobilePhone +``` -***Response Lookup*** +6. **Eliminación y Registro de Credenciales FIDO (FIDO Credential Deletion/Registration)** +Indicadores Relevantes: + +**threeRIInd:** FIDO_CREDENTIAL_DELETION (17) o FIDO_CREDENTIAL_REGISTRATION (18) + +**Caso de Uso:** Estos indicadores se utilizan cuando se gestionan credenciales FIDO, un estándar para autenticación sin contraseña. El BME puede incluir información sobre la eliminación o el registro de credenciales FIDO en el contexto de una transacción, mejorando la seguridad del proceso. + +**Ejemplo:** Un banco realiza una actualización de credenciales FIDO vinculadas a una cuenta de usuario. El BME incluiría indicadores que registren o eliminen dichas credenciales en la transacción. ```json + { - "action": "continue", - "messageType": "ARes", - "threeDSServerTransID": "aec4b66f-f4ce-4bbf-9904-0759efa6ea8e", - "acsReferenceNumber": "PTOPID", - "acsTransID": "f7a98ab1-37d1-4e20-a7db-8f0491fbdd6d", - "dsReferenceNumber": "3DS_LOA_DIS_PPFU_020100_00010", - "dsTransID": "655fabd4-ee08-4bab-963f-68c79063438f", - "messageVersion": "2.2.0", - "acsOperatorID": "CAS_OPERD_DR", - "authenticationValue": "BpkCBBYBJAAAAABkhAEkdYR0cUU=", - "eci": "05", - "messageExtension": [ - { - "name": "DAF Extension", - "id": "A000000003-003", - "criticalityIndicator": false, - "data": { - "chAccReqID": "PZFPk0jJzA/4p5cWcAufzU0vPnEWCABOuPE4vLp/FNk=", - "authPayProcessReqInd": "01", - "version": "1.0", - "authPayCredStatus": "Y", - "dafAdvice": "01" - } - } - ], - "transStatus": "Y", - "whiteListStatusSource": "03", - "whiteListStatus": "Y", - "deviceChannel": "03", - "messageCategory": "PA", - "authMethod": "FRICTIONLESS_AUTHENTICATION", - "authTimestamp": "2024-05-03T22:49:38+00:00" + "acctNumber": "4005580000000040", + "cardExpiryDate": "2411", + "purchaseAmount": "8.25", + "redirectURI": "https://www.placetopay.com", + "purchaseCurrency": "USD", + "addPriorInformation": "Y", + "threeDSAuthenticationInd": "04", + "messageCategory": "01", + "deviceChannel": "03", + "threeRIInd": "01", + "recurringFrequency": "031", + "recurringExpiry": "20241020", + "bridgingMessageExtension": { + "data": { + "addData": { + "threeRIInd": "FIDO_CREDENTIAL_REGISTRATION", + "cardSecurityCode": "123" + } + } + } } + + ``` -**Actión:** continue indica que ls API retornara la información de la autenticación, y por ende no es necesario consumir endpoints adicionales para continuar con el flujo +7. **Pagos Diferidos o Fraccionados (Split/Delayed Shipment)** ---- +Indicadores Relevantes: +**threeDSRequestorAuthenticationInd:** SPLIT_SHIPMENT (08) o DELAYED_SHIPMENT (09) +**threeRIInd:** DELAYED_SHIPMENT (15) o SPLIT_PAYMENT (16) -## Obtener los datos del threeDSRequestorPriorAuthenticationInfo +**Caso de Uso:** Este escenario se aplica cuando un pedido se divide en varios envíos (split shipment) o cuando se retrasa el envío (delayed shipment). Los indicadores permiten que el emisor reconozca que la transacción no se completará de inmediato en su totalidad, sino que se llevará a cabo en varias partes o en momentos diferentes. -Para obtener los datos requeridos se deberá de lanzar la transacción tipo CIT **primera autenticación**, para posterior consultar los datos de dicha transacción y poder enviar la información del threeDSRequestorPriorAuthenticationInfo en la transacción MIT. +**SPLIT_SHIPMENT (08):** Se utiliza cuando la compra del cliente incluye múltiples productos que se enviarán por separado en diferentes momentos. +**DELAYED_SHIPMENT (09):** Aplica cuando el envío de un pedido completo se retrasa y el pago no se procesa hasta que los productos estén listos para su envío. -***Request Lookup*** +**Beneficio:** Proporciona un mecanismo para que el Access Control Server (ACS) reconozca que la transacción no se completa de una sola vez, lo que ayuda a evitar rechazos innecesarios por transacciones incompletas o por la percepción de pagos duplicados. -`GET` https://3dss-dev.placetopay.ws/api/v2x/transactions/{transactionID} +**Ejemplo:** Un cliente compra varios artículos en una tienda en línea, pero algunos productos están en preventa y serán enviados más tarde. El indicador SPLIT_SHIPMENT se incluye para informar al emisor que el pago se fraccionará en función de los envíos. Si, por otro lado, la tienda notifica un retraso en todo el envío, se utilizaría el indicador DELAYED_SHIPMENT para evitar problemas con la autorización del pago. -***Response Lookup*** ```json + { - "transStatus": "Y", - "transStatusReason": null, - "eci": "05", - "acsTransID": "5d822226-d2ad-4a43-8270-87c95003dad4", - "dsTransID": "5b3e6516-0a88-41a4-9c20-f97af2003acd", - "threeDSServerTransID": "fbefea2f-2ae6-4a21-94cc-d7e5083f05a6", - "sdkTransID": null, - "authenticationValue": "AAICAImZhwAAAAAAAAEkdYR0cUU=", - "messageVersion": "2.2.0", - "authMethod": "CARDHOLDER_CHALLENGE_OCCURRED", - "authTimestamp": "2024-05-03T22:48:06+00:00", - "enrolled": "Y", - "messageCategory": "NPA" + "acctNumber": "4005580000000040", + "cardExpiryDate": "2411", + "purchaseAmount": "8.25", + "redirectURI": "https://www.placetopay.com", + "purchaseCurrency": "USD", + "addPriorInformation": "Y", + "threeDSAuthenticationInd": "04", + "messageCategory": "01", + "deviceChannel": "03", + "threeRIInd": "01", + "recurringFrequency": "031", + "recurringExpiry": "20241020", + "bridgingMessageExtension": { + "data": { + "addData": { + "threeRIInd": "DELAYED_SHIPMENT", + "cardSecurityCode": "123", + "threeDSRequestorAuthenticationInd": "DELAYED_SHIPMENT" + } + } + } } -``` - ---- - -## Otros casos - -* Delayed Shipment **threeDSAuthenticationInd 09, threeRIInd 15** aplica par EMV 3DS 2.2 with Bridging Message Extension o par la versión EMV 3DS 2.3.1 -* Split Shipment **threeDSAuthenticationInd 08, threeRIInd 06** aplica par EMV 3DS 2.2 with Bridging Message Extension o par la versión EMV 3DS 2.3.1 -* Split Payment **threeDSAuthenticationInd 10, threeRIInd 16** aplica par EMV 3DS 2.2 with Bridging Message Extension o par la versión EMV 3DS 2.3.1 - ---- - -## Mejora la tasa de autenticaciones con datos adicionales -Nos complace invitarles a visitar el apartado de [Adicional Data](/three-d-s-server/api/sessions/detail-info) en nuestra documentación del API. Este apartado ofrece información crucial para optimizar el proceso de autenticación 3DS. -La inclusión de estos datos adicionales en sus solicitudes permite a los emisores realizar una evaluación más precisa, lo que puede mejorar considerablemente la tasa de autenticaciones exitosas. - -Les recomendamos revisar estas pautas para aprovechar al máximo las funcionalidades del API y así ofrecer una experiencia más segura y eficiente a sus usuarios. +```