Boa tarde Italo,
Já havia analisado esse doc, mas analisei novamente para verificar se tinha me passado em alguma coisa.
Não encontrei nesse documento informações para geração do Token diferenciado em homologação, abaixo oque consta no documento referente ao token de homologação:
Para a emissão de NFC-e em ambiente de homologação a empresa deverá utilizar CSC (token) que solicitou pela página web de sua Secretaria da Fazenda.
Partindo desse principio, se entende que tanto em homologação como em produção pode ter um token válido, isso dependendo do estado.
No estado do MT para realização de testes no ambiente de homologação, o token poderá ser gerado pelo próprio contribuinte, não sendo necessário solicitar junto a SEFAZ.
Porém no RS em ambiente de homologação não valida um token gerado manualmente.
Na função GetURLQRCode quando é homologação o token passado de parâmetro é IGNORADO e o mesmo é gerado através da chave e do IDToken, código abaixo:
cTokenHom := Copy(AchNFe, 7, 8) + '20' + Copy(AchNFe, 3, 2) + Copy(cIdToken, 3, 4);
A principio no MT então o token de homologação gerado pela função GetURLQRCode seria valido (não fiz os testes referente a esse estado para ter certeza).
Acredito que se o ambiente for homologação e for passado de parâmetro o token, o mesmo deveria ser utilizado para geração do hash.
Exemplo:
if (( AAmbiente = taHomologacao ) and ( AToken = '' )) then
sToken := cIdToken + cTokenHom
else
sToken := cIdToken + cTokenPro;