Skip to content

Commit

Permalink
Merge pull request #111 from placetopay-org/3dss-doc
Browse files Browse the repository at this point in the history
3dss doc
  • Loading branch information
meiyerDev authored Oct 1, 2024
2 parents df01af6 + 1f7594f commit daaafc3
Show file tree
Hide file tree
Showing 6 changed files with 464 additions and 98 deletions.
190 changes: 184 additions & 6 deletions src/pages/en/three-d-s-server/api/integration/session.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,6 @@ Este tipo de sesiones se presentan cuando el comerciante está iniciando una tra
---



## 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**.
Expand All @@ -367,12 +366,12 @@ Con el objetivo de mejorar la tasa de aprobación en las autenticaciones, hemos

### Especificaciones

| Protocolo | Mastercard | Visa |
|-------------|---------------|---------------|
| Versión 1.0 | **Soportada** | **Soportada** |
| Versión 2.0 | En proceso | En proceso |
| 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 V1**
**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.

Expand Down Expand Up @@ -413,6 +412,13 @@ Ver más detalle en [Reglas a tener en cuenta de la session API](/en/three-d-s-s
"threeRIInd": "DELAYED_SHIPMENT",
"cardSecurityCode": "123",
"threeDSRequestorAuthenticationInd": "SPLIT_PAYMENT"
},
"recurringData": {
"recurringDate": "20241023",
"recurringInd": {
"frequencyInd": "VARIABLE_FREQUENCY",
"amountInd": "VARIABLE_PURCHASE"
}
}
}
}
Expand All @@ -435,6 +441,17 @@ Ver más detalle en [Reglas a tener en cuenta de la session API](/en/three-d-s-s
"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",
Expand All @@ -445,6 +462,167 @@ Ver más detalle en [Reglas a tener en cuenta de la session API](/en/three-d-s-s

```



**Versión 1 (v1):**

- 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.

- Ejemplo JSON para v1:

```json
{
"addData": {
"transChar": "CRYPTOCURRENCY_TRANSACTION",
"threeRIInd": "DELAYED_SHIPMENT",
"cardSecurityCode": "123",
"threeDSRequestorAuthenticationInd": "SPLIT_PAYMENT"
}
}

```

**Versión 2 (v2):**

- 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:


```json
{
"addData": {
"transChar": "CRYPTOCURRENCY_TRANSACTION",
"threeRIInd": "DELAYED_SHIPMENT",
"cardSecurityCode": "123",
"threeDSRequestorAuthenticationInd": "SPLIT_PAYMENT"
},
"recurringData": {
"recurringDate": "20241023",
"recurringInd": {
"frequencyInd": "VARIABLE_FREQUENCY",
"amountInd": "VARIABLE_PURCHASE"
}
}
}

```


## 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:

### 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:

### 1. `recurringAmount`

El campo `recurringAmount` será agregado a la extensión del **BME** en la sección de datos de recurrencia bajo las siguientes condiciones:

- **Condición 1**: El valor de `recurringInd.amountInd` es igual a **FIXED_FREQUENCY**.

**Y**

- **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)**.

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.


### 2. `recurringCurrency`

El campo `recurringCurrency` 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)**.

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`.


### 3. `recurringExponent`

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)**.

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`.


### 4. `recurringDate`

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)**.

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)**.

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.


### 7. `recurringInd`

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)**.

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)**.

- **`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)**.


---

## Agregar tarjeta
Expand Down
2 changes: 1 addition & 1 deletion src/pages/en/three-d-s-server/api/sessions/detail-info.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -686,6 +686,6 @@ Cardholder Account Identifier
## BridgingMessageExtension

Para obtener más detalles sobre cómo utilizar esta extensión y mejorar la tasa de autenticación aprovechando las ventajas de la versión 2.3.1,
consulte [Sesión transacción con Bridging Message Extension](/en/three-d-s-server/api/integration/session#sesion-transaccion-con-bridging-message-extension)
consulte [Sesión transacción con Bridging Message Extension](/en/three-d-s-server/api/integration/session#sesion-transaccion-con-bridging-message-extension-bme)


Loading

0 comments on commit daaafc3

Please sign in to comment.