> 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-ios/es/implement-nfc-wallet/tokenize-a-card/digitize-card/yellow-flow-digitization.md).

# Digitalización del flujo amarillo

## Descripción general

El flujo amarillo es un flujo de tokenización donde el backend del emisor aprueba la tokenización con autenticación adicional (ID\&V).

Este flujo es común cuando el SDK de billetera NFC está integrado en una aplicación de billetera digital que tokeniza tarjetas para múltiples emisores.

En este caso, la solución debe autenticar mediante ID\&V para completar la tokenización.

## Experiencia del usuario

Ver [Experiencia del usuario del flujo amarillo](/nfc-wallet-sdk-ios/es/implement-nfc-wallet/tokenize-a-card.md#yellow-flow).

## Diagrama de secuencia

<figure><img src="/files/08b621dcd5cecc9308e8386aab79c20e96cbcdc0" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/5e12e6c78b6994c5c125d3682875eca68b8d786d" alt=""><figcaption><p>Flujo amarillo: seleccionar un método de ID&#x26;V después de <code>digitizationApprovedWithIDV</code>.</p></figcaption></figure>

## Integrar SDK

Después de que tú [Comprobar la elegibilidad de la tarjeta](/nfc-wallet-sdk-ios/es/implement-nfc-wallet/tokenize-a-card/check-card-eligibility.md):

1. Llamar `CardDigitizationService.digitizeCard()`.
2. Si la tokenización se aprueba con condiciones (flujo amarillo):
   * El SDK de billetera NFC emite `digitizationApprovedWithIDV`.
3. Obtén los métodos de ID\&V compatibles por el emisor usando `IDVMethodSelector.getIDVMethodList()`.
4. Muestra los métodos y permite que el usuario final elija uno.
5. Notifica al SDK de billetera NFC llamando `IDVMethodSelector.select(idvID:)`.

### Métodos de ID\&V compatibles

El SDK de billetera NFC admite los siguientes métodos de ID\&V:

* `otpBySMS`: Verifica al usuario final con una contraseña de un solo uso (OTP) enviada por SMS.
* `otpByEmail`: Verifica al usuario final con una contraseña de un solo uso (OTP) enviada por correo electrónico.
* `customerService`: Verifica al usuario final a través del servicio de atención al cliente del emisor.
* `webService`: Verifica al usuario final en el sitio web del emisor.
* `appToApp`: Verifica al usuario final en la aplicación del emisor.
  * `with cryptogram`: La aplicación del emisor genera un criptograma del emisor.
  * `without cryptogram`: El emisor activa el token utilizando la API del emisor del TSP.

### Listar y seleccionar un método de ID\&V

Utiliza el siguiente ejemplo para listar los métodos de ID\&V compatibles por el emisor.

```swift
func digitizeCard(_ termsAndConditions: CardDigitizationService.TermsAndConditions) async throws {
    // Paso 1: Inicializa el servicio de digitización de tarjetas.
    let cardDigitizationService = CardDigitizationService()
    let fcmToken: String = "FACY6074293608087656831WRF1234" // Solo ejemplo.

    // Paso 2: Inicia el proceso de digitización de la tarjeta.
    try await cardDigitizationService.digitizeCard(withTNC: termsAndConditions.accept(),
                                                  pushToken: fcmToken,
                                                  language: "en")

    // Paso 3: Suscríbete a eventos de digitización.
    for await state in await cardDigitizationService.eventStream {
        switch state {
        case let .digitizationApprovedWithIDV(_, idvMethodSelector):
            // Flujo amarillo: listar los métodos de ID&V compatibles por el emisor.
            let verificationMethods = idvMethodSelector.getIDVMethodList()
            for method in verificationMethods {
                if method.type == .otpBySMS || method.type == .otpByEmail {
                    /// Método OTP.
                } else if method.type == .webService || method.type == .customerService {
                    /// Método gestionado directamente por el emisor.
                } else if method.type == .appToApp {
                    /// Método app-a-app usando la aplicación del emisor.
                }
            }

        default:
            break
        }
    }
}
```

Usar `IDVMethod.id` al llamar `IDVMethodSelector.select(idvID:)`.

{% code title="Seleccionar un método de ID\&V" %}

```swift
case let .digitizationApprovedWithIDV(digitalCardID, idvMethodSelector):

let verificationMethods = idvMethodSelector.getIDVMethodList()
for method in verificationMethods {
    /// listar métodos para mostrar
}

// ... código para que la billetera capture el método de ID&V seleccionado ...

// seleccionar el método usando el id del método
try await idvMethodSelector.select(idvID: selectedMethod.id)
```

{% endcode %}

### ID\&V con OTP

Si el usuario final selecciona `otpBySMS` o `otpByEmail`, el TSP genera un OTP. Luego el TSP solicita al emisor que envíe el OTP por SMS o correo electrónico.

El SDK de billetera NFC emite `activationRequired` con `PendingCardActivation.State` establecido en `otpNeeded`.

Después de que el usuario final ingrese el OTP, llama a `PendingCardActivation.activate()` con el valor del OTP.

El SDK de billetera NFC aprovisiona el perfil de la tarjeta digital en segundo plano. Después de que el aprovisionamiento se complete, el SDK de billetera NFC emite `activatedByIDV`.

{% hint style="info" %}
**Implementar la interfaz de entrada de OTP**

El SDK de billetera NFC no proporciona una interfaz de entrada de OTP. Implementa y personaliza la interfaz de OTP en tu aplicación de billetera digital.
{% endhint %}

### ID\&V por servicio al cliente o servicio web

Si la aplicación de billetera digital selecciona `webService` o `customerService`, el emisor gestiona la ID\&V directamente. Esto se realiza a través de un portal web del emisor o del servicio de atención al cliente del emisor.

Usar `IDVMethod.value` para obtener la URL del portal web del emisor o el número de teléfono del servicio de atención al cliente del emisor.

Después de que el emisor autentique con éxito al usuario final, el emisor activa el token utilizando la API del emisor del TSP.

Entonces el backend de la billetera NFC envía una `CPS` notificación push a la aplicación de billetera digital.

Procesa el push como se describe en [Procesar notificaciones CPS](/nfc-wallet-sdk-ios/es/get-started/configuration/4.-push-notifications/handle-push-notifications.md#process-cps-notifications-digital-card-operations).

### ID\&V app-a-app

En este método de ID\&V, la aplicación de billetera digital redirige al usuario final a la aplicación del emisor.

El SDK de billetera NFC emite `activationRequired` con `PendingCardActivation.State` establecido en `appToAppSelected`.

Usar `appToAppSelected.requestPayload`, `appToAppSelected.scheme`, y `appToAppSelected.source` para redirigir al usuario final a la aplicación del emisor.

{% hint style="info" %}
**Redirigir a la aplicación del emisor**

El método de ID\&V app-a-app es compatible con Mastercard y Visa. Consulta las especificaciones de Mastercard o Visa para más detalles.
{% endhint %}

Después de que la aplicación del emisor complete la autenticación, redirige al usuario final de regreso a la aplicación de billetera digital.

Hay dos métodos posibles:

* `AppToApp con criptograma`: La aplicación del emisor genera un criptograma del emisor.
* `AppToApp sin criptograma`: El emisor activa el token utilizando la API del emisor del TSP.

Para `AppToApp con criptograma`, llama `PendingCardActivation.resumeAppToAppActivation(withTAV:)` y proporciona el criptograma del emisor. El SDK de billetera NFC aprovisiona el perfil de la tarjeta digital en segundo plano. Después de que el aprovisionamiento se complete, el SDK de billetera NFC emite `activatedByIDV`.

Para `AppToApp sin criptograma`, llama `PendingCardActivation.resumeAppToAppActivation()`. Luego el backend de la billetera NFC envía una `CPS` notificación push a la aplicación de billetera digital. Procesa el push como se describe en [Procesar notificaciones CPS](/nfc-wallet-sdk-ios/es/get-started/configuration/4.-push-notifications/handle-push-notifications.md#process-cps-notifications-digital-card-operations).

### Reanudar la activación

Si el proceso de ID\&V se interrumpe, reanúdalo usando la `PendingCardActivationSession` API.

Esto permite que el usuario final vuelva a seleccionar un método de ID\&V: `otpBySMS`, `otpByEmail`, `customerService`, `webService`, o `appToApp con criptograma`.


---

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

```
GET https://docs.payments.thalescloud.io/nfc-wallet-sdk-ios/es/implement-nfc-wallet/tokenize-a-card/digitize-card/yellow-flow-digitization.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
