> 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/nfc-wallet-sdk-ios/es/implement-nfc-wallet/enroll-wallet.md).

# Registrar la billetera

## Descripción general

Inscriba su **aplicación de billetera digital** después de **SDK de NFC Wallet** la inicialización y antes de comenzar **Tokenización**. La inscripción de la billetera dota a la aplicación de billetera digital con los activos de seguridad necesarios para invocar **NFC Wallet** servicios:

* Ejecute esto una vez por instancia de billetera.
* Ejecute esto solo si la aplicación de billetera digital usa **NFC Wallet** servicios.
* Ejecute esto solo en dispositivos que admiten pagos sin contacto. Consulte [Comprueba la compatibilidad con pagos sin contacto](/nfc-wallet-sdk-ios/es/implement-nfc-wallet/check-contactless-capability.md).

{% hint style="warning" %}
Inscriba solo aplicaciones de billetera digital que usen **NFC Wallet** servicios.

Esto evita tráfico de red innecesario desde la aplicación de billetera digital y carga innecesaria en **NFC Wallet** producto.
{% endhint %}

## Diagrama de secuencia

Flujo general para inscribir su aplicación de billetera.

<figure><img src="/files/b7fde81804a1e8ed1f70c05ba3b04ba7a6f282e2" alt=""><figcaption><p>Flujo de inscripción de la billetera.</p></figcaption></figure>

{% hint style="info" %}
Técnicamente, este flujo se llama **la inscripción segura del monedero** en **NFC Wallet**.
{% endhint %}

## Integración del SDK

### Requisitos previos

Antes de comenzar, verifique lo siguiente:

* Su aplicación de billetera digital está incorporada en el **NFC Wallet** backend.
* Ha inicializado el **SDK de NFC Wallet**.
* La billetera no está inscrita (`WalletSecureEnrollmentService.isEnrolled()` devuelve `falso`).
* Si admite pagos sin contacto, confirme que el dispositivo sea elegible. Consulte [Comprueba la compatibilidad con pagos sin contacto](/nfc-wallet-sdk-ios/es/implement-nfc-wallet/check-contactless-capability.md).

{% hint style="info" %}
Omita la comprobación de la capacidad sin contacto si su aplicación de billetera digital no admite pagos sin contacto (por ejemplo, solo código QR o pago remoto DSRP).
{% endhint %}

### Realizar la inscripción de la billetera

La inscripción de la billetera es una acción única en el ciclo de vida de la aplicación de billetera digital.

Ejecútela después de la inicialización del SDK y solo si la billetera no está inscrita.

1. Cree una `WalletSecureEnrollmentService` instancia.
2. Compruebe `wse.isEnrolled()`.
3. Si es necesario, llame a `wse.enroll()` para iniciar el proceso. Si la operación se realiza correctamente, la inscripción segura de la billetera se completa; de lo contrario, se lanzará un error.

Después de que la inscripción segura de la billetera se complete correctamente, continúe con [Tokenizar una tarjeta](/nfc-wallet-sdk-ios/es/implement-nfc-wallet/tokenize-a-card.md).

```swift
func invokeWSEAsync() async {
   do {
        let wse = try WalletSecureEnrollmentService()
        // Comprueba el estado de inscripción de la billetera.
        if wse.isEnrolled() {
            // WSE está inscrita
        } else {
            // Inicia la inscripción segura de la billetera.
            try await wse.enroll()
            // Aquí se completa correctamente el proceso de inscripción.
        }
    } catch {
        // Error de WSE 
    }
}
```

### Errores

Cuando la inscripción de la billetera falla, maneje estos tipos de error:

* `clientError`: Un error interno del SDK. Se proporciona un mensaje a la aplicación de billetera digital.
* `serverError`: Un error del backend. Se proporciona un mensaje, `httpStatus`, `errorCode`, y opcionalmente `additionalInfo` se proporcionan a la aplicación de billetera digital.
* `networkError`: El dispositivo no tiene conexión a Internet.

{% hint style="info" %}
El `WalletSecureEnrollmentService.eventStream` y `WalletSecureEnrollmentService.State` Las API están obsoletas y se eliminarán en la próxima versión. Por lo tanto, debe migrar su código para usar `WalletSecureEnrollmentService.enroll` la API y para todas las nuevas implementaciones, como se muestra arriba
{% endhint %}

### API obsoletas

El siguiente ejemplo demuestra el uso de `WalletSecureEnrollmentService.State` y `WalletSecureEnrollmentService.eventStream` API que están obsoletas.

Estos son los posibles eventos de `WalletSecureEnrollment` cuando la `WalletSecureEnrollmentService.eventStream` la API obsoleta se utiliza:

* `.started`: El proceso de inscripción segura de la billetera se ha iniciado.
* `.completed` : El proceso de inscripción segura de la billetera se ha completado.
* `.errorEncountered`: Se devuelve el error de inscripción segura de la billetera.

```swift
// API obsoleta
func invokeWSEAsync() async {
    do {
        let wse = try WalletSecureEnrollmentService()
        // comprueba el estado de inscripción de la billetera.
        if wse.isEnrolled() {
            // WSE está inscrita
        } else {
          // inicia la inscripción segura de la billetera.
            wse.enroll()
            for await state in wse.eventStream {
              switch state {
                case .started:
                  // se activa cuando WSE se inicia.
                case .completed:
                  // se activa cuando WSE se completa.
                case .errorEncountered(let error):
                  switch error {
                    case .clientError(let message):
                        // manejo de errores 
                    case .serverError(let message, let httpStatus, let errorCode, let additionalInfo):
                        // manejo de errores 
                    case .networkError:
                        // manejo de errores 
                    }
                }
            }
        }
    } catch {
        // error de inicialización de WSE 
    }
}
```


---

# 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/nfc-wallet-sdk-ios/es/implement-nfc-wallet/enroll-wallet.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.
