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
    • reason (string): motivos disponibles para MIT:
      ParámetroRazón/MotivoDescripción
      RRecurringTransacciones 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.
      IInstallmentsLos 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 únicaSe 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 chargeEl 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.
      EResubmisionSe 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.
      HReauthorizationUna 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.
      MIncrementalEn 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 showUn "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

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