Para quem ainda esta com problemas pra gerar o qrCode vou postar aqui da maneira que esta funcionando, pelo menos para o MT:
procedure TfrmDanfeECF.GerarQrCode;
var
s_aux, dh_emi, s_hash: string;
begin
dh_emi := GetUTC( CodigoParaUF(facbr.NotasFiscais.Items[0].NFe.Ide.cUF),
StrToDateTime(FormatDateTime('dd/mm/yyyy',facbr.NotasFiscais.Items[0].NFe.Ide.dEmi)+' '+
FormatDateTime('hh:mm:ss', facbr.NotasFiscais.Items[0].NFe.Ide.dEmi)));
dh_emi := StrToHex( FormatDateTime('yyyy-mm-dd',facbr.NotasFiscais.Items[0].NFe.Ide.dEmi)+'T'+
FormatDateTime('hh:mm:ss', facbr.NotasFiscais.Items[0].NFe.Ide.dEmi)+dh_emi );
if (FAcbr.NotasFiscais.Items[0].NFe.ide.tpAmb = taHomologacao) then
begin
FIdToken := '000001';
end;
if (FAcbr.NotasFiscais.Items[0].NFe.ide.tpAmb = taHomologacao) then
begin
FToken := Copy(FAcbr.NotasFiscais.Items[0].NFe.Emit.CNPJCPF, 1, 8)+IntToStr(YearOf(Now))+'0001';
end;
s_aux :='chNFe=<chaveacesso>'+
'&nVersao=100'+
'&tpAmb=<ambiente>'+
IIf(facbr.NotasFiscais.Items[0].NFe.Dest.CNPJCPF<>'', '&cDest=<cnpj_dest>', '')+
'&dhEmi=<data_hora>'+
'&vNF=<valor>'+
'&vICMS=<valor_icms>'+
'&digVal=<digito_val>'+
'&cIdToken=<id_token><token>';
s_aux := StringReplace(s_aux, '<chaveacesso>', SomenteNumeros(facbr.NotasFiscais.Items[0].NFe.infNFe.ID), []);
s_aux := StringReplace(s_aux, '<ambiente>', TpAmbToStr(facbr.NotasFiscais.Items[0].NFe.Ide.tpAmb), []);
s_aux := StringReplace(s_aux, '<data_hora>', dh_emi, []);
s_aux := StringReplace(s_aux, '<valor>', StringReplace(FormatFloat('##,##0.00',facbr.NotasFiscais.Items[0].NFe.Total.ICMSTot.vNF),',','.',[]),[] );
s_aux := StringReplace(s_aux, '<valor_icms>', StringReplace(FormatFloat('##,##0.00',facbr.NotasFiscais.Items[0].NFe.Total.ICMSTot.vICMS),',','.',[]),[] );
s_aux := StringReplace(s_aux, '<digito_val>', StrToHex(facbr.NotasFiscais.Items[0].NFe.signature.DigestValue), []);
s_aux := StringReplace(s_aux, '<id_token>', FIdToken, []);
s_aux := StringReplace(s_aux, '<cnpj_dest>', facbr.NotasFiscais.Items[0].NFe.Dest.CNPJCPF, []);
with TACBrEAD.Create(nil) do
try
s_hash := StringReplace(s_aux,'<token>',FToken,[]);
s_hash := CalcularHash(s_hash, dgstSHA1);
finally
Free;
end;
s_aux := StringReplace(s_aux,'<token>', '',[]) + '&cHashQRCode='+s_hash;
s_aux := GetSiteConsulta( CodigoParaUF(FAcbr.NotasFiscais.Items[0].NFe.Ide.cUF), FAcbr.NotasFiscais.Items[0].NFe.Ide.tpAmb ) +'?'+ s_aux;
MontarQrCode(s_aux);
end;
Notem que, quando for gerar o hash, deve ser feito com IdToken e Com o Token, para homologação deve ser IdToken = '000001',
e Token, (primeiros 8 digitos do CNPJ)+Ano+0001. Quando for gerar o qrCode deve remover o "token" e deixar apenas o IdToken senão não vai fechar e vai retornar o erro 100.
pra quem tiver interesse segue uma string do qr_code funcionando.
http://homologacao.sefaz.mt.gov.br/nfce/consultanfce?chNFe=51131115319954000139650050000001031175076630&nVersao=100&tpAmb=2&dhEmi=323031332D31312D30375431363A33343A35322D30333A3030&vNF=111.01&vICMS=19.98&digVal=486256502F3478596278784230314470377466474E4151356949553D&cIdToken=000001&cHashQRCode=56A39A17537CAB21C1632887C332BE95CD1BD51F
Abaixo a string sob a qual foi gerado o hash
STRING:
chNFe=51131115319954000139650050000001031175076630&nVersao=100&tpAmb=2&dhEmi=323031332D31312D30375431363A33343A35322D30333A3030&vNF=111.01&vICMS=19.98&digVal=486256502F3478596278784230314470377466474E4151356949553D&cIdToken=0000011531995420130001
HASH:
56A39A17537CAB21C1632887C332BE95CD1BD51F