> 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/update-click-to-pay-profiles/update-profiles-by-d1-sdk.md).

# Actualizar perfiles mediante D1 SDK

## Resumen

Esta página explica cómo la aplicación del emisor puede actualizar los datos del perfil de Click to Pay mediante el SDK D1.

La aplicación del emisor puede llamar a `updateConsumer` para actualizar los datos del perfil del usuario final, o `updateCard` para actualizar los datos a nivel de tarjeta de una tarjeta.

Use este flujo del SDK cuando desee que el usuario final revise y actualice los datos de Click to Pay directamente en la aplicación del emisor, mientras D1 orquesta la actualización de backend con los directorios de Click to Pay.

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

* [Actualizar perfiles de Click to Pay](/click-to-pay/es/implement-click-to-pay-issuers/update-click-to-pay-profiles.md)
* [Recuperar perfiles mediante el SDK D1](/click-to-pay/es/implement-click-to-pay-issuers/retrieve-click-to-pay-profiles/retrieve-profiles-by-d1-sdk.md)
* [Inscribir tarjetas mediante el SDK D1](/click-to-pay/es/implement-click-to-pay-issuers/enroll-cards-in-click-to-pay/enroll-cards-by-d1-sdk.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 %}

## Elija la API de SDK adecuada

### `updateConsumer`

Usa `updateConsumer` cuando los datos del consumidor almacenados en Click to Pay deban cambiar.

Proporcione todos los campos del consumidor, incluso si solo cambió un valor.

Si también proporciona una dirección de facturación, D1 actualiza la dirección de facturación de todas las tarjetas vinculadas al perfil del consumidor.

### `updateCard`

Usa `updateCard` cuando solo una tarjeta inscrita deba cambiar.

Esta API actualiza la dirección de facturación de la tarjeta seleccionada y, solo para Visa, el nombre del titular de la tarjeta.

{% hint style="warning" %}
No use estas API del SDK para la renovación o sustitución de una tarjeta.

Use en su lugar el flujo de renovación o sustitución de D1.
{% endhint %}

## Flujo

El flujo de actualización 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 recupera los perfiles actuales de Click to Pay.
3. El usuario final actualiza los datos requeridos en la aplicación del emisor.
4. La aplicación del emisor llama a `updateConsumer` o `updateCard`.
5. D1 envía la solicitud al backend de D1 utilizando el contexto autenticado del usuario final.
6. El backend de D1 actualiza los directorios de Click to Pay pertinentes.
7. D1 devuelve el estado de la operación a la aplicación del emisor.

## Diagrama de secuencia

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

Para los diagramas de secuencia detallados, consulte [Actualizar perfiles de Click to Pay](/click-to-pay/es/implement-click-to-pay-issuers/update-click-to-pay-profiles.md).

### Puntos clave

* Ambas operaciones son asíncronas.
* El resultado inmediato contiene un estado de `EXITOSA` o `PENDIENTE`, además de un `operationID`.
* Usa [Recuperar perfiles mediante el SDK D1](/click-to-pay/es/implement-click-to-pay-issuers/retrieve-click-to-pay-profiles/retrieve-profiles-by-d1-sdk.md) para rellenar previamente la interfaz de usuario de la aplicación del emisor con los datos actuales de Click to Pay.
* Usa `updateConsumer` solo cuando desee actualizar específicamente los datos de Click to Pay.
* Si el backend del emisor almacena el perfil del usuario final en D1, prefiera [Actualizar la información del consumidor](/click-to-pay/es/integrate-the-d1-api/d1-api-reference/inbound-api-to-d1/consumer-api.md) cuando quiera que todos los canales, incluido Click to Pay, permanezcan sincronizados.
* Para Mastercard, cuando proporcione una dirección de facturación, proporcione el objeto de dirección completo.

## Gestionar notificaciones push de Click to Pay

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) en la documentación de inscripción mediante el SDK D1 para conocer los detalles de implementación.

## API del SDK para `updateConsumer`

Usa `updateConsumer` cuando la aplicación del emisor actualiza los datos del perfil del usuario final en Click to Pay.

Esta API actualiza el perfil del usuario final en todos los directorios de Click to Pay pertinentes. Si proporciona una dirección de facturación, D1 también actualiza la dirección de facturación de cada tarjeta inscrita.

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

```kotlin
fun updateConsumerClick2Pay(d1Task: D1Task) {
    // Información del consumidor recibida de la entrada del usuario.
    val consumerInfo = ConsumerInfo(
        "Bella",
        "middle name",
        "Lin",
        "en-US",
        "+65",
        "99998888",
        "email@thalesgroup.com"
    )
    val billingAddress = BillingAddress("CZ")

    val callback: D1Task.Callback<Status?> =
        object : D1Task.Callback<Status?> {
            override fun onSuccess(data: Status?) {
                // Actualización del consumidor a Click to Pay correcta
                val status: Status? = data
                val operationID = data?.operationID
            }

            override fun onError(exception: D1Exception) {
                // Consulte la sección Integración del SDK D1 – Gestión de errores.
            }
        }
    d1Task.getClickToPayService().updateConsumer(
        consumerInfo,
        billingAddress,
        callback
    )
}
```

{% endtab %}

{% tab title="iOS" %}

```swift
func updateConsumerClick2Pay(d1Task: D1Task) {
    do {
        // Información del consumidor recibida de la entrada del usuario.
        let consumerInfo = ConsumerInfo(firstName: "Bella",
                                        middleName: nil,
                                        lastName: "Lin",
                                        language: "en-US",
                                        phoneNumberCountryCode: "+65",
                                        phoneNumber: "99998888",
                                        email: "email@thalesgroup.com")
        let billingAddress = BillingAddress(countryCode: "CZ")
        let status = try await d1Task.clickToPayService().updateConsumer(consumerInfo: consumerInfo,
                                                                         billingAddress: billingAddress)
        switch status {
        case .pending(operationID: let operationID):
            // Gestionar el escenario pendiente
            print(operationID)
        case .successful(operationID: let operationID):
            // Gestionar el escenario correcto
            print(operationID)
        }
    } catch let error {
        // Gestionar el error.
    }
}
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
Envíe siempre el conjunto completo de datos del consumidor.

No envíe solo el campo que cambió.
{% endhint %}

## API del SDK para `updateCard`

Usa `updateCard` cuando la aplicación del emisor actualiza una tarjeta inscrita en Click to Pay.

Esta API actualiza solo los datos a nivel de tarjeta. Úsela para la dirección de facturación, o para el nombre del titular de la tarjeta cuando la tarjeta pertenezca a Visa.

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

```kotlin
fun updateCardClickToPay(d1Task: D1Task, cardID: String, billingAddress: BillingAddress) {

    val callback: D1Task.Callback<Status?> =
        object : D1Task.Callback<Status?> {
            override fun onSuccess(data: Status?) {
                // Actualización de tarjeta a Click to Pay correcta
                val status: Status? = data
                val operationID = data?.operationID
            }

            override fun onError(exception: D1Exception) {
                // Consulte la sección Integración del SDK D1 – Gestión de errores.
            }
        }
    d1Task.getClickToPayService().updateCard(
        cardID,
        "Bella Lin",
        billingAddress,
        callback
    )
}
```

{% endtab %}

{% tab title="iOS" %}

```swift
do {
    let cardID = ""
    let name = "Bella Lin"
    let billingAddress = BillingAddress(countryCode: "CZ")
    let status = try await d1Task.clickToPayService().updateCard(cardID,
                                                                 name: name,
                                                                 billingAddress: billingAddress)
    switch status {
    case .pending(operationID: let operationID):
        // Gestionar el escenario pendiente
        print(operationID)
    case .successful(operationID: let operationID):
        // Gestionar el escenario correcto
        print(operationID)
    }
} catch let error {
    // Gestionar el error.
}
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
Usa `updateCard` solo para datos adjuntos a una sola tarjeta.

Si cambia el perfil del usuario final, use `updateConsumer` en su lugar.
{% 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/update-click-to-pay-profiles/update-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.
