Procesamiento por lotes (batch)
Si el Comercio ya tiene un planificador y tan solo desea enviar múltiples órdenes puede utilizar esta llamada batch para enviar varios cobros en una sola llamada API.
Una vez más, el requerimiento indispensable es que haya tokenizado los datos del medio de pago previamente.
Debes tener en cuenta que se trata de una llamada asíncrona. Es decir, nuestra API recibirá el lote con todos las operaciones que deben procesarse y esa misma llamada solo devolverá el estado de la recepción del fichero. Es decir, en esta primera llamada identificada como (POST /batch)
nunca se enviará el resultado del procesamiento.
Los mecanismos que se proveen para gestionar los resultados del procesamiento son los siguientes:
- Callback: en la llamada de creación del lote de procesamiento, indicaremos con el parámetro
callback_url
la URL de un sistema del comercio donde se enviará la notificación de finalización del batch junto a sus resultados. - Consulta bajo demanda de los resultados: tenemos habilitado un API para que pueda consultar el estado del procesamiento de un lote. En la llamada de creación recibirá un parámetro
batch_id
que es el que deberá emplear para consultar su estado.
Autorizaciones por lote
(POST /batch)
Payload
- operations (array, required): Lista de todos los pagos a procesar
- amount (string, required): Importe de la operación
1000
- currency (string, required): Será valida cualquier moneda definida según el ISO_4217
EUR
- method(object, required): Contiene los datos necesarios para realizar el pago.
- type(string, required): Tipo del método de pago solo puede ser
sipay
,paypal
omovistar_pay
- token(string, required): Identificador con el que realizar el pago, en caso de
sipay
es el token de la tarjeta almacenada, en el caso depaypal
ymovistar_pay
son el billing_id y el auth_token respectivamente (obtenido en alternative payments ) - extra(object): Datos extra de la operación, en el caso de movistar_pay, el atributo client_ip_address es obligatorio.
- type(string, required): Tipo del método de pago solo puede ser
- order (string): Ticket de la operación
sipay-order-001
- reason (string): motivos disponibles para MIT:
Parámetro Razón/Motivo Descripción R
Recurring Transacciones procesadas a intervalos fijos y regulares que no excedan de un año entre transacciones, que representan un acuerdo entre el titular de una tarjeta y un comerciante para adquirir bienes o servicios proporcionados durante un período de tiempo. I
Installments Los pagos a plazos describen la compra única de bienes o servicios facturados al titular de la tarjeta en múltiples transacciones durante un período de tiempo acordado por el titular de la tarjeta y el comerciante. C
Compra única Se trata de una transacción que utiliza una credencial almacenada por un importe fijo o variable que no se produce en una fecha de transacción programada o regular, en la que el titular de la tarjeta ha dado su consentimiento para que el comerciante inicie una o más transacciones futuras que no son iniciadas por el titular de la tarjeta. D
Delayed charge El cargo por demora se suele utilizar en hoteles, líneas de cruceros y entornos de alquiler de vehículos para realizar un cargo suplementario en la cuenta después de la prestación de los servicios originales. E
Resubmision Se trata de un hecho que se produce cuando se produce la compra original, pero el comerciante no pudo obtener la autorización en el momento en que se suministraron los bienes o servicios. H
Reauthorization Una reautorización es una compra realizada después de la compra original y puede reflejar una serie de condiciones específicas. Los escenarios más comunes incluyen envíos retrasados o fraccionados y estancias o alquileres prolongados. M
Incremental En los entornos de hoteles y de alquiler de automóviles suele haber una autorización incremental, en la que el titular de la tarjeta ha aceptado pagar por cualquier servicio prestado durante la duración del contrato. N
No show Un "No-show" es una transacción en la que el comerciante está habilitado para cobrar por los servicios que el titular de la tarjeta celebró un acuerdo de compra, pero no cumplió con los términos del acuerdo. - reference (string): Identificador para la conciliación bancaria (p37)
1234-sipay
- callback_url (string): Url para recibir notificación de batch completado.
(opcional, recomendado.)
- custom_01 (string): Campo personalizable
custom_001
- custom_02 (string): Campo personalizable
custom_002
- amount (string, required): Importe de la operación
Ejemplo autorizaciones por lote
{
"key": "589365da65c48cff87d0874a",
"resource": "359ef8ce5c5f4003b71692e446908c27",
"nonce": "1234567890",
"mode": "sha256",
"payload": {
"callback_url": "https://notify.me/",
"operations": [
{
"amount": "120",
"currency": "EUR",
"order": "order1",
"reason": "R",
"method": {
"token": "2f1897faf4974ea0aac597be71edb061",
"type": "sipay"
},
"reference": "1234"
},
{
"amount": "100",
"currency": "EUR",
"order": "order2",
"reason": "I",
"method": {
"token": "B-70J394298W4258120",
"type": "paypal"
},
"reference": "1234"
},
{
"amount": "5",
"order": "order3",
"reason": "M",
"currency": "EUR",
"method": {
"token": "84ff6564-5001-4825-818c-05bf032cd0d1",
"type": "movistar_pay",
"extra": {
"client_ip_address": "127.0.0.1"
}
},
"reference": "1234"
}
]
}
}
Success - 0 - batch
- batch_id (string): Identificador del paquete creado
5a796ad3fba05b3e6ef244e6
Ejemplo
{
"type": "success",
"code": "0",
"detail": "batch",
"description": "Batch saved successfully",
"uuid": "2df61337-c0c5-4b90-ab8c-6098c8b118ce",
"request_id": "5901ba6d7710014a2c89",
"payload": {
"batch_id": "5a796ad3fba05b3e6ef244e6"
}
}
Ejemplo de notificación recibida en callback_url
- Método: POST
- Cabecera incluida: Content-Type: application/json
{
"transactions": [
{
"status": "completed",
"code": 0,
"reference": "1234asdf",
"order": "order1",
"currency": "EUR",
"custom_01": "",
"custom_02": "",
"amount": 120,
"country": "ES",
"method": "sipay",
"detail": "OPERACIÓN ACEPTADA",
"country_code": 724
},
{
"status": "completed",
"code": 0,
"reference": "1234asdf",
"order": "order2",
"currency": "EUR",
"custom_01": "",
"custom_02": "",
"amount": 50,
"country": "ES",
"method": "sipay",
"detail": "OPERACIÓN ACEPTADA",
"country_code": 724
}
],
"status": "completed",
"records": {
"total": 2,
"success": 2,
"errors": 0
},
"batch_id": "5bbcc11702e2d048ce3a62e7"
}
Consulta de lote
(POST /batch/status)
Payload
- batch_id (string): Identificador del paquete creado
5a796ad3fba05b3e6ef244e6
Ejemplo consulta de paquetes
{
"key": "589365da65c48cff87d0874a",
"resource": "359ef8ce5c5f4003b71692e446908c27",
"nonce": "1234567890",
"mode": "sha256",
"payload": {
"batch_id": "5a796be5fba05b3e6ef244e7"
}
}
Success - 0 - card
- batch_id (string): Identificador del paquete creado
5a796ad3fba05b3e6ef244e6
- status(string): Estado del paquete
completed
created
El paquete ha sido guardado, esta en cola para ser procesadoin_process
Se están procesando los pagos de este lotecompleted
Todos los pagos de este lote han sido procesados
- records(object): Objeto que contiene un resumen de los resultado de las transacciones.
- total (integer): Número total de operaciones del paquete
3
- errors (integer): Número de transacciones fallidas
1
- success (integer): Número de transacciones correctas
2
- total (integer): Número total de operaciones del paquete
- transactions (array): Lista de todos los pagos a procesar
- amount (string): Importe de la operación
1000
- currency (string): Moneda con la que se proceso el pago
EUR
- status(string): Estado de la operación
failed
created
El pago esta en cola para ser procesadoin_process
Se esta procesando el pagocompleted
El pago se ha sido realizado correctamentefailed
El pago ha falladoretrying
El pago no ha conseguido acceder al servicio de pago y se esta reintentando
- method(object): Contiene los datos necesarios para realizar el pago.
- type(string): Tipo del método de pago solo puede ser
sipay
,paypal
omovistar_pay
- token(string): Identificador con el que realizar el pago, en caso de
sipay
es el token de la tarjeta almacenada
- type(string): Tipo del método de pago solo puede ser
- order (string): Ticket de la operación
sipay-order-001
- reference (string): Referencia de la operación, en el caso de que el método de pago sea sipay tambien es el identificador para la conciliación bancaria (p37)
1234-sipay
- custom_01 (string): Campo personalizable
custom_001
- custom_02 (string): Campo personalizable
custom_002
- amount (string): Importe de la operación
Ejemplo - Success
{
"type": "success",
"detail": "batch_status",
"request_id": null,
"uuid": "aef3ddb8-81b2-4579-924c-f3d3939f76a3",
"code": "0",
"payload": {
"status": "completed",
"records": {
"total": 3,
"errors": 0,
"success": 3
},
"callback_url": null,
"transactions": [
{
"order": "41891c47db22426d9ae93faaa6e26f86",
"custom_01": "",
"currency": "EUR",
"detail": "OPERACIÓN ACEPTADA",
"country_code": 724,
"country": "ES",
"amount": 120,
"reference": "1234",
"custom_02": "",
"code": 0,
"method": {
"type": "sipay",
"token": "2f1897faf4974ea0aac597be71edb061",
"extra": null
},
"status": "completed"
},
{
"order": "48d0b70d51c34a1eb70e83bd8cb16a1d",
"custom_01": "",
"currency": "EUR",
"detail": "operation_succeeded",
"country_code": 724,
"country": "ES",
"amount": 100,
"reference": "1234",
"custom_02": "",
"code": 0,
"method": {
"type": "paypal",
"token": "B-70J394298W4258127",
"extra": null
},
"status": "completed"
},
{
"order": "4d4cdac2b5d44a3aa15bf4586ffc6e65",
"custom_01": "",
"currency": "EUR",
"detail": "Request done successfully",
"country_code": null,
"country": null,
"amount": 5,
"reference": "1234",
"custom_02": "",
"code": 0,
"method": {
"type": "movistar_pay",
"token": "84ff6564-5001-4825-818c-05bf032cd0d1",
"extra": {
"client_ip_address": "127.0.0.1"
}
},
"status": "completed"
}
],
"notify": false,
"batch_id": "5abbaf53cd36c40001d0943c"
},
"description": "Query completed successfully"
}