QR estático

Diagrama de Estado del QR Estático

  • Pendiente: Es el estado inicial de un QR.
  • Eliminado: Solo se puede eliminar un QR si el mismo se encuentra en estado “Pendiente”. Bajo determinados casos especiales puede ocurrir por excepción que un QR “Eliminado” pase a “Pagado”
  • Pagado: Si un QR se encuentra en estado “Pendiente”, puede pasar a “pagado”. Lo cual este puede ser devuelto.
  • Devuelto: Se puede devolver un QR solo si se encuentra en estado “pagado”.

Generación de un QR Estático

Contenido del QR

Los datos a cambiar son sólo aquellos que se encuentran entre dos pares de llaves (incluyendo las mismas) y las “XX” y “ZZ”.

JSON
Copy

¿Cómo interpretar correctamente un QR String?

El QR String no tiene una longitud máxima fija, pero debe cumplir con el estándar EMVCo Merchant Presented Code, en el cual ciertos atributos tienen un límite de longitud.

Para interpretar correctamente la estructura del QR String, se deben tener en cuenta los siguientes elementos:

Ejemplo simple: 00 02 01

  • La primera columna de 2 dígitos “00” corresponden a la posición.
  • La segunda columna de 2 dígitos “02” corresponden a la longitud del valor.
  • La tercera columna “01” es el valor asociado a la posición.

Ejemplo con sub-matriz:

43 37

00 12 com.pagos360

98 11 30714100803

99 02 01

  • La primera columna de 2 dígitos “43” corresponde a la posición.
  • La segunda columna de 2 dígitos “37” corresponde a la longitud de la sub-matriz que sigue.
  • La tercera columna contiene una sub-matriz con diferentes niveles, donde:
    1. La primera columna de 2 dígitos “00” corresponde a la posición dentro de la sub-matriz.
    2. La segunda columna de 2 dígitos “12” corresponde a la longitud del valor de la sub-matriz.
    3. La tercera columna “com.pagos360” es el valor asociado a esa posición dentro de la sub-matriz.
DataDescripciónObservaciones
00 02 01Indicador de formato.Constante.
01 02 12Punto del método de iniciación.Constante.

43 37

00 12 com.pagos360

98 11 30714100803

99 02 01

Identificador de PAGOS360.Constante.

50 XX

00 11 {{ CUIT }}

01 XX {{QR_NAME}}

  • CUIT de la compañía.
  • Nombre del QR

CUIT:

  • Numérico.
  • Siempre debe ser de 11 dígitos.

Nombre del QR:

  • Alfanumérico
  • Mínimo 1 carácter y como máximo 15
52 04 {{ CATEGORY_CODE }}Código de categoría de la compañía.Constante. Numérico. Debe ser de 4 dígitos
53 03 032Código de la moneda.Constante.
58 02 ARCódigo del país.Constante.
59 XX {{ COMPANY_NAME }}Largo y nombre de la compañía.

El largo debe ser de dos dígitos.

El nombre debe ser del largo que indica anteriormente, hasta 25 carácteres.

60 XX

{{ CITY }}

Largo y nombre de la ciudad.

(El nombre DEBE estar en mayúsculas.)

El largo debe ser de dos dígitos.

El nombre debe ser del largo que indica la variable anterior, hasta 15 carácteres.

63 04

{{ CHECKSUM }}

Checksum (CRC) para validar la integridad del string.

Alfanumérico.

Siempre debe ser de 4 carácteres.00 02 0100 02 0100 02 0100 02 0100 02 0100 02 0100 02 0100 02 0100 02 01

¿Qué es el CRC / checksum?

La verificación por redundancia cíclica​ (CRC) es un código de detección de errores usado frecuentemente en redes digitales y en dispositivos de almacenamiento para detectar cambios accidentales en los datos.

¿Cómo se calcula?

El checksum se debe calcular conforme al estándar [ISO/IEC 13239] usando el polinomio '1021' (hex) y el valor inicial 'FFFF' (hex).

Los datos que se deben incluir en el armado del checksum abarcan a todos los objetos que se incluirán en el Código QR, en su orden respectivo, así como el ID y longitud del propio CRC (pero excluyendo su valor).

Ejemplo en javascript

Javascript
Copy

Links de utilidad:

https://crccalc.com/

https://es.wikipedia.org/wiki/Verificaci%C3%B3n_de_redundancia_c%C3%ADclica

Type to search, ESC to discard
Type to search, ESC to discard
Type to search, ESC to discard