> 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

## Descripción general

Esta página explica cómo la aplicación emisora 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 el backend del emisor al llamar a la [API de obtención de perfiles de consumidores 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 emisora, 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 mediante el SDK de 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)
* [Dar de baja 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 de D1 e inicia sesión al usuario final.
2. La aplicación emisora 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 de 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 emisora.

## 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 emisora.

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 asincrónica. La aplicación emisora 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 emisora 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" %}
Trate una lista de perfiles vacía 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 emisora debería esperar los siguientes datos:

* `esquema`: el directorio de red de pago del perfil devuelto.
* `información del consumidor`: los datos actuales del usuario final almacenados en el directorio de Click to Pay.
* `tarjetas`: la lista de tarjetas asociadas con el perfil de Click to Pay para esa red de pago.
* `mensaje`: 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 `mensaje` al usuario final.

Úselo solo para la resolución de problemas.
{% endhint %}

### Gestionar notificaciones push de Click to Pay

A diferencia de la inscripción o la exclusión, recuperar 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 emisora. No se espera ningún evento de finalización asincrónica para la propia recuperación del perfil.

Aún puede mantener activadas las notificaciones push de Click to Pay en la aplicación emisora para otras operaciones, como la inscripción o la exclusión. Para obtener los 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).

## API del SDK

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?) {
            // Obtención exitosa de perfiles de Click to Pay
            val profiles: MutableList<Profile?>? = data?.getProfileList()
            val message: String? = data?.getErrorMessage()
            if (!message.isNullOrEmpty()) {
                // registra el mensaje y quizá vuelva a intentarlo para obtener el perfil completo
            }
            // mostrar todos los perfiles
        }

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

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

{% endtab %}

{% tab title="iOS" %}

```swift
do {
    let profileResult = try await d1Task.clickToPayService().profiles()
    if let message = profileResult.errorMessage {
        // registra el mensaje y quizá vuelva a intentarlo para obtener el perfil completo
    }
    // mostrar todos los perfiles
} catch let error {
    // Gestionar el error.
}
```

{% endtab %}
{% endtabs %}

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

No asuma que cada red de pago devuelve 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.
