> 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/enroll-cards-in-click-to-pay/enroll-cards-by-d1-sdk.md).

# Inscribir tarjetas mediante D1 SDK

## Resumen

Esta página explica cómo la aplicación del emisor puede inscribir una tarjeta y a su usuario final en Click to Pay utilizando el SDK D1.

La aplicación del emisor llama a `inscribir`, lo que activa la misma operación backend de inscripción en Click to Pay que la llamada del backend del emisor al [API de D1](/click-to-pay/es/integrate-the-d1-api/d1-api-summary.md).

Use este flujo del SDK cuando desee que el usuario final inicie la inscripción en Click to Pay directamente en la interfaz de usuario de la aplicación del emisor mientras D1 orquesta las interacciones de backend con los directorios de Click to Pay y la red de pago.

## Flujo

El siguiente diagrama ilustra los pasos principales del flujo de inscripción en Click to Pay del SDK:

<figure><img src="/files/e9a96043264373569902f9c2c2fe5c2cb8365806" alt=""><figcaption></figcaption></figure>

## Diagrama de secuencia

Desde D1 SDK 4.2.0, con la incorporación del flujo de backend, la `inscribir` ([Android](https://thalesgroup.github.io/d1sdk-docs/d1-sdk/latest/android/com/thalesgroup/gemalto/d1/clicktopay/ClickToPayService.html#enrol\(java.lang.String,com.thalesgroup.gemalto.d1.clicktopay.ConsumerInfo,java.lang.String,com.thalesgroup.gemalto.d1.clicktopay.BillingAddress,com.thalesgroup.gemalto.d1.D1Task.Callback\)) / [iOS](https://thalesgroup.github.io/d1sdk-docs/d1-sdk/4.3.0/ios/documentation/d1/clicktopayservice/enrol\(_:consumerinfo:name:billingaddress:\))) API también está disponible a través de [SDK D1](/click-to-pay/es/integrate-the-d1-sdk/api-reference.md).

### Prerrequisitos

El flujo del SDK tiene los mismos prerrequisitos y limitaciones que el flujo de backend. Consulte [requisitos previos](/click-to-pay/es/implement-click-to-pay-issuers/enroll-cards-in-click-to-pay.md#prerequisites).

El siguiente diagrama de secuencia muestra el flujo iniciado desde la aplicación del emisor:

<figure><img src="/files/1738d365d3ee4b74a735cc383bd8ef70bf2e8497" alt=""><figcaption></figcaption></figure>

### Puntos clave

* La aplicación del emisor debe proporcionar la información del consumidor. Consulte `ConsumerInfo` ([API del SDK](/click-to-pay/es/integrate-the-d1-sdk/api-reference.md)).
* La inscripción es una operación asincrónica. El resultado final puede recuperarse mediante:
  * usando el estado de devolución de llamada (`SUCCESSFUL` o `PENDING`),
  * llamando al `Obtener operación` punto final disponible en el [API de D1](/click-to-pay/es/integrate-the-d1-api/d1-api-summary.md), o
  * activando las notificaciones de D1. En el flujo del SDK, el emisor también puede activar [notificaciones push en la app](/click-to-pay/es/integrate-d1-notifications.md) además de las notificaciones del backend del emisor.
* El TSP asociado con la red de pago activa un flujo de digitalización típico.

### Gestionar notificaciones push de Click to Pay

Antes de que la aplicación del emisor pueda recibir notificaciones de inscripción en Click to Pay desde el backend de D1, asegúrese de que las notificaciones push estén configuradas de la siguiente manera:

{% stepper %}
{% step %}
**Configurar notificaciones push**

Realice las acciones necesarias como se indica en [configuración de notificaciones push](https://gitlab.sre.ops.gcloud.thalescloud.io/bps/gitbook/d1-gitbook-docs/-/blob/main/Products/Click-to-Pay/integrate-the-d1-sdk/getting-started/configuration/4.-push-notifications).
{% endstep %}

{% step %}
**Registrar token de notificación push**

Registrar el [token de notificación push](https://gitlab.sre.ops.gcloud.thalescloud.io/bps/gitbook/d1-gitbook-docs/-/blob/main/Products/Click-to-Pay/integrate-the-d1-sdk/getting-started/configuration/4.-push-notifications).
{% endstep %}

{% step %}
**Registrarse para recibir notificaciones de mensajes**

Registrarse para [notificaciones de mensajes](/click-to-pay/es/integrate-d1-notifications/in-app-notifications-and-messaging.md).
{% endstep %}
{% endstepper %}

Una vez completados estos pasos, la aplicación del emisor puede empezar a recibir notificaciones push como `clickToPayEnrolment` y `clickToPayOptOutCard`.

Cuando D1 SDK recibe una notificación push de tipo `clickToPayEnrolment` ([Android](https://thalesgroup.github.io/d1sdk-docs/d1-sdk/latest/android/com/thalesgroup/gemalto/d1/messaging/MessageType.html#CLICKTOPAY_ENROLMENT) / [iOS](https://thalesgroup.github.io/d1sdk-docs/d1-sdk/4.3.0/ios/documentation/d1/messagetype/clicktopayenrolment)) o `clickToPayOptOutCard` ([Android](https://thalesgroup.github.io/d1sdk-docs/d1-sdk/latest/android/com/thalesgroup/gemalto/d1/messaging/MessageType.html#CLICKTOPAY_OPTOUT_CARD) / [iOS](https://thalesgroup.github.io/d1sdk-docs/d1-sdk/4.3.0/ios/documentation/d1/messagetype/clicktopayoptoutcard)), la aplicación del emisor comprueba la notificación para determinar si la operación de inscripción en Click to Pay o la exclusión es exitosa.

## API del SDK

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

```kotlin
fun enrolClick2Pay(d1Task: D1Task, cardID: String) {
    // Información del consumidor recibida desde la entrada del usuario o el backend.
    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?) {
                // Inscripción en Click to Pay exitosa
                val status: Status? = data
                val operationID = data?.operationID
            }

            override fun onError(exception: D1Exception) {
                // Consulta la sección D1 SDK Integration – Error Management.
            }
        }
    d1Task.getClickToPayService().enrol(
        cardID,
        consumerInfo,
        "Bella Lin",
        billingAddress,
        callback
    )
}
```

{% endtab %}

{% tab title="Android - JAVA" %}

```java
public void enrolClick2Pay(@NonNull D1Task d1Task, @NonNull String cardID) {
    // Información del consumidor recibida desde la entrada del usuario o el backend.
    ConsumerInfo consumerInfo = new ConsumerInfo(
        "Bella", 
        "middle name", 
        "Lin", 
        "en-US", 
        "+65", 
        "99998888", 
        "email@thalesgroup.com"
    );
    BillingAddress billingAddress = new BillingAddress("CZ");

    D1Task.Callback<Status> callback = new D1Task.Callback<Status>() {
        @Override
        public void onSuccess(Status data) {
            // Inscripción en Click to Pay exitosa
            Status status = data;
            String operationID = data.operationID;
        }

        @Override
        public void onError(D1Exception exception) {
            // Consulta la sección D1 SDK Integration – Error Management.
        }
    };
    d1Task.getClickToPayService().enrol(
            cardID,
            consumerInfo,
            "Bella Lin",
            billingAddress,
            callback);
}
```

{% endtab %}

{% tab title="iOS" %}

```swift
let cardID = ""
let name = "Bella Lin"
let consumerInfo = ConsumerInfo(firstName: "Bella",
                                middleName: nil,
                                lastName: "Lin",
                                language: "en-US",
                                phoneNumberCountryCode: "+65",
                                phoneNumber: "99998888",
                                email: "email@thalesgroup.com")

let billingAddress = BillingAddress(line1: "1230 Rue de Rivoli",
                                    line2: nil,
                                    line3: nil,
                                    city: "Paris",
                                    state: "75",
                                    zipCode: "75000",
                                    countryCode: "FR")
do {
    let status = try await d1Task.clickToPayService().enrol(cardID,
                                                            consumerInfo: consumerInfo,
                                                            name: name,
                                                            billingAddress: billingAddress)
    switch status {
    case .pending(let operationID):
        // La inscripción en Click to Pay está pendiente.
        print(operationID)
    case .successful(let operationID):
        // La inscripción en Click to Pay se realizó correctamente.
        print(operationID)
    }
} catch {
    // Maneja el error.
}
```

{% endtab %}
{% endtabs %}


---

# 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/enroll-cards-in-click-to-pay/enroll-cards-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.
