> 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-scheme/push-to-token-requestors-token-connect.md).

# Enviar a solicitantes de tokens (Token Connect)

## Enviar a solicitantes de token (Token Connect)

Use esta guía para enviar una tarjeta desde la aplicación emisora a un **solicitante de token** usando **Mastercard MDES Token Connect**.

Los solicitantes de token pueden incluir comerciantes de comercio electrónico y proveedores de billeteras.

Para la documentación del producto Mastercard, consulte [Descripción general de MDES Token Connect](https://developer.mastercard.com/mdes-token-connect/documentation/#overview).

### Descripción general

Con Token Connect, la aplicación emisora:

1. Recupera la lista de solicitantes de token elegibles para una tarjeta.
2. Solicita una **URL de envío** para el solicitante de token seleccionado.
3. Redirige al usuario final a la experiencia del solicitante de token para completar **la tokenización**.

{% hint style="info" %}
**Requisitos previos**

* El usuario final está autenticado en la aplicación emisora.
* La aplicación emisora ha inicializado el SDK de D1 y ha completado el inicio de sesión.
* El consumidor y la tarjeta están registrados en D1.
  {% endhint %}

### Experiencia del usuario final

El siguiente diagrama ilustra un flujo representativo de Token Connect. El mismo patrón se aplica a cualquier solicitante de token compatible con Token Connect.

<figure><img src="/files/fcef3164eecac2f1465662a231340c49e8b54155" alt=""><figcaption><p>Ejemplo de experiencia del usuario final para enviar una tarjeta a un solicitante de token usando Token Connect.</p></figcaption></figure>

### Flujo

#### Recuperar los solicitantes de token elegibles

<figure><img src="/files/d0e5f0d16328458e1f0ad53473a802edaef377ed" alt=""><figcaption><p>Recupere los solicitantes de token elegibles para una tarjeta.</p></figcaption></figure>

#### Enviar a un solicitante de token

<figure><img src="/files/27e91280a77fb41dda99cbea931be53e2d9e74f3" alt=""><figcaption><p>Genere una URL de envío para el solicitante de token seleccionado y redirija al usuario final.</p></figcaption></figure>

### Diagramas de secuencia

{% stepper %}
{% step %}

#### Obtener solicitantes de token elegibles

La aplicación emisora usa el SDK de D1 para recuperar la lista de solicitantes de token que admiten Token Connect para una tarjeta determinada.

Cada solicitante de token incluye:

* Un nombre para mostrar.
* Un logotipo de marca.
* Uno o más métodos de aprovisionamiento compatibles (por ejemplo, Android, iOS o web).

<figure><img src="/files/3128024cfd66d32751a99b23f7300ccf48e04871" alt=""><figcaption><p>Ejemplo de interfaz de usuario de la aplicación emisora para seleccionar un solicitante de token elegible.</p></figcaption></figure>

{% tabs %}
{% tab title="Android" %}

```kotlin
fun getEligibleTokenRequestors(d1Task: D1Task, cardID: String) {
    val callback: D1Task.Callback<List<TokenRequestor>> = object : D1Task.Callback<List<TokenRequestor>> {

        override fun onSuccess(tkRequestorList: List<TokenRequestor>) {
            // Maneja el objeto tkRequestorList del servidor.
            // Ejemplo para mostrarlo en la interfaz de usuario como en la imagen de ejemplo anterior.
            for (tkRequestor : TokenRequestor in tkRequestorList) {
                val tkRequestorID : String = tkRequestor.id
                val tkRequestorName : String = tkRequestor.name
                val tkRequestorAssets : MutableList<AssetContent>? = tkRequestor.assets // Logotipo del solicitante de token.
                val tkrProvisioningMethods : MutableList<ProvisioningMethod> = tkRequestor.provisioningMethods // Métodos de aprovisionamiento del solicitante de token.
            }
        }

        override fun onError(exception: D1Exception) {
            // Consulte la sección Integración del SDK de D1 – Gestión de errores.
        }
    }

    d1Task.getTokenRequestorList(cardID, callback)
}
```

{% endtab %}

{% tab title="iOS" %}

```swift
let cardID = "" // Obtenido, por ejemplo, de su backend

d1Task.tokenRequestorList(cardID) { tokenRequestors, error in
    if let error = error {
        // Consulte la sección de gestión de errores de la integración del SDK de D1
    } else if let tokenRequestors = tokenRequestors {
        // Mostrar tokenRequestors en la interfaz de usuario
        for tokenRequestor in tokenRequestors {
            print("ID: \(tokenRequestor.id ?? \"\")")
            print("Name: \(tokenRequestor.name ?? \"\")")

            if let asset = tokenRequestor.asset?.first,
               let imageData = Data(base64Encoded: asset.encodedData) {
                let image = UIImage(data: imageData)
                _ = image
            }
        }
    }
}
```

{% endtab %}
{% endtabs %}
{% endstep %}

{% step %}

#### Enviar una tarjeta a un solicitante de token

Después de que el usuario final seleccione un solicitante de token, la aplicación emisora solicita una **URL de envío** llamándola `addDigitalCardToScheme()`.

La aplicación emisora redirige entonces al usuario final al solicitante de token usando la URL de envío devuelta.

<figure><img src="/files/8f942510bcdd0e025f3f653ff658c0ae24def70e" alt=""><figcaption><p>Ejemplo de interfaz de usuario de la aplicación emisora para iniciar el flujo de envío de Token Connect.</p></figcaption></figure>

{% tabs %}
{% tab title="Android" %}

```kotlin
//cardID: Recibido con la API getConsumerDetails.
//tokenRequestor: Seleccionado por el usuario.
fun pushCardToTokenRequestor(d1Task: D1Task, cardID: String, tokenRequestor: TokenRequestor) {
    val appURL = "d1demoapp://com.thalesgroup.gemalto.d1.validation/PushToSchemeResult" // La URL personalizada de la aplicación emisora a la que el solicitante de token llama de vuelta al completar el flujo de digitalización.
    val tcsAccepted = true

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

        override fun onSuccess(pushUrl: String) {
            // Inicia la aplicación del solicitante de token.
            getActivity().startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(pushUrl)))
        }

        override fun onError(exception: D1Exception) {
            // Consulte la sección Integración del SDK de D1 – Gestión de errores.
        }
    }

    // Para Click to Pay, el valor del atributo Mastercard tokenRequestor.id es 50123197928.
    d1Task.addDigitalCardToScheme(
        cardID,
        tokenRequestor,
        appURL,
        tcsAccepted,
        callback
    )
}
```

{% endtab %}

{% tab title="iOS" %}

```swift
let cardID = "" // Obtenido, por ejemplo, de su backend

// La URL de enlace profundo de la aplicación emisora a la que el solicitante de token llama después del flujo de tokenización.
let appURL = "test://sample.com.demo/tokenRequestorsPage"

// tokenRequestor es seleccionado por el usuario final y devuelto por tokenRequestorList().

d1Task.addDigitalCardToScheme(
    cardID,
    tokenRequestor: tokenRequestor,
    appURL: appURL,
    termsAndConditionsAccepted: true
) { provisionString, error in
    if let error = error {
        // Consulte la sección de gestión de errores de la integración del SDK de D1
    } else if let provisionString = provisionString,
              let pushUrl = URL(string: provisionString),
              UIApplication.shared.canOpenURL(pushUrl) {
        UIApplication.shared.open(pushUrl)
    }
}
```

{% endtab %}
{% endtabs %}

**Qué sucede después**

* El SDK de D1 devuelve una URL de envío.
* La aplicación emisora abre la URL de envío en la aplicación del solicitante de token o en una vista web.
* El solicitante de token realiza el flujo de tokenización.
* Cuando el flujo se completa, el solicitante de token redirige al usuario final de vuelta a la aplicación emisora usando el `appURL`.
  {% endstep %}
  {% endstepper %}

{% hint style="info" %}

* Para configurar `appURL`, implemente enlaces profundos en su aplicación emisora: [Android](https://developer.android.com/training/app-links/deep-linking), [iOS](https://developer.apple.com/documentation/xcode/defining-a-custom-url-scheme-for-your-app).
* El solicitante de token devuelve el resultado de la tokenización a la aplicación emisora. Para obtener más detalles, consulte la guía de Mastercard: [Recibir respuesta del solicitante de token](https://developer.mastercard.com/mdes-token-connect/documentation/tutorials-and-guides/issuer-implementation-guide/#receive-response-from-token-requestor).
  {% endhint %}

{% hint style="warning" %}
Mastercard **activación simplificada** no es compatible.
{% endhint %}

Para tener acceso completo al SDK de D1, consulte [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:

```
GET https://docs.payments.thalescloud.io/push-provisioning/es/implement-push-provisioning/implement-push-to-scheme/push-to-token-requestors-token-connect.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.
