> For the complete documentation index, see [llms.txt](https://docs.payments.thalescloud.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.payments.thalescloud.io/nfc-wallet-sdk-android/es/implement-nfc-wallet/handle-cdcvm.md).

# Gestionar CDCVM

## Resumen

NFC Wallet SDK admite múltiples CVM (métodos de verificación del titular de la tarjeta) para autenticar al usuario final durante el pago, como CDCCVM, PIN en línea y firma.

CDCVM (método de verificación del titular de la tarjeta en el dispositivo del consumidor) es un CVM que depende del dispositivo para verificar al **usuario final** antes de un pago NFC.

La mayoría de los programas NFC Wallet usan **CDCVM**. CDCVM se basa en la autenticación del usuario en el dispositivo.

En esta sección, explicamos que NFC Wallet SDK se basa en el método de desbloqueo seguro del dispositivo de Android como CDCVM.

### CDCVM Android (desbloqueo del dispositivo)

NFC Wallet SDK para Android usa la pantalla de bloqueo segura de Android para CDCVM. Admite:

* **Biometría**: credenciales biométricas fuertes, como huella dactilar o rostro.
* **Credenciales del dispositivo (keyguard)**: PIN, patrón o contraseña.

{% hint style="info" %}
NFC Wallet usa la autenticación de usuario de Android Keystore. Consulte [autenticación de usuario de Android Keystore](https://developer.android.com/privacy-and-security/keystore#UserAuthentication).
{% endhint %}

### Recomendaciones

Gestione CDCVM desde el inicio de su integración:

* Compruebe las capacidades CDCVM del dispositivo antes de iniciar el enrolamiento de la wallet o la tokenización.
* Indique al usuario final que habilite una pantalla de bloqueo segura cuando sea necesario.

{% hint style="warning" %}

### Comprobación de la capacidad del dispositivo NFC

Compruebe que su dispositivo admite HCE como se indica en [Declarar características NFC](/nfc-wallet-sdk-android/es/get-started/configuration/3.-application-manifest-file.md#declare-nfc-features). Puede realizar la comprobación durante la instalación de la aplicación (filtrado de dispositivos de Google Play) o en tiempo de ejecución.

Si usa una comprobación en tiempo de ejecución, oculte las funciones de NFC Wallet para los dispositivos no compatibles.
{% endhint %}

## Integración del SDK

### Compruebe las capacidades CDCVM del dispositivo

Use `DeviceCVMEligibilityChecker.checkDeviceEligibility` para comprobar las capacidades del dispositivo.

Devuelve un `DeviceCVMEligibilityResult`. Úselo para evaluar la compatibilidad biométrica y de keyguard.

Ejecute esta comprobación después de [inicializar NFC Wallet SDK](/nfc-wallet-sdk-android/es/get-started/configuration/4.-initialize-the-nfc-wallet-sdk.md), y antes de iniciar el enrolamiento de la wallet o la tokenización.

#### Compruebe la compatibilidad biométrica

Llamar a `DeviceCVMEligibilityResult.getBiometricsSupport`.

Devuelve `BiometricSupport.SUPPORTED` cuando CDCVM biométrico está disponible. Consulte el posible error en caso de que la biometría no sea compatible en la tabla siguiente.

<details>

<summary>Error de elegibilidad biométrica</summary>

| Resultado                        | Descripción                                                                                        |
| -------------------------------- | -------------------------------------------------------------------------------------------------- |
| ANDROID\_VERSION\_NOT\_SUPPORTED | Se devuelve cuando el dispositivo ejecuta una versión de Android anterior a 6.0 (nivel de API 23). |
| NO\_FINGERPRINT\_SENSOR          | Se devuelve cuando no hay ningún sensor biométrico disponible en el dispositivo.                   |
| NO\_FINGERPRINT\_ENROLLED        | Se devuelve cuando el usuario final no ha registrado biometría en el dispositivo.                  |
| PERMISSION\_NOT\_GRANTED         | Se devuelve cuando falta en el manifiesto el permiso biométrico requerido.                         |
| SECURE\_LOCK\_NOT\_PRESENTED     | Se devuelve cuando no hay habilitada ninguna pantalla de bloqueo segura en el dispositivo.         |

</details>

#### Compruebe la compatibilidad de keyguard del dispositivo

Llamar a `DeviceCVMEligibilityResult.getDeviceKeyguardSupport`.

Devuelve `DeviceKeyguardSupport.SUPPORTED` cuando CDCVM de keyguard del dispositivo está disponible. Consulte el posible error en caso de que keyguard no sea compatible en la tabla siguiente.

<details>

<summary>Error de elegibilidad de keyguard del dispositivo</summary>

| Resultado                        | Descripción                                                                                        |
| -------------------------------- | -------------------------------------------------------------------------------------------------- |
| ANDROID\_VERSION\_NOT\_SUPPORTED | Se devuelve cuando el dispositivo ejecuta una versión de Android anterior a 6.0 (nivel de API 23). |
| SECURE\_LOCK\_NOT\_PRESENTED     | Se devuelve cuando no hay ningún PIN, patrón o contraseña habilitado en el dispositivo.            |

</details>

### Ejemplo de implementación

```java
// Compruebe la elegibilidad del dispositivo para elegir CDCVM
DeviceCVMEligibilityResult result =
        DeviceCVMEligibilityChecker.checkDeviceEligibility(getApplicationContext());

if(result.getBiometricsSupport() == BiometricsSupport.SUPPORTED) {
    // La biometría es compatible
    // ...
}
else if(result.getDeviceKeyguardSupport() == DeviceKeyguardSupport.SUPPORTED){
    // Si la biometría no es compatible, debe usarse Device Keyguard.
    // Device keyguard es compatible
    // ...
}
else {
    // Registrar error, el dispositivo no es compatible
    // o el usuario final no habilita una pantalla de bloqueo segura
    // Recomendamos indicar al usuario final que habilite una pantalla de bloqueo segura
    // ...
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.payments.thalescloud.io/nfc-wallet-sdk-android/es/implement-nfc-wallet/handle-cdcvm.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
