Saltar al contenido principal

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 o movistar_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 de paypal y movistar_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.
    • order (string): Ticket de la operación sipay-order-001
    • 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

Ejemplo autorizaciones por lote

{
"key": "589365da65c48cff87d0874a",
"resource": "359ef8ce5c5f4003b71692e446908c27",
"nonce": "1234567890",
"mode": "sha256",
"payload": {
"callback_url": "https://notify.me/",
"operations":[
{
"amount": "120",
"currency": "EUR",
"method": {
"token": "2f1897faf4974ea0aac597be71edb061",
"type": "sipay"
},
"reference": "1234"
},
{
"amount": "100",
"currency": "EUR",
"method": {
"token": "B-70J394298W4258120",
"type": "paypal"
},
"reference": "1234"
},
{
"amount": "5",
"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 procesado
    • in_process Se están procesando los pagos de este lote
    • completed 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
  • 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 procesado
      • in_process Se esta procesando el pago
      • completed El pago se ha sido realizado correctamente
      • failed El pago ha fallado
      • retrying 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 o movistar_pay
      • token(string): Identificador con el que realizar el pago, en caso de sipay es el token de la tarjeta almacenada
    • 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

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"
}