# Soluciones

El API de Zru permite tres tipos de integraciones, cada una se adapta a diferentes necesidades permitiendo que sea cual sea el escenario al que quieres llegar, lo puedas hacer a través del API.

Puedes ver un ejemplo de cada tipo de integración en la sección [Nuestra solución](https://www.zrupay.com/plataforma-pagos-online) de la web.

> A través del Panel de Zru también se pueden generar enlaces de pago para enviar al cliente y realizar cobros sin necesidad de utilizar el API.


|  | Redirect | iFrame | Custom |
|  --- | --- | --- | --- |
| El usuario abandona tu dominio | Si | No | No |
| Pantalla de pago | Zru (personalizable con Temas) | Zru embebida (personalizable con Temas) | Interfaz propia |
| Complejidad de integración | Baja | Media | Alta |
| Ideal para | Integración rápida | Mantener el dominio sin desarrollo extra | Máximo control sobre la experiencia |


### Redirect

> Esta sería la integración más sencilla de todas, después de unas pocas líneas ya estamos recibiendo pagos.


El flujo sería el siguiente:

![](https://assets.mychoice2pay.com/img/workflow-1.svg)

1. El usuario solicita pagar el pedido.
2. Se crea la `orden de pago` a través del API de Zru (utilizando la `llave pública y privada` obtenida en el Panel de Zru).
3. El API de Zru devuelve la información de la solicitud incluyendo un campo llamado `token`, con dicho campo creamos la `url de redirección` que debe tener el siguiente formato: https://pay.mychoice2pay.com/TOKEN (TOKEN sería reemplazado por el valor del campo `token`).
4. Se redirige al usuario a la `url de redirección`, que sería la pantalla de pago de Zru.
5. El usuario regresa a la `url de retorno` enviada al crear la orden de pago en caso de que finalice el pago correctamente, en caso de que el usuario cancele el pago, regresará a la `url de cancelación` enviada igualmente al crear la orden de pago.


*. Zru enviará una notificación confirmando el pago a la `url de notificación` enviada al crear la orden de pago. Igualmente, enviará notificaciones en caso de que se produzcan cambios relacionados con el pago, o error, o en caso de que sea una suscripción o autorización avisará de cada pago recibido.

### iFrame

> Es bastante similar a Redirect, la única diferencia es que el usuario nunca sale de tu dominio porque se utiliza un iframe para realizar el pago.


![](https://assets.mychoice2pay.com/img/workflow-2.svg)

1. El usuario solicita pagar el pedido.
2. Se crea la `orden de pago` a través del API de Zru (utilizando la `llave pública y privada` obtenida en el Panel de Zru).
3. El API de Zru devuelve la información de la solicitud incluyendo un campo llamado `token`, con dicho campo creamos la `url de iframe` que debe tener el siguiente formato: https://pay.mychoice2pay.com/TOKEN/iframe (TOKEN sería reemplazado por el valor del campo `token`).
4. Se crea un iframe en la interfaz de usuario con la `url de iframe` y los siguientes parámetros: `<iframe allowpaymentrequest sandbox="allow-forms allow-popups allow-pointer-lock allow-same-origin allow-scripts allow-top-navigation" src="IFRAME_URL" frameBorder="0" style="width: 100%; height: 700px"></iframe>`
5. El usuario regresa a la `url de retorno` enviada al crear la orden de pago en caso de que finalice el pago correctamente, en caso de que el usuario cancele el pago, regresará a la `url de cancelación` enviada igualmente al crear la orden de pago. Ya estando en estas urls se podría cerrar el iframe.


*. Zru enviará una notificación confirmando el pago a la `url de notificación` enviada al crear la orden de pago. Igualmente, enviará notificaciones en caso de que se produzcan cambios relacionados con el pago, o error, o en caso de que sea una suscripción o autorización avisará de cada pago recibido.

### Custom

> Esta forma de integrar Zru permite que además de que todo se realice en tu dominio puedes personalizar cada detalle de la experiencia del usuario al pagar.


![](https://assets.mychoice2pay.com/img/workflow-3.svg)

1. El usuario solicita pagar el pedido.
2. Se crea la `orden de pago` a través del API de Zru (utilizando la `llave pública y privada` obtenida en el Panel de Zru).
3. El API de Zru devuelve la información de la solicitud, entre los datos que devuelve estará el `token` que utilizaremos en el resto de los pasos.
4. Se envía el `token` a la interfaz de usuario.
5. Se solicitan las pasarelas de pago disponibles para esa orden de pago a través del API de Zru, utilizando el `token` y la `llave pública`.
6. El API de Zru devuelve la información de las pasarelas y sus tipos.
7. En base al tipo de pasarela pueden ocurrir dos cosas:
  - **Pasarelas de tipo card:** se enviará la información de la tarjeta al API de Zru. El API responderá con la confirmación o no del pago; si es afirmativo, el pago queda completado.
  - **Pasarelas de tipo form:** se debe enviar al usuario a la url `https://pay.mychoice2pay.com/<token>/redirect/<gateway_code>`. El usuario será redirigido a la pasarela para finalizar el pago y regresará a la `url de retorno` o `url de cancelación` según corresponda.


*. Zru enviará una notificación confirmando el pago a la `url de notificación` enviada al crear la orden de pago. Igualmente, enviará notificaciones en caso de que se produzcan cambios relacionados con el pago, o error, o en caso de que sea una suscripción o autorización avisará de cada pago recibido.