> 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-google-transit/ticketing-basado-en-cuenta-abt/aprovisionamiento-push.md).

# Aprovisionamiento push

El flujo de trabajo de Push Provisioning permite a los usuarios aprovisionar tarjetas desde la aplicación del emisor a Google Wallet.

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

A continuación se presentan los pasos de alto nivel del flujo de Push provisioning:

1. **Aprovisionamiento**
   1. **Inicio**: Use las API TapAndPay para iniciar el proceso de push provisioning.
   2. **Entrega del paquete**: Google obtiene el paquete de aprovisionamiento que contiene los detalles de la tarjeta.
2. **Resultado del aprovisionamiento**: Google envía una notificación indicando el resultado del aprovisionamiento.

Este flujo de trabajo asume que el usuario ya tiene una tarjeta de transporte válida vinculada a su cuenta de tarjeta. Si el usuario no tiene una tarjeta de transporte, puede comprar una a través de la aplicación del operador de transporte o, si se admite, usar la aplicación para leer el contenido de su tarjeta física antes de aprovisionarla en Google Wallet.

### Diagrama de secuencia <a href="#sequence-diagram" id="sequence-diagram"></a>

{% hint style="info" %}
Es importante señalar que el Emisor de Transporte debe comenzar a preparar los datos necesarios para emitir la tarjeta digital tan pronto como la solicitud de pago sea validada con el PSP.
{% endhint %}

#### Aprovisionamiento <a href="#provisioning" id="provisioning"></a>

Cuando el usuario presiona el botón "Agregar a Google Wallet", la aplicación móvil del operador de transporte debe proporcionar los detalles de la tarjeta a su backend para comenzar la preparación del paquete de aprovisionamiento. D1 Transit genera una carga útil encryptedData que contiene los detalles necesarios para iniciar el flujo de aprovisionamiento. Esta carga encryptedData se envía de vuelta a la aplicación móvil del operador de transporte, la cual posteriormente llama a la API TapAndPay pushTokenizeRequest para iniciar el flujo de aprovisionamiento con Google.

Al recibir el encryptedData, Google inicia el proceso de tokenización EMV con D1 Transit con el fin de obtener finalmente el paquete de aprovisionamiento cifrado.

**Escenarios de error**

**No hay solicitud de Google para obtener el paquete de aprovisionamiento**

Se establece un periodo de tiempo de espera entre la respuesta de preparar el paquete de push provisioning y la solicitud de aprovisionamiento por parte de Google en el lado de D1 Transit.

Si la solicitud de aprovisionamiento no es recibida por D1 Transit dentro de este periodo de tiempo de espera, el aprovisionamiento se considera fallido.

Si Google solicita el aprovisionamiento después del tiempo de espera, D1 Transit notificará a Google que el paquete de aprovisionamiento ya no está disponible, lo que llevará a Google a detener el flujo de aprovisionamiento.

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

#### Resultado del aprovisionamiento <a href="#provisioning-outcome" id="provisioning-outcome"></a>

Una vez que Google recibe el paquete de aprovisionamiento, las claves y los datos se extraen y almacenan de forma segura. Tras completar la personalización, se envía un acknowledgePaymentBundle a D1 Transit para informar el resultado del flujo de aprovisionamiento.

**Escenarios de error**

**La tarjeta no se aprovisiona en el dispositivo**

Si el aprovisionamiento falla, Google no proporciona ninguna notificación a la plataforma D1 Transit. Como consecuencia, D1 Transit espera a que se alcance el tiempo de espera configurado (ver más abajo).

**No hay solicitud acknowledgePaymentBundle por parte de Google**

D1 Transit tiene un periodo de tiempo de espera después de enviar el paquete de aprovisionamiento a Google. Si no se recibe ningún acknowledgePaymentBundle dentro del plazo especificado, D1 Transit completa el flujo de trabajo considerando el aprovisionamiento como fallido; es decir, se notifica al emisor de transporte para que pueda:

* reembolsar al cliente y notificar a D1 Transit que la cuenta de la tarjeta ha sido eliminada.
* Permitir al cliente reiniciar el push provisioning

El emisor de transporte puede basarse en **getCardAccountInfo** API para comprobar cuáles son la información de cardAccount almacenada en la plataforma D1 Transit (estado de la cuenta de tarjeta, tarjetas digitales vinculadas a la cuenta de tarjeta) con el fin de tomar una decisión.

<figure><img src="/files/2ed4adf133deff3e7140e8f638ac1eb1c405e571" 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-google-transit/ticketing-basado-en-cuenta-abt/aprovisionamiento-push.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.
