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_urlla 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_idque 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,paypalomovistar_pay
- token(string, required): Identificador con el que realizar el pago, en caso de sipayes el token de la tarjeta almacenada, en el caso depaypalymovistar_payson 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 RRecurring 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. IInstallments 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. CCompra ú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. DDelayed 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. EResubmision 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. HReauthorization 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. MIncremental 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. NNo 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- createdEl paquete ha sido guardado, esta en cola para ser procesado
- in_processSe están procesando los pagos de este lote
- completedTodos 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- createdEl pago esta en cola para ser procesado
- in_processSe esta procesando el pago
- completedEl pago se ha sido realizado correctamente
- failedEl pago ha fallado
- retryingEl 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,paypalomovistar_pay
- token(string): Identificador con el que realizar el pago, en caso de sipayes 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"
}