> 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/manage-digital-cards/display-digital-cards.md).

# Mostrar tarjetas digitales

## Descripción general

Después de **Tokenización**, su **aplicación de billetera digital** debería mostrar al **usuario final** sus tarjetas digitales.

Proporcione una vista de lista y una vista de detalles. Use el estado de la tarjeta, la imagen de la tarjeta y los metadatos para controlar la interfaz de usuario.

## Integración del SDK

### Recuperar la lista de tarjetas

Después de **Tokenización** se completa, el **aplicación de billetera digital** puede recuperar y mostrar tarjetas digitales.

Usar `DigitalCardManager.cardList` para recuperar la lista de todas las tarjetas digitalizadas.

<pre class="language-swift" data-title="Listar tarjetas digitales"><code class="lang-swift">func retrieveCardList() async {
  let manager = DigitalCardManager()
  do {
    let cardList = try await manager.cardList
    // Use cardList para poblar su interfaz de usuario.
  } catch {
<strong>    // Manejar errores.
</strong>  }
}
</code></pre>

### Recuperar una tarjeta digital

Puede recuperar una `DigitalCard` de `DigitalCardManager` de varias maneras:

{% code title="Obtener una tarjeta digital" %}

```swift
func getDigitalCards() async throws {
  let manager = DigitalCardManager()

  // Obtenga la lista completa una vez y luego acceda a los elementos localmente.
  let cardList = try await manager.cardList

  // Obtenga la tarjeta designada como tarjeta predeterminada.
  let defaultCard = try await manager.defaultCard

  // Obtenga la primera tarjeta de la lista.
  let firstCard = cardList.first

  // Obtenga la última tarjeta de la lista.
  let lastCard = cardList.last

  // Recuperar la tarjeta en un índice específico.
  // Acceder a un índice fuera de rango provocará un fallo, así que valide primero.
  let index = 0
  guard cardList.indices.contains(index) else { return }
  let cardAtIndex = cardList[index]

  // Recupere la última tarjeta usando el recuento de la lista.
  let cardCount = cardList.count
  let lastCardByIndex = cardList[cardCount - 1]

  // Recupere la tarjeta con un digitalCardID específico.
  let digitalCardID = ""
  let specificCard = await manager.digitalCard(forID: digitalCardID)
}
```

{% endcode %}

### Obtener detalles de la tarjeta

Una `DigitalCard` representa una tarjeta digitalizada. Expone los datos necesarios para construir su interfaz de usuario y administrar el ciclo de vida de la tarjeta:

* `DigitalCard.State`: Estado de la tarjeta digital
* `DigitalCard.CardArt`: Datos de la imagen de la tarjeta
* `DigitalCard.CardMetadata`: Metadatos de la tarjeta, incluidos:
  * Últimos cuatro dígitos del PAN
  * Últimos cuatro dígitos del token
  * Fecha de vencimiento del PAN
* `DigitalCard.PaymentKeyInfo`: Información de la clave de pago, incluida:
  * Número de pagos restantes
  * Si se requiere recarga
  * Tipo de clave de pago
  * Fecha/hora de vencimiento de la clave de pago
* `DigitalCard.Details`: Esquema y capacidades de la tarjeta, incluidos:
  * `scheme`: Esquema de pago (Visa, Mastercard o PURE)
  * `paymentTypesSupported`: Canales de pago compatibles
* `DigitalCard.paymentAccountReference`: Referencia de cuenta de pago (PAR) para la tarjeta principal sin contacto

El siguiente ejemplo muestra cómo recuperar los detalles de una tarjeta digital:

{% code title="Obtener detalles de la tarjeta digital" %}

```swift
func retrieveCardDetails(digitalCard: DigitalCard) async {
  do {
    // estados de la tarjeta: .active, .suspended, .inactive, etc.
    // las tarjetas .active se pueden usar para pagar
    // las tarjetas .suspended requieren activación para poder realizar pagos
    // las tarjetas .inactive implican que el ID&V inicial no se ha completado.
    // Use pendingActivationSession para reanudar el ID&V.
    // otros casos, la tarjeta no está en uso
    let cardState = try await digitalCard.state

    // recuperación de la imagen de la tarjeta
    let cardArt = try await digitalCard.cardArt
    let bitmap = try await cardArt.bitmap(forArtType: .cardBackgroundCombined)
    // Tipos de imagen: .bankLogo, .schemeLogo, .cardBackground, .cardBackgroundCombined, .coBrandLogo, .cardIcon.

    // recuperación de metadatos de la tarjeta
    let cardMetadata = try await digitalCard.cardMetadata
    let panLastDigits = cardMetadata.panLastDigits
    let panExpiry = cardMetadata.panExpiry

    // información de la clave de pago de la tarjeta
    let paymentKeyInfo = try await digitalCard.paymentKeyInfo
    let numberOfPaymentsLeft = paymentKeyInfo.numberOfPaymentsLeft
    let needsReplenishment = paymentKeyInfo.needsReplenishment

    // detalles de la tarjeta
    let cardDetail = try await digitalCard.details
    let scheme = cardDetail.scheme
    let supportedPaymentTypes = cardDetail.paymentTypesSupported

    // Referencia de cuenta de pago (PAR) para el perfil principal de la tarjeta
    let paymentAccountReference = digitalCard.paymentAccountReference
    
  } catch {
    // Manejar errores.
  }
}
```

{% endcode %}

### Obtener detalles adicionales de la tarjeta

Si la tarjeta es de doble marca, puede recuperar propiedades adicionales de `digitalCard`.

* `DigitalCard.hasAuxiliaryScheme`: Devuelve `true` si la tarjeta tiene un esquema auxiliar
* `DigitalCard.auxiliaryPaymentAccountReference`: Referencia de cuenta de pago (PAR) para la tarjeta auxiliar sin contacto

Si la tarjeta es de doble marca, también puede leer:

* `DigitalCard.Details.auxiliaryScheme`: Esquema de pago auxiliar
* `DigitalCard.CardMetadata.auxiliaryTokenLastDigits`: Últimos cuatro dígitos del token auxiliar
* `DigitalCard.CardMetadata.auxiliaryTokenExpiry`: Fecha de vencimiento del token auxiliar
* `DigitalCard.paymentKeyInfo.auxiliaryNumberOfPaymentsLeft`: Pagos restantes para el esquema auxiliar

Si la tarjeta no es de doble marca, estas propiedades devuelven `nil`.

{% code title="Obtener detalles del esquema auxiliar" %}

```swift
// Detalles adicionales de la tarjeta de doble marca
let details = try await digitalCard.details
let cardMetadata = try await digitalCard.cardMetadata
let paymentKeyInfo = try await digitalCard.paymentKeyInfo

if digitalCard.hasAuxiliaryScheme {
  let auxScheme = details.auxiliaryScheme

  let auxTokenLastDigits = cardMetadata.auxiliaryTokenLastDigits
  let auxTokenExpiry = cardMetadata.auxiliaryTokenExpiry

  let auxNumPaymentsLeft = paymentKeyInfo.auxiliaryNumberOfPaymentsLeft

  // Referencia de cuenta de pago (PAR) para el perfil de la tarjeta auxiliar
  let auxPaymentAccountReference = digitalCard.auxiliaryPaymentAccountReference
  
  // Estos valores son `nil` si la tarjeta no es de doble marca.
}
```

{% endcode %}


---

# 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/manage-digital-cards/display-digital-cards.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.
