Rejeição 400: Parâmetro do QR-Code não está no formato hexadecimal: [Nome do parâmetro do QR Code: xxx)]

Descrição oficial da SEFAZ: Parâmetro do QR-Code não está no formato hexadecimal: [Nome do parâmetro do QR Code: xxx)]

O que significa

Um parâmetro do QR-Code que deveria estar em hexadecimal veio em outro formato.

Por que acontece

O hash foi gravado como texto, em base64, ou com letras maiúsculas/minúsculas fora do esperado pela rotina de conferência.

Como resolver

Gere o parâmetro citado em hexadecimal, conforme o manual, e regere o QR-Code.

Como evitar

Padronize a saída do hash na própria função que o calcula, para não depender de conversão no ponto de uso.