> 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/push-provisioning/es/implement-push-provisioning/implement-push-to-digital-wallets/get-the-card-digitization-state.md).

# Obtener el estado de digitalización de la tarjeta

## Obtener el estado de digitalización de la tarjeta

Usa esta guía para determinar si una tarjeta ya está digitalizada en una billetera específica del dispositivo. La aplicación del emisor usa este estado para decidir si mostrar **Agregar a la billetera** o **Activar tarjeta**, o para ocultar ambas.

Normalmente llamas a esta API cuando:

* la aplicación del emisor se inicia, o
* el usuario final abre una pantalla de detalles de la tarjeta.

Para el flujo general de aprovisionamiento push, consulta [Implementar push en billeteras digitales](/push-provisioning/es/implement-push-provisioning/implement-push-to-digital-wallets.md).

### Descripción general

La aplicación del emisor usa el SDK D1 para comprobar el estado de tokenización de la tarjeta en el dispositivo móvil. Según el estado devuelto, la aplicación del emisor actualiza la interfaz de usuario:

* `DIGITALIZADA` – La tarjeta ya está tokenizada en la billetera de este dispositivo. Oculta **Agregar a la billetera** y **Activar tarjeta**.
* `NO_DIGITALIZADA` – La tarjeta no está tokenizada. Muestra **Agregar a la billetera**.
* `PENDIENTE_IDV` – La tarjeta digital está creada, pero pendiente de ID\&V. Muestra **Activar tarjeta** si se admite la autenticación en la aplicación.

{% hint style="warning" %}
**Precaución**

* Si la tarjeta todavía aparece como `NO_DIGITALIZADA` después de la digitalización, comprueba que la aplicación del emisor esté configurada correctamente en el portal TSP.
* Para Samsung Pay, algunos emisores deben registrar varios nombres de emisor en el portal. Asegúrate de que el nombre del emisor usado en la API coincida con los nombres registrados en el portal. Solo se devuelven coincidencias exactas. Consulta la [FAQ de Samsung](https://developer.samsung.com/pay/native/sdk-faq.html) para obtener consejos de solución de problemas.
  {% endhint %}

### Flujo

<figure><img src="/files/c34e1ab06c6ae4201de9908d029cf71f64d0f137" alt=""><figcaption></figcaption></figure>

#### Diagrama de secuencia

**Requisitos previos**

* La cuenta del consumidor y la tarjeta se registraron en D1
* El SDK está inicializado correctamente
* La app del emisor llamó a la API de inicio de sesión del SDK D1

<figure><img src="/files/21712424970dc3884b52b1db3231b0fdf76171c1" alt="High-level sequence for getting the card digitization state"><figcaption><p>Secuencia de alto nivel para recuperar el estado de digitalización de la tarjeta desde la billetera.</p></figcaption></figure>

### Integración de la plataforma

{% tabs %}
{% tab title="Android" %}
Para Android 2.4.0 y posteriores, el SDK D1 expone la `D1PushWallet.getCardDigitizationState()` API para comprobar el estado de tokenización de la tarjeta para una billetera específica (Google Pay o Samsung Pay).

Los estados posibles son:

* `DIGITALIZADA`\
  La tarjeta ya ha sido tokenizada. No se requiere ningún mensaje ni acción.
* `NO_DIGITALIZADA`\
  Muestra un **Agregar a Google/Samsung Pay** botón. Consulta las [directrices de marca](https://developers.google.com/pay/issuers/apis/push-provisioning/android/branding-guidelines?hl=en) para obtener más información. El siguiente paso es enviar la tarjeta a la billetera, como se explica en [Enviar a la billetera digital](/push-provisioning/es/implement-push-provisioning/implement-push-to-digital-wallets/push-to-the-digital-wallet.md).
* `PENDIENTE_IDV`\
  Muestra un **Activar tarjeta** botón si se admite la autenticación de la aplicación del emisor. Después de una autenticación correcta, llama a `activateDigitalCard()` para activar la tarjeta digital.

Consulta la referencia del SDK D1 para ver la firma completa de la API.

```kotlin
fun checkCardDigitizationState_v2_4_0(d1Task: D1Task, cardID: String) {
    val d1PushWallet = d1Task.d1PushWallet
    val wallet = OEMPayType.GOOGLE_PAY // puede ser SAMSUNG_PAY

    val callback: D1Task.Callback<CardDigitizationState> = object : D1Task.Callback<CardDigitizationState> {

        override fun onSuccess(state: CardDigitizationState) {
            // Actualiza la interfaz de usuario según el valor del estado.

            // Oculta el botón "Agregar a Google/Samsung Pay".
            // Oculta el botón "Activar tu tarjeta".
            when (state) {
                NOT_DIGITIZED -> {
                    // Muestra el botón "Agregar a Google/Samsung Pay".
                }
                PENDING_IDV -> {
                    // 1. Muestra el botón "Activar tu tarjeta".
                    // 2. Autentica al usuario final.
                    // 3. Realiza la activación: d1PushWallet.activateDigitalCard(cardID, wallet, callback)
                }
                DIGITIZED -> {
                    // Oculta el botón "Agregar a Google/Samsung Pay".
                }
                else -> {
                    //No hace nada.
                }
            }
        }

        override fun onError(exception: D1Exception) {
            // Consulta la sección Integración del SDK D1 – Gestión de errores.
        }
    }
    d1PushWallet.getCardDigitizationState(cardID, wallet, callback)
}
```

{% endtab %}

{% tab title="iOS" %}
En iOS, el SDK D1 devuelve un `CardDigitizationResult` objeto que incluye:

* el `CardDigitizationState`y
* opcionales [`PKPass`](https://developer.apple.com/documentation/passkit/pkpass) objetos (`localPKPass` y `remotePKPass`) que se pueden usar para mostrar información específica del dispositivo, como `deviceName`.

Los estados posibles son:

* `digitalizada`\
  La tarjeta ya está tokenizada. Oculta **Agregar a Apple Wallet**.
* `notDigitized`\
  Muestra un [`PKAddPassButton`](https://developer.apple.com/documentation/passkit/pkaddpassbutton). Este estado se devuelve cuando al menos un dispositivo (por ejemplo, un iPhone o un Apple Watch emparejado) aún no está tokenizado.
* `pendingIDVLocal` / `pendingIDVRemote`\
  La tokenización está pendiente de ID\&V para el teléfono (`pendingIDVLocal`) o el reloj (`pendingIDVRemote`). Muestra un botón apropiado **Activar en tu teléfono/reloj** botón, autentica al usuario final en la aplicación del emisor y luego llama a `activateDigitalCard()`.

```swift
import PassKit

let digitizeCardButton: PKAddPassButton = /* botón existente "Agregar a Wallet" en tu interfaz de usuario */
let activateCardButton: UIButton = /* botón existente de "Activar" en tu interfaz de usuario */
let cardID = "" // Obtenido por la aplicación del emisor, por ejemplo desde tu backend

d1Task.cardDigitizationState(cardID) { result, error in
    if let error = error {
        // Manejar el error
    } else if let result = result {
        // Actualizar la interfaz de usuario según el estado
        switch result.state {
        case .pendingIDVLocal:
            activateCardButton.isHidden = false
            activateCardButton.setTitle("Activar en tu teléfono \(result.localPKPass?.deviceName ?? \"\")", for: .normal)
            digitizeCardButton.isHidden = true
            // Después de autenticar al usuario final, llama a: d1Task.activateDigitalCard(cardID)

        case .pendingIDVRemote:
            activateCardButton.isHidden = false
            activateCardButton.setTitle("Activar en tu reloj \(result.remotePKPass?.deviceName ?? \"\")", for: .normal)
            digitizeCardButton.isHidden = true
            // Después de autenticar al usuario final, llama a: d1Task.activateDigitalCard(cardID)

        case .notDigitized:
            activateCardButton.isHidden = true
            digitizeCardButton.isHidden = false

        case .digitized:
            activateCardButton.isHidden = true
            digitizeCardButton.isHidden = true
        }
    }
}
```

{% endtab %}
{% endtabs %}

Para acceder a toda la SDK D1, consulta [la referencia de la API](/push-provisioning/es/integrate-the-d1-sdk/api-reference.md).


---

# 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/push-provisioning/es/implement-push-provisioning/implement-push-to-digital-wallets/get-the-card-digitization-state.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.
