➕ 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.

GET/ bucket-url

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.

Info

PASO 1 - Obtener URL del bucket

GET Importar QR

https://qr.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}} }
Info

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.

POST /{{bucket_url}}

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

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.

GET/batch-result/{{id}}/{{page}}

*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.