Saltar al contenido principal
Pago en dos pasos

En esencia esta operación se compone de dos pasos: autenticación y autorización separadas en el tiempo

Normalmente, el pago con Bizum ocurre de manera automática y sin interrupciones, siguiendo una secuencia directa: primero el usuario completa su carrito y escoge Bizum como método de pago; después, el comercio realiza una petición API indicando un importe concreto; posteriormente, el cliente ingresa sus datos de Bizum y se identifica en su banco, tras lo cual la operación se procesa de inmediato: se carga el importe al cliente y se abona al comercio.

Sin embargo, existen situaciones en las que el establecimiento puede necesitar retrasar el cobro final —por ejemplo, cuando se venden productos cuyo precio depende de su peso y no es posible conocer el importe definitivo hasta que el pedido ha sido preparado. En estos casos, el comercio inicia el proceso con un importe estimado, pero el importe real que finalmente se cobrará tras la preparación puede variar (siendo igual o inferior al inicial). Es importante destacar que en ningún caso podrá sobrepasarse el valor inicialmente acordado, ya que la operación sería rechazada si el importe final es superior. Por este motivo, es fundamental que el comercio informe claramente al cliente sobre estas circunstancias en la pantalla donde se muestra el precio, para evitar malentendidos y establecer expectativas adecuadas.

El tiempo entre la autenticación y la autorización puede ser hasta 30 días.

Autenticación de importe máximo​

La autenticación se realiza mediante la llamada Request to Pay (R2P) utilizando siempre auto_confirm=false. Se deben implementar los pasos 1,2 y 3 para autenticar un importe máximo.

Captura de fondos​

Siempre hay que recordar la regla de que el importe final no puede ser superior al importe inicial. Por lo tanto, siempre hay que capturar el importe final de la operación o inferior. Además no pueden pasar más de 30 días entre la autenticación y la captura de fondos.

Para capturar los fondos por un importe específico utilizando auto_confirm=false se debe implementar la misma llamada del paso 4 pero especificando el importe a capturar.

API Request​

{
"key": "{{key}}",
"resource": "{{resource}}",
"nonce": "{{nonce}}",
"mode": "sha256",
"payload": {
"request_id": "<request_id>",
"amount": 50
}
}

API Response​

{
"type": "success",
"code": "0",
"detail": "Confirm successfull",
"payload": {
"id": "33m9ZrgilhQGjU1X77aqagCFykh",
"store_id": "12345",
"object": "payment",
"amount": 50,
"currency": "EUR",
"order": "{{order}}",
"created": 1759911438,
"authorization": "061777",
"status": "succeeded",
"canceled_at": null,
"cancellation_reason": null,
"metadata": null,
"phone": "+34600000000",
"payment_method": "bizum",
"operation_id": "62276626246072388252847933780633322",
"truncated_account": "ES34XXXXXXXXXXXXXXXX0755",
"code": "0",
"status_code": "CJ00000"
},
"uuid": "c882e275-8d6d-4871-a171-3c4fca76c472",
"request_id": "<request_id>"
}

Devoluciones​

Se realizan de la misma manera que en el flujo de pago en un solo paso. Ver esta referencia Devoluciones.