> 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

## Descripción general

Esta página explica cómo la aplicación del emisor puede actualizar los datos del perfil de Click to Pay mediante el SDK de 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 sola tarjeta.

Utilice este flujo del SDK cuando quiera 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 de 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 de D1](/click-to-pay/es/implement-click-to-pay-issuers/enroll-cards-in-click-to-pay/enroll-cards-by-d1-sdk.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 %}

## Elija la API de SDK adecuada

### `updateConsumer`

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

Proporcione todos los campos del consumidor, aunque solo haya cambiado 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`

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

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 tarjetas.

En su lugar, utilice 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 de D1 e inicia sesión al 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 relevantes de Click to Pay.
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 del 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 asincrónicas.
* El resultado inmediato contiene un estado de `SUCCESSFUL` o `PENDING`, además de un `operationID`.
* Use [Recuperar perfiles mediante el SDK de D1](/click-to-pay/es/implement-click-to-pay-issuers/retrieve-click-to-pay-profiles/retrieve-profiles-by-d1-sdk.md) para completar previamente la interfaz de usuario de la aplicación del emisor con los datos actuales de Click to Pay.
* Use `updateConsumer` solo cuando quiera actualizar datos de Click to Pay específicamente.
* Si el backend del emisor almacena el perfil del usuario final en D1, prefiera [Actualizar 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, se mantengan 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 de D1 para ver los detalles de implementación.

## API del SDK para `updateConsumer`

Use `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 relevantes de Click to Pay. 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",
        "segundo nombre",
        "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 realizada con éxito
                val status: Status? = data
                val operationID = data?.operationID
            }

            override fun onError(exception: D1Exception) {
                // Consulte la sección Integración del SDK de 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 exitoso
            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 modificado.
{% endhint %}

## API del SDK para `updateCard`

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

Esta API actualiza solo 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 la tarjeta a Click to Pay realizada con éxito
                val status: Status? = data
                val operationID = data?.operationID
            }

            override fun onError(exception: D1Exception) {
                // Consulte la sección Integración del SDK de 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 exitoso
        print(operationID)
    }
} catch let error {
    // Gestionar el error.
}
```

{% endtab %}
{% endtabs %}

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

Si cambia el perfil del usuario final, utilice `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.
