> 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/click-to-pay/es/implement-click-to-pay-issuers/retrieve-click-to-pay-profiles/retrieve-profiles-by-d1-sdk.md).

# Recuperar perfiles mediante D1 SDK

## Resumen

Esta página explica cómo la aplicación del emisor puede recuperar perfiles de Click to Pay usando el SDK D1.

La aplicación del emisor llama a `getProfiles` ([Android](https://thalesgroup.github.io/d1sdk-docs/d1-sdk/latest/android/com/thalesgroup/gemalto/d1/clicktopay/ClickToPayService.html#getProfiles\(com.thalesgroup.gemalto.d1.D1Task.Callback\)) / [iOS](https://thalesgroup.github.io/d1sdk-docs/d1-sdk/4.3.0/ios/documentation/d1/clicktopayservice/profiles\(\))) API que activa el mismo comportamiento de recuperación del backend que cuando el backend del emisor llama a la [API de obtención de perfiles de consumidor de Click to Pay](/click-to-pay/es/integrate-the-d1-api/d1-api-summary.md).

Use este flujo del SDK cuando quiera mostrar los datos actuales del perfil de Click to Pay directamente en la aplicación del emisor, por ejemplo antes de permitir que el usuario final actualice los detalles del perfil u opte por excluir una tarjeta.

{% hint style="info" %}
**Enlaces rápidos**

* [Recuperar perfiles de Click to Pay](/click-to-pay/es/implement-click-to-pay-issuers/retrieve-click-to-pay-profiles.md)
* [Inscribir tarjetas con el SDK D1](/click-to-pay/es/implement-click-to-pay-issuers/enroll-cards-in-click-to-pay/enroll-cards-by-d1-sdk.md)
* [Actualizar perfiles de Click to Pay](/click-to-pay/es/implement-click-to-pay-issuers/update-click-to-pay-profiles.md)
* [Excluir mediante el SDK D1](/click-to-pay/es/implement-click-to-pay-issuers/opt-out-cards-from-click-to-pay/opt-out-by-d1-sdk.md)
  {% endhint %}

## Flujo

El flujo de recuperación de perfiles del SDK sigue estos pasos:

1. La aplicación del emisor inicializa el SDK D1 e inicia sesión en el usuario final.
2. La aplicación del emisor llama a la operación de recuperación de perfiles de Click to Pay.
3. D1 envía la solicitud al backend de D1 utilizando el contexto autenticado del usuario final.
4. El backend D1 consulta los directorios de Click to Pay configurados.
5. D1 agrega el resultado y devuelve como máximo un perfil por red de pago a la aplicación del emisor.

## Diagrama de secuencia

El flujo del SDK tiene el mismo comportamiento funcional que el flujo de recuperación de perfiles del backend, pero se inicia directamente desde la aplicación del emisor.

Para el diagrama de secuencia detallado, consulte [Recuperar perfiles de Click to Pay](/click-to-pay/es/implement-click-to-pay-issuers/retrieve-click-to-pay-profiles.md).

### Puntos clave

* Esta es una operación asíncrona. La aplicación del emisor recibe los perfiles actuales directamente en la devolución de llamada o en el resultado devuelto.
* La respuesta contiene una `ProfileResult.Profile` colección. Cada entrada representa un perfil de Click to Pay en un directorio de red de pago.
* Si se configuran varios directorios de Click to Pay, D1 consolida los perfiles en una sola respuesta.
* Si el usuario final existe en D1 pero no está inscrito en Click to Pay, la operación devuelve una lista vacía.
* Use este flujo cuando la aplicación del emisor deba mostrar el estado actual de Click to Pay antes de llamar a [Inscribir tarjetas en Click to Pay](/click-to-pay/es/implement-click-to-pay-issuers/enroll-cards-in-click-to-pay.md) o [Dar de baja tarjetas de Click to Pay](/click-to-pay/es/implement-click-to-pay-issuers/opt-out-cards-from-click-to-pay.md).

{% hint style="info" %}
Considere una lista vacía de perfiles como un resultado funcional válido.

Por lo general, significa que el usuario final es conocido en D1, pero aún no tiene un perfil de Click to Pay.
{% endhint %}

## Manejo de la respuesta

La aplicación del emisor debe esperar los siguientes datos:

* `scheme`: el directorio de red de pago para el perfil devuelto.
* `consumerInfo`: los datos actuales del usuario final almacenados en el directorio de Click to Pay.
* `cards`: la lista de tarjetas asociadas con el perfil de Click to Pay para esa red de pago.
* `message`: texto opcional de solución de problemas devuelto cuando D1 solo puede proporcionar una respuesta parcial.

Use los datos devueltos para:

* mostrar el estado actual de inscripción en Click to Pay,
* mostrar qué tarjetas están disponibles en cada directorio de red de pago,
* rellenar previamente una interfaz de usuario de actualización de perfil, o
* ayudar al usuario final a elegir la siguiente acción correcta.

{% hint style="warning" %}
No analice ni muestre el campo opcional `message` al usuario final.

Úselo solo para solucionar problemas.
{% endhint %}

### Gestionar notificaciones push de Click to Pay

A diferencia de la inscripción o la exclusión, recuperar los perfiles de Click to Pay no requiere un flujo dedicado de notificación push.

Esta operación devuelve el resultado actual directamente a la aplicación del emisor. No se espera ningún evento de finalización asíncrona para la propia recuperación del perfil.

Aún puede mantener habilitadas las notificaciones push de Click to Pay en la aplicación del emisor para otras operaciones, como la inscripción o la exclusión. Para obtener detalles de implementación, consulte [Gestionar notificaciones push de Click to Pay](/click-to-pay/es/implement-click-to-pay-issuers/enroll-cards-in-click-to-pay/enroll-cards-by-d1-sdk.md#handle-click-to-pay-push-notifications).

## SDK API

El `getProfiles` ([Android](https://thalesgroup.github.io/d1sdk-docs/d1-sdk/latest/android/com/thalesgroup/gemalto/d1/clicktopay/ClickToPayService.html#getProfiles\(com.thalesgroup.gemalto.d1.D1Task.Callback\)) / [iOS](https://thalesgroup.github.io/d1sdk-docs/d1-sdk/4.3.0/ios/documentation/d1/clicktopayservice/profiles\(\))) API está disponible a través del SDK D1.

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

```kotlin
fun getProfilesC2Pay(d1Task: D1Task) {
    val callback: D1Task.Callback<ProfileResult?> = object : D1Task.Callback<ProfileResult?> {
        override fun onSuccess(data: ProfileResult?) {
            // Obtener perfiles de Click to Pay con éxito
            val profiles: MutableList<Profile?>? = data?.getProfileList()
            val message: String? = data?.getErrorMessage()
            if (!message.isNullOrEmpty()) {
                // registrar el mensaje y puede volver a intentarlo para obtener el perfil completo
            }
            // mostrar todos los perfiles
        }

        override fun onError(exception: D1Exception) {
            // Consulta la sección D1 SDK Integration – Error Management.
        }
    }

    d1Task.getClickToPayService().getProfiles(
        callback
    )
}
```

{% endtab %}

{% tab title="iOS" %}

```swift
do {
    let profileResult = try await d1Task.clickToPayService().profiles()
    if let message = profileResult.errorMessage {
        // registrar el mensaje y puede volver a intentarlo para obtener el perfil completo
    }
    // mostrar todos los perfiles
} catch let error {
    // Maneja el error.
}
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
Use los datos de perfil devueltos como origen para la interfaz de usuario de la aplicación del emisor.

No asuma que todas las redes de pago devuelven un perfil para el usuario final.
{% endhint %}


---

# 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/click-to-pay/es/implement-click-to-pay-issuers/retrieve-click-to-pay-profiles/retrieve-profiles-by-d1-sdk.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.
