> 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 en el que el backend del emisor aprueba la tokenización con autenticación reforzada (ID\&V).

Este flujo es común cuando el SDK de NFC Wallet se integra en una aplicación de billetera digital que tokeniza tarjetas de múltiples emisores.

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

## Experiencia de usuario

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

## Diagrama de secuencia

<figure><img src="https://1114080274-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6bUtiXdSFHu8lmOj8A0X%2Fuploads%2F2lX9qITD4p6TClNmtMEF%2FSequence%20Diagram%20-%20Implement%20the%20yellow%20flow.svg?alt=media&amp;token=0806df81-b625-4ec9-bba9-871a9b72df11" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1114080274-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6bUtiXdSFHu8lmOj8A0X%2Fuploads%2FT7GRo3jYJYjsPxSbSGhB%2FSequence%20Diagram%20-%20Implement%20the%20yellow%20flow%20-%202.svg?alt=media&amp;token=dbea1d7f-e92e-4e4a-91a1-efa3ffada82a" alt=""><figcaption><p>Flujo amarillo: seleccione un método ID&#x26;V después de <code>digitizationApprovedWithIDV</code>.</p></figcaption></figure>

## Integrar el SDK

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

1. Llama a `CardDigitizationService.digitizeCard()`.
2. Si la tokenización se aprueba con condiciones (flujo amarillo):
   * El SDK de NFC Wallet emite `digitizationApprovedWithIDV`.
3. Obtenga los métodos ID\&V admitidos por el emisor usando `IDVMethodSelector.getIDVMethodList()`.
4. Muestre los métodos y permita que el usuario final elija uno.
5. Notifique al SDK de NFC Wallet llamando a `IDVMethodSelector.select(idvID:)`.

### Métodos ID\&V admitidos

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

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

### Liste y seleccione un método ID\&V

Use el siguiente ejemplo para listar los métodos ID\&V admitidos por el emisor.

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

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

    // Paso 3: Suscríbase a los eventos de digitalización.
    for await state in await cardDigitizationService.eventStream {
        switch state {
        case let .digitizationApprovedWithIDV(_, idvMethodSelector):
            // Flujo amarillo: liste los métodos ID&V admitidos 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 de app a app usando la aplicación del emisor.
                }
            }

        default:
            break
        }
    }
}
```

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

{% code title="Seleccione un método 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 ID&V seleccionado ...

// seleccione 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 una OTP. Luego el TSP solicita al emisor que envíe la OTP por SMS o correo electrónico.

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

Después de que el usuario final introduzca la OTP, llame a `PendingCardActivation.activate()` con el valor de la OTP.

El SDK de NFC Wallet aprovisiona el perfil de la tarjeta digital en segundo plano. Cuando finaliza el aprovisionamiento, el SDK de NFC Wallet emite `activatedByIDV`.

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

El SDK de NFC Wallet no proporciona una interfaz de entrada de OTP. Implemente y personalice la interfaz de OTP en su aplicación de billetera digital.
{% endhint %}

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

Si la aplicación de billetera digital selecciona `webService` o `customerService`, el emisor gestiona ID\&V directamente. Esto se hace 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 correctamente al usuario final, el emisor activa el token usando la API del emisor de TSP.

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

Procese 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 de app a app

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

El SDK de NFC Wallet 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 ID\&V de app a app es compatible con Mastercard y Visa. Consulte las especificaciones de Mastercard o Visa para obtener más detalles.
{% endhint %}

Después de que la aplicación del emisor complete la autenticación, redirige al usuario final de vuelta 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 usando la API del emisor de TSP.

Para `AppToApp con criptograma`, llame a `PendingCardActivation.resumeAppToAppActivation(withTAV:)` y proporcione el criptograma del emisor. El SDK de NFC Wallet aprovisiona el perfil de la tarjeta digital en segundo plano. Cuando finaliza el aprovisionamiento, el SDK de NFC Wallet emite `activatedByIDV`.

Para `AppToApp sin criptograma`, llame a `PendingCardActivation.resumeAppToAppActivation()`. Luego, el backend de NFC Wallet envía una `CPS` notificación push a la aplicación de billetera digital. Procese 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 activación

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

Esto permite que el usuario final vuelva a seleccionar un método 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, and the optional `goal` 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>&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.
