bacen / pix-api

API Pix: a API do Arranjo de Pagamentos Instantâneos Brasileiro, Pix, criado pelo Banco Central do Brasil.
https://bacen.github.io/pix-api
2.36k stars 268 forks source link

[Dúvida] Formato QrCode padrão BR Code (Ordem IDs) #174

Closed etanamati closed 3 years ago

etanamati commented 3 years ago

Gostariamos de tirar uma dúvida com relação a ordem dos campos presentes no QRCode padrão BR Code. Nos QRCodes gerados no padrão BR Code há alguma regra que determina se os IDs devem seguir uma ordem? Ou a ordem não é relevante?

Exemplo considerando a ordem (espaços e quebras de linha extras):

0002 01
0414 12345678901234
2658
 0014 BR.GOV.BCB.PIX
 0136 123e4567-e12b-12d1-a456-426655440000
2730
 0012 BR.COM.OUTRO
 0110 0123456789
5204 0000
5303 986
5406 123.45
5802 BR
5917 NOME DO RECEBEDOR
6008 BRASILIA
6108 70074900
6219
 0515 RP12345678-2019
8039
 0012 BR.COM.OUTRO
 0119 0123.ABCD.3456.WXYZ
6304 AD38

Exemplo sem considerar a ordem (espaços e quebras de linha extras):

0002 01
0414 12345678901234
2658
 0014 BR.GOV.BCB.PIX
 0136 123e4567-e12b-12d1-a456-426655440000
2730
 0012 BR.COM.OUTRO
 0110 0123456789
5303 986
5406 123.45
5204 0000
5802 BR
6008 BRASILIA
5917 NOME DO RECEBEDOR
6219
 0515 RP12345678-2019
6108 70074900
8039
 0012 BR.COM.OUTRO
 0119 0123.ABCD.3456.WXYZ
6304 5110

Ambos QRCodes são válidos?

Manual BR Code disponível em: https://www.bcb.gov.br/estabilidadefinanceira/arranjosintegrantesspb

ninrod commented 3 years ago

@etanamati ,

Neste ponto, o Manual do BR Code segue o documento "EMV for QR codes: merchant presented mode". Você pode verificar esta informação diretamente neste documento.

cryptographix commented 3 years ago

@etanamati Em principio, o único requisito é que na raiz do QR, o campo "00" deve vir em primeiro lugar e o campo "63" deve ser o último no QR. Quanto aos demais campos, não há necessidade de ordená-los. Observe que isso significa que quaisquer campos entre "64" e "99" devem estar ANTES do campo 63.

Dentro de um campo do tipo template (que contém outros campos) não há nenhum requisito de ordenação.

ninrod commented 3 years ago

@etanamati , se houver qualquer dúvida por favor não hesite em perguntar.

etanamati commented 3 years ago

Obrigado @ninrod @SeanWykes

aluisioalves commented 8 months ago

Estou com uma dúvida sobre que calculo ou qual informação tem na posição 62110507, vale a pena ressaltar que estou utilizando Código da transferência. 00020126360014BR.GOV.BCB.PIX0114123456789123455204000053039865406366.675802BR5909ABCABCABC6012Araguaina-To 62110507 15139936304D9E4

dev-gto commented 8 months ago

Estou com uma dúvida sobre que calculo ou qual informação tem na posição 62110507, vale a pena ressaltar que estou utilizando Código da transferência. 00020126360014BR.GOV.BCB.PIX0114123456789123455204000053039865406366.675802BR5909ABCABCABC6012Araguaina-To 62110507 15139936304D9E4

Tem algo estranho nessa tua pergunta... por se tratar de TLV, não existe exatamente uma posição.

Porém, pelo manual do brcode, seria algo como:

62 - Aditional Data Field Template
11 - Tamanho do campo 62 (pode ir de 05...29)
05 - ID da transação (Reference Label)
07 - Tamanho dos dados (pode ir de 01...25)

Então me parece que tens de inserir 7 caracteres referentes ao ID da sua transação (ou ir ajustando os campos dos tamanhos de acordo com a tua necessidade).

Note que o tamanho da Aditional Data Field Template (11, no caso), será sempre o tamanho dos dados (7) + 4, considerando que a especificação atual do BRCode prevê exatamente um campo 05 mandatório.

Por exemplo, poderias muito bem ter um campo 62 14 05 10 1234567890:

                Payload Format Indicator: 00 02 01
        Additional Consumer Data Request: 26 36 0014BR.GOV.BCB.PIX011412345678912345
                                     GUI:       00 14 BR.GOV.BCB.PIX
                                   chave:       01 14 12345678912345
                  Merchant Category Code: 52 04 0000 (Not used)
                    Transaction Currency: 53 03 986 (Brazilian real)
                      Transaction Amount: 54 06 366.67
                            Country Code: 58 02 BR (Brazil)
                           Merchant Name: 59 09 ABCABCABC
                           Merchant City: 60 12 Araguaina-To
          Additional Data Field Template: 62 14 05101234567890
                         Reference Label:       05 10 1234567890
                                     CRC: 63 04 016C