> 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/transit-digitization/es/implementar-apple-transit/ticketing-basado-en-cuentas-abt/compra-de-producto-tarifario-posterior-al-aprovisionamiento-en-la-app.md).

# Compra de producto tarifario posterior al aprovisionamiento en la app

El flujo de compra de producto tarifario posterior a la provisión dentro de la aplicación (In-App Post-Provisioning Fare Product Purchase) es iniciado por el usuario directamente a través de la aplicación iOS del operador de transporte. El objetivo principal es que el usuario compre un producto tarifario dentro de la aplicación y que éste se aplique sin problemas a su tarjeta de transporte en Apple Wallet para su uso inmediato.

### Flujo de trabajo <a href="#workflow" id="workflow"></a>

Los siguientes pasos de alto nivel describen el flujo de compra de producto tarifario posterior a la provisión dentro de la aplicación:

1. **Selección del producto tarifario y pago**: El usuario selecciona el producto tarifario que desea comprar desde la aplicación iOS del operador de transporte. Puede incluir añadir saldo almacenado a un saldo existente o comprar/renovar un producto tarifario.
2. **Recuperación del paquete y actualización de la vista en Wallet**: Al recibir la solicitud updateBundle, Apple solicita el paquete de provisión que contiene los detalles de la tarjeta a D1 Transit.\
   Para cualquier actualización de saldo o renovación de producto tarifario, D1 Transit utiliza el servicio de notificaciones push de Apple (APNs) para actualizar Apple Wallet con los valores correctos.

#### Selección del producto tarifario y pago <a href="#fare-product-selection-and-payment" id="fare-product-selection-and-payment"></a>

Antes de que comience el flujo de trabajo, el usuario debe seleccionar un producto tarifario elegible dentro de la aplicación iOS del operador de transporte para añadirlo a su tarjeta de transporte.

Una vez seleccionado un producto tarifario, la aplicación debe mostrar opciones de pago para que el usuario complete la compra. El usuario puede entonces elegir su método de pago preferido entre las opciones disponibles.

**Escenarios de error**

**Compra o renovación no permitida**

Si la compra o renovación de un producto tarifario está prohibida debido a reglas de negocio (p. ej., tarjeta caducada o producto tarifario no elegible), la aplicación iOS del operador de transporte deberá indicarlo al usuario.

#### Recuperación del paquete y actualización de la vista en Wallet <a href="#bundle-retrieval-and-wallet-display-update" id="bundle-retrieval-and-wallet-display-update"></a>

Después de comprar o renovar con éxito un producto tarifario, el Emisor de Transporte (Transit Issuer) deberá enviar una solicitud a D1 Transit indicando que se deben actualizar los metadatos de la cuenta de la tarjeta.

D1 Transit notifica a Apple realizando una solicitud a la API updateBundle, con el parámetro intentionType establecido en updatePass.

Al recibir la solicitud updateBundle, Apple recupera el paquete de provisión realizando una solicitud getProvisioningBundle a D1 Transit.

Una vez que el paquete es devuelto a Apple, D1 Transit notifica al Emisor de Transporte que el paquete se actualizó correctamente.

Para las actualizaciones de saldo, el Emisor de Transporte notifica a D1 Transit usando handleEvent. Se utiliza el servicio de notificaciones push de Apple (APNs) para asegurar que Apple Wallet refleje la información más reciente.

**Escenarios de error**

**No hay solicitud de Apple para obtener el paquete de provisión**

D1 Transit define un período de tiempo de espera entre la recepción de la respuesta updateBundle y la solicitud getProvisioningBundle por parte de Apple.

Si la solicitud getProvisioningBundle no es recibida por D1 Transit dentro de este período de tiempo de espera, D1 Transit aplicará una política de reintento configurada.

Si se agotan todos los intentos de reintento y la solicitud getProvisioningBundle aún no se recibe, D1 Transit notifica el fallo al Emisor de Transporte.

**Token de autenticación no autorizado**

Cuando la tarjeta se provisiona, Apple registra el dispositivo para transacciones con D1 Transit llamando al endpoint transactionNotifications/register de D1 Transit. En respuesta, D1 Transit devuelve un authenticationToken, que se almacena en el dispositivo. Si el dispositivo realiza una solicitud con un authenticationToken caducado, D1 Transit devuelve un estado HTTP 401, lo que obliga al dispositivo a volver a registrarse para transacciones.

<figure><img src="broken://spaces/SokLBgfEhZisVFcUdPiW/files/ZRTsZ7ZhHSndMJayYwds" alt=""><figcaption></figcaption></figure>

<figure><img src="broken://spaces/SokLBgfEhZisVFcUdPiW/files/JttO5svCFHBDPLUGUzxH" alt=""><figcaption></figcaption></figure>


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.payments.thalescloud.io/transit-digitization/es/implementar-apple-transit/ticketing-basado-en-cuentas-abt/compra-de-producto-tarifario-posterior-al-aprovisionamiento-en-la-app.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
