Closed ivanobom closed 3 years ago
Entendi seu problema, deixe-me tentar te ajudar. Considere o seguinte:
O padrão EMV estabelece 2 dígitos para o campo e 2 dígitos para o tamanho. Dessa forma não há como ter tamanho maior que 99. Com isso o 100 já seria inválido pois na verdade o tamanho seria 10 e o último 0 já seria o primeiro byte de dados.
Com relação ao campo descrição, na verdade ele disputa com os outros do 26. Uma vez que o 26 contém:
Dessa forma, considerando que a "família"/gui 26 só pode ter 99 caracteres... Onde:
0014BR.GOV.BCB.PIX
(tamanho 18 bytes)01XX[CHAVEPIX]
(4 do "cabeçalho" + tamanho da chave pix)02XX[Descricao]
(4 do "cabeçalho" + tamanho da descricao)Diante disso, a descrição pode ter no máximo (99-18-4-4-tamanho dos caracteres da chave pix).
Exemplos:
Para a chave doe@r3n4t0.cyou
que possui 15 bytes, temos 99-18-8-15 = 58 bytes disponíveis para usar na descrição.
Já para a chave 2ab23963-d925-413c-9d81-2cbefeee1bd1
que possui 36 bytes, temos 99-18-8-36 = 37 bytes disponíveis para usar na descrição.
Isso já está considerado neste trecho do código do site do live demo / gerador de qr code do pix: https://github.com/renatomb/php_qrcode_pix/blob/f407efff0d4b98f77a731236cecf89af7eba1557/index.php#L110-L116
Espero ter te ajudado, caso não tenha compreendido completamente recomendo que verifique a página 4 do Manual de Padrões para Iniciação do Pix.
Muito obrigado pelos esclarecimentos.
Primeiramente eu gostaria de parabenizá-lo por ter disponibilizado este projeto.
Pelo que eu li na documentação do PIX, o campo "descrição" possui um limite de 100 caracteres. Porém percebi que usando mais de 37 caracteres na descrição a validação do QR-CODE mostra como inválido. Ao gerar um QR-CODE pelo seu formulário no index.php eu percebi que ele trunca automaticamente a descrição em 37 caracteres.
Comparando as linhas geradas para 37 e 38 caracteres, vi que a diferença aparece no começo da linha, mudando um 99 para 100
Em um outro teste, usando o e-mail como ID do PIX, vi que trunca com 53 caracteres, mas com isso vi que na verdade o limite não é a quantidade de caracteres da descrição, mas sim o total de 99 caracteres depois do 99, como mostrado em negrito na linha abaixo:
Aparentemente é necessário fazer algum ajuste quando passa de 99, mas não faço idéia como fazer tal correção. Poderia me ajudar com isso?
Obrigado. Ivan