➕ Importar QR (hasta 100.000 ítems)
Permite generar hasta 100.000 códigos QR el cual almacena la información enviada para que luego pueda estar disponible para escanear.
REQUEST
HEADERS
Content-Tipe | application/json |
---|---|
El tipo MIME del contenido del cuerpo enviado. Por defecto JSON es Unicode UTF-8. No se debe configurar otro charset. | |
Authorization | Bearer ••••••• |
Puede consultar la sección API Key para más información. |
PASO 1 - Obtener URL del bucket
GET Importar QR
https://api.sandbox.pagos360.com/bucket-url
Example Request
curl --location 'https://{{base_url}}/bucket-url' \
--header 'Authorization: Bearer {{api_key}}'
📨 Respuesta
Se pudo obtener la URL del bucket para poder importar el lote de QRs
{
"url": {{bucket_url}}
}
PASO 2 - Put request al bucket
Una vez obtenida la URL del bucket (la cual expira al pasar 1 minuto), se realiza una request de tipo PUT a la url del bucket. Se debe mantener el orden de los campos, “webhook_url” primero, seguido de “total_ count” y por último “data”. “total_count” puede ser de hasta 100000, y tiene que coincidir con la cantidad de entradas en “data”. La respuesta que se debería esperar, es un status code 200 y sin body.
Atributo | Tipo | Requerido | Descripción |
---|---|---|---|
webhook_url | String | Si | Url del webhook donde se enviará el resultado del batch. |
total_count | Integer | Si | Cantidad de QR que va a tener el lote. |
data | Array[objects] | Si | Lista de objetos donde se deben listar los QR a crear. La cantidad debe coincidir con total_count. |
Atributos del objeto data
Atributo | Tipo | Requerido | Tamaño | Descripcion |
---|---|---|---|---|
id | String | Si | 25 | ID único conformado por el ID de la Cuenta - uuid. |
qr_type | String | No | 15 | Indica el tipo de QR, por defecto es dinámico. Opciones: “static_closed_amount” , “dynamic_closed_amount” |
qr_name | String | No | Min:1 Max:15 | Permite identificar la imagen de un QR estático. Si bien este valor no es requerido es de carácter obligatorio enviarlo cuando el tipo de QR es estático. |
city | String | Si | 15 | Nombre de la ciudad de la Cuenta. |
multiple_payment | Bool | Si | Permitir que un QR pueda ser pagado muchas veces | |
external_reference | String | No | 255 | Referencia externa del pago. |
description | String | Si | Min: 2 Max: 500 | Descripción del pago. |
first_total | Decimal | Si | min: 10 max: 99999999.99 | Monto del primer vencimiento. |
first_due_date | String | Si | Fecha de primer vencimiento. Formato: dd-mm-yyyy | |
payer_name | String | Si | 255 | Nombre del pagador. |
payer_email | String | No | 255 | Email del pagador. |
postcal_code | String | Si | 8 | Codigo postal del comercio |
free_tier | Bool | No | Indica si la cuenta es free_tier | |
second_total | Decimal | No | min: 10 max: 99999999.99 | Monto del segundo vencimiento |
second_due_date | String | No | Fecha del segundo vencimiento Formato: dd-mm-yyyy |
Al terminar correctamente este PUT, empezamos a procesar los QR que se incluyeron en la request. Luego de entre 30 segundos y 5 minutos enviamos un webhook a la url que se incluyó, en el mismo en “type” devolvemos el resultado del proceso y dentro de “payload”, dentro de “id” mandamos el id del batch-result en caso de haber un rechazo parcial.
Example Request
{
"webhook_url": "http://example.com",
"total_count": 1,
"data": [
{
"id": "454133B2-F234499",
"city": "CABA",
"multiple_payment": "false",
"external_reference": "UNIDAD 40215",
"description": "Testing",
"first_due_date": "12-12-2022",
"first_total": 635.6,
"payer_name": "Nombre del pagador",
"payer_email": "prueba@gmail.com",
"postal_code": "X5000XYZ"
}
]
}
Response
Status 200:
NULL
Nota: La anterior es la respuesta que se debería esperar, una response con status code 200 y sin body.
Status 403:
{
<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>AccessDenied</Code>
<Message>Request has expired</Message>
<X-Amz-Expires>60</X-Amz-Expires>
<Expires>2022-06-14T16:35:31Z</Expires>
<ServerTime>2022-06-14T18:51:06Z</ServerTime>
</Error>
}
Ejemplo del webhook
{
"entity_name": "qr",
"type": "batch_partial_rejected", Valores posibles -> batch_partial_rejected | batch_imported | batch_total_rejected
"entity_id": 0,
"created_at": "2024-07-31T18:37:34.043Z",
"payload": {
"id": "887071c6-128a-4ee8-9114-96ad58cf84d5",
"external_reference": "B516476C-1722451051196.json"
}
}
PASO 3 (opcional) - Obtener resultado del batch
En la respuesta, dentro de “message”, dentro de “data”, devolvemos una lista de strings con los errores de cada QR, en el string se encuentra el id del QR seguido de un “;” y su error correspondiente, por cada error.
*Path Parameter *
Atributo | Tipo | Requerido | Descripción |
---|---|---|---|
page | String | Si | Número de página. |
id | String | Si | ID de la transacción |
Responses:
Se visualiza el listado de los QRs que no fueron importados por errores.
{ Status: 200 OK
"page": 1,
"total_pages": 1,
"message": "The IDs on this list were not saved due to one or more errors.",
"data: [
"454133B2-dasdsadas12312;E10;E12"
]
}
El endpoint requiere el id del lote de QRs y el número de páginas.
[ Status: 200 OK
{
"code": "B001",
"message": [
"The id is required.",
"The page must be a number."
]
}
]
Tabla de errores
Code | Descripción |
---|---|
E0 | ID duplicado |
E1 | Campo ‘id’ incorrecto |
E2 | Campo ‘multiple_payment’ incorrecto |
E3 | Campo ‘free_tier’ incorrecto |
E4 | Campo ‘category’ incorrecto |
E5 | Campo ‘description’ incorrecto |
E6 | Campo ‘payer_name’ incorrecto |
E7 | Campo ‘payer_email’ incorrecto |
E8 | Campo ‘external_reference’ incorrecto |
E9 | Campo ‘city’ incorrecto |
E10 | Campo ‘first_total’ incorrecto |
E11 | Campo ‘first_due_date’ incorrecto |
E12 | Campo ‘second_total’ incorrecto |
E13 | Campo ‘second_due_date’ incorrecto |
E14 | Campo ‘postal_code’ incorrecto |
E15 | Error inesperado |
Códigos de respuestas:
Código | Respuesta JSON | Descripción |
---|---|---|
F001 | [ { "code": "F001", "qr_id": "454133B2-F234492", "message": "'" } ] | Este código de error se puede dar cuando se elimina en lote, edita en lote y cuando se crea en lote los QRs. Sirve para especificar el qr_id que falló y su motivo. Ejemplo: [ { "code": "F001", "qr_id": "454133B2-F234491", "message": "city must not be empty." //El nombre de la ciudad no debe ser nulla } ] |
F002 | [ { "code": "F002", "qr_id": "454133B2-F234492", "message": "The qr_id already exists'" } ] | Se da este código de error cuando se intenta crear un QR con un qr_id que ya existe. |
F004 | [ { "code": "F004", "qr_id": "454133B2-F234492", "message": "The qr_id is not valid.'" } ] | Este código de error se da cuando el formato del qr_id es invalido, por ende, a la hora de buscarlo en nuestra base de datos, no existe. Aparece cuando se edita en lote, elimina, edita y se consulta el estado de un QR. |
F005 | [ { "code": "F005", "qr_id": "454133B2-F234492", "message": "The qr_id is not valid, status must be equals to 'Pending'" } ] | Este código de error se da cuando se intenta editar, eliminar y editar en lote QRs que no se encuentran en estado "Pendiente" |
Q001 | [ { "code": "Q001", "message": "The total_count value is incorrect." } ] | Se utiliza este código de error cuando no coincide el valor del atributo "total_count" con la cantidad de QRs que existe en el "data". El mismo aparece para cuando se intenta editar, eliminar o crear en lote. |
Q002 | [ { "code": "Q002", "message": "Quantity exceeded. Must be less than 10000'" } ] | Se utiliza este código de error cuando se excede la cantidad de 10.000 QRs para cuando se intenta editar, eliminar o crear en lote. |
B001 | [ { "code": "B001", "message": "'" } ] | Cuando se edita en lotes o se crean QRs en lotes y el formato del JSON es invalido, se utiliza este código de error con el mensaje "The JSON is malformed". También es utilizado en el endpoint de consultar los resultados de los QRs "/batch-result/{{id}}/{{page}}" para informarnos si el body de la request tiene algún error. Ejemplo: [ { "code": "B001", "message": [ "The id is required.", "The page must be a number." ] } ] |
H001 | [ { "code": "H001", "message": "Unauthorized" } ] | Código de error utilizado en todos los endpoints y se utiliza para indicar que la apikey enviada en el header, es inválida porque no corresponde a la cuenta o no se está enviando. |
H002 | [ { "code": "H002", "message": "Created" } ] | Este código es utilizado para indicar que se pudo crear correctamente los QRs en lote o que se pudo editar en lote sin ningún problema. |
H004 | [ { "code": "H004", "message": "Not Found'" } ] | Código utilizado para el endpoint "/batch-result/{{id}}/{{page}}". Cuando obtenemos este código es porque los resultados que se busca consultar no corresponden a la cuenta o que no existe ningún resultado. |
H003 | [ { "code": "H003", "message": “Conflict" } ] | Este código de error es utilizado para indicar que ocurrió un error interno. Actualmente se encuentra en todos los endpoints. |
H005 | [ { "code": "H005", "message": "Ok" } ] | Este código es utilizado para indicar que se pudo eliminar, editar y eliminar en lotes de QR correctamente. |