> 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-tarjeta-cbt/compra-de-producto-tarifario-posterior-al-aprovisionamiento-en-la-aplicacion.md).

# Compra de producto tarifario posterior al aprovisionamiento en la aplicación

El flujo de trabajo de Compra de Producto Tarifario posterior a la provisión dentro de la aplicación 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 este 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 a alto nivel describen el flujo de trabajo 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 agregar valor almacenado a un saldo existente o comprar/renovar un producto tarifario.
2. **Actualización del applet y actualización de la visualización en Wallet**: En el contexto CBT, existe la necesidad de actualizar el contenido del applet. Al recibir la solicitud updateBundle con la intención "applet update", el dispositivo Apple solicita obtener los comandos que deben ejecutarse para actualizar los datos de contenido del applet.

Para compras de nuevos productos, hay necesidad de actualizar la visualización en Wallet. Al recibir la solicitud updateBundle con la intención "pass update", Apple solicita el paquete de aprovisionamiento que contiene los detalles de la tarjeta a D1 Transit.

#### 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 agregarlo a su tarjeta de transporte.

Una vez que se selecciona 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 (por ejemplo, tarjeta caducada o producto tarifario inelegible), la aplicación iOS del operador de transporte deberá indicárselo al usuario.

#### Actualización del applet y actualización de la visualización en Wallet <a href="#applet-update-and-wallet-display-update" id="applet-update-and-wallet-display-update"></a>

Después de comprar o renovar con éxito un producto tarifario, el Emisor de Transporte deberá enviar una solicitud a D1 Transit indicando que los datos del applet deben actualizarse. D1 Transit, entonces, notifica a Apple realizando una solicitud API updateBundle, con el parámetro intentionType establecido en updateApplet.

Al recibir la solicitud updateBundle, Apple inicia el comando "redirect" hacia el dispositivo. El dispositivo se conecta a D1 Transit para obtener los comandos que deben ejecutarse con el fin de actualizar el contenido de datos del applet. Puede haber varios viajes de ida y vuelta para hacerlo.

Una vez que los datos del applet se actualizan, D1 Transit notifica al Emisor de Transporte que los datos del paquete se actualizaron correctamente.

Para los nuevos productos comprados, después de recibir la notificación de datos del paquete exitosa, el Emisor de Transporte envía un handleEvent a la plataforma D1 Transit para actualizar la visualización de Wallet.

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

Al recibir la solicitud updateBundle, Apple recupera el paquete de aprovisionamiento 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.

**Escenarios de error**

**Ninguna solicitud de Apple para obtener el paquete de aprovisionamiento**

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.

<figure><img src="/spaces/SokLBgfEhZisVFcUdPiW/files/T9wOXwSk53oCrR0UcSBb" alt=""><figcaption></figcaption></figure>

<figure><img src="/spaces/SokLBgfEhZisVFcUdPiW/files/DkUhIEBzJDaLYNhqz0Uk" 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 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/transit-digitization/es/implementar-apple-transit/ticketing-basado-en-tarjeta-cbt/compra-de-producto-tarifario-posterior-al-aprovisionamiento-en-la-aplicacion.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.
