28 September 2018

A fabricação de Blanks é iniciada através da requisição de um lote, via comunicação Fabricante → Serpro (/api-fabricante/lotes).

O Serpro devolve o QR Code do Blank em Base64 e também o Serial, sendo um alfanumérico contendo 15 caracteres AAMMFFSSSSSSSSS, onde:

O QRCode é criptografado, de forma a evitar que fraudadores gerem um QRCode válido para um determinado veículo. Portanto, a obtenção do serial a partir do QRCode só é possível via o sistema de QRCodes seguros do Serpro, o Vio.

Nós utilizamos JSON para trafegarmos as mensagens, e por isso o QR Code é enviado em Base64, podendo ser facilmente convertido para binário. Cabe aos fabricantes gerarem a imagem a partir do conteúdo em Base64 convertendo para Binário (arquivo ".bin"). Imaginamos que os passos abaixo possam ajudar na execução do fluxo:

Citamos também a importância do cumprimento dos padrões de qualidade, indicando inclusive a norma ISO/IEC 29158. A impressão é executada a laser e itens como resolução, borda, tempo de leitura, armazenamento devem ser considerados pelos fabricantes.

Exemplo de código Java que gera uma imagem de QR Code

    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.util.Base64;

    import javax.imageio.ImageIO;

    import io.nayuki.qrcodegen.QrCode;

    public class GeracaoQrcodeLince {

	    public static void main(String[] args) throws Exception {
	
		    String qrcodeEmBase64 = "NWJhY2Y1ZW..."; // Recebido do Emplaca WS
		    byte[] bytesDoQrcode = Base64.getDecoder().decode(qrcodeEmBase64);
		    QrCode qr = QrCode.encodeBinary(bytesDoQrcode, QrCode.Ecc.MEDIUM);
		    BufferedImage img = qr.toImage(10, 4); 
		    File imgFile = new File("/tmp/qr-lince.png"); 
		    ImageIO.write(img, "png", imgFile);
	    }
		
    }

Referências

ATENÇÃO: os trechos dos códigos citados são apenas exemplos, avaliar com cautela.