Documentación
SmartPos API
Nueva tarea

Nueva Tarea

Nivel de seguridad requerida para este servicio

Medio  Medio (accessToken)

Objetivo

Una tarea es una solicitud al dispositivo para realizar una acción. Estas pueden ser realizar un cobro, donde se le ofrece al cliente opciones para completarlo, o tareas más específicas como cobrar con tarjeta de débito o QR un monto determinado. Otras tareas que el dispositivo soporta es la impresión de comprobantes. Este endpoint permite generar una o más solicitudes de cobro o anulación. Se deben especificar los medios de pago a utilizar, modo de impresión, datos del comprador (opcional) y de la cuenta de acreditación.

Request

Method: POST
/external/posdevice-api/tasks-request
curl -X GET "https://$env/external/posdevice-api/tasks-request" \
    -H 'Authorization: $YOUR_ACCESS_TOKEN' \
    -H 'Content-Type: application/json' \
    --data-urlencode "$body"
  • env: Entorno de la API, como producción o desarrollo.
  • YOUR_ACCESS_TOKEN: Token obtenido en el servicio de autenticación.
  • body: JSON con el cuerpo del mensaje. Ver a continuación.

Ejemplo del body request:

Body JSON
{
  "target": {
    "deviceId": "E44E3A25-57B8-43E5-B093-65AAD4C01C45"
  },
  "tasks": [
    {
      "payment": {  
        "originID": "ID PROPIO CLIENTE",
        "operationType": "PAYMENT",
        "sourceOriginID": "",
        "executionOrder": 1,
        "printTicket": "auto",     
        "callbackURL": null,       
        "qrMethod": {
          "accountMoney": true
        },
        "cardMethod": {
          "credit": true,
          "creditInterestPayer": "client",
          "creditInstallmentsOption": true,
          "creditInstallments": null,
          "debit": true
        },
        "originalAmount": {
          "amount": 1000,
          "currency": "ARS"
        },
        "collectAccountData": {
	  "portfolioId": 6127,
          "personId": 6346958
        }
        "buyerData": {
          "taxNumber": 26267162
        }
      }
    }
  ]
}

Información adicional sobre campos

  • originID: ID própio del CLIENTE
  • operationType: Tipo de operación
  • sourceOriginID: Identificador solo requerido para anulaciones
  • executionOrder: Como es posible enviar múltiples tareas a la vez, estas requieren un orden de ejecución.
  • printTicket: Indica si la terminal debe imprimir el ticket automaticamente, ofrecer la posibilidad al cliente o no imprimir
  • callbackURL: Es una dirección adicional y redundante para notificar el resultado del pago, puede ser de red local al punto de venta.
  • qrMethod.accountMoney: En "true" indica que acepta pagos con dinero en cuenta (del cliente)
  • cardMethod.credit: En "true" permite que el cliente pague con tarjeta de crédito,
  • creditInterestPayer: Indica quien paga los intereses de financiación (Por ejemplo: "client")
  • creditInstallmentsOption: En true, ofrece selección de cuotas para pagos con tarjeta de crédito
  • creditInstallments: En "null", permite que el cliente eliga las cuotas. Enviando las cuotas no se muestra la selección.
  • debit: En "true" permite pagos con tarjeta de débito
  • amount: Es el importe de la compra. Siempre debe ser positivo
  • currency: Moneda en la que esta expresado el importe
  • collectAccountData.portfolioId: Es el ID (int) de la cuenta en donde va a realizarse el cobro
  • collectAccountData.personId: Es el titular de la cuenta que va a recibir el cobro
  • buyerData.taxNumber: Es el nro de DNI del comprador. Si no se envía y el monto es alto, se le solicita al cliente

Ejemplo de Respuestas:

JSON
[
  {
      "taskId": 15,
      "originID": "MERCH-OperationId-15",
      "generationDate": "2023-11-13T21:17:22.457",
      "status": "InProgress",
      "statusDate": "2023-11-13T21:22:03.97",
      "paymentaData": null
  }
]

Tipo de Operaciones (opertationType)

CódigoDescripción
PAYMENTPara una tarea de cobro
ANNULMENTPara una tarea de anulación

Posibles Estados de una Task (status):

CódigoDescripción
CreatedEstado inicial cuando se recibe la solicitud de tarea
InProgressEstado luego de ser recibida de forma correcta por el dispositivo POS
CanceledEn caso de no poder enviarla al POS o si este no puede procesarla
ProcessedCuando se procesó el cobro asociado con la tarea
CompletedCuando se recibe el cupón (voucher) desde el procesador de pagos. Este es el estado FINAL del flujo deseado para cobro con tarjetas
FailedCuando se produce algún error en los procesos posteriores a la recepción correcta de la tarea en el POS
ℹ️

Nota: Los estados de las tareas no hacen referencia al estado del cupón asociado. El cupón asociado puede haberse "cobrado", "rechazado", "devuelto", etc. una vez que la tarea se completó.

Posibles Estados de un pago con Tarjeta (propiedad status en cardPaymentaData):

CódigoDescripción
PENDINGEstado inválido en el proveedor del servicio (no se procesa el cobro)
REVERSEDEl cobro fue revertido por el emisor.
APPROVEDCobro aprobado
FAILEDFalló la operación de cobro. No se procesa el cobro
REJECTEDEl emisor rechazó el pago.

Posibles Estados con QR Task (propiedad status en qrPaymentaData):

CódigoDescripción
PENDINGEl QR se encuentra pendiente de cobro. Aplica a QR de "USO UNICO"
ACTIVEEl QR se encuentra pendiente de cobro. Aplica a QR que NO son de "USO UNICO"
COLLECTEDEl QR fue cobrado correctamente
EXPIREDSe venció el tiempo de vida del QR. Ya no puede ser cobrado
NOTFOUNDNo se encontró el QR asociado
UNDEFINEDEstado no definido. QR inválido

Anulación de Cupones

Se utiliza el mismo endpoint que para un cobro normal con 2 modificaciones:

"operationType": "ANNULMENT"
"sourceOriginID": "OriginId de la operación a anular"
ℹ️

NOTA: Solo pueden anularse operaciones cuyos cupones hayan sido cobrados en los últimos 30 días. El importe a anular debe ser menor o igual al importe original del cupón o la suma de anulaciones parciales previas. Si la operación a anular corresponde a un QR la misma se efectiviza en el momento. No requiere operaciones en el POS. En cualquier caso que la anulación no pueda realizarse se informará el motivo mediante una excepción de negocio.