DanrleiNascimento
-
Total de ítens
42 -
Registro em
-
Última visita
Community Answers
-
DanrleiNascimento's post in erro RNG9999 ao enviar DPS para Portal Nacional NFS-e was marked as the answer
Problemas identificados
1. Formato de envio incorreto
Projeto atual (funciona):
Envia JSON: {"dpsXmlGZipB64": "..."}
Content-Type: application/json
Método: POST REST
Projeto wsrtph (não funciona):
Envia SOAP XML (para NFe)
Content-Type: text/xml
Método: POST SOAP
2. Falta de compactação e codificação
Projeto atual (funciona):
# 1. XML → Bytes xml_bytes = xml_string.encode('utf-8') # 2. Comprimir GZIP xml_gzip = gzip.compress(xml_bytes, compresslevel=9) # 3. Codificar Base64 xml_base64 = base64.b64encode(xml_gzip).decode('ascii')
Projeto wsrtph (não funciona):
Não comprime com GZIP
Não codifica em Base64
Envia XML direto (método de NFe)
3. Assinatura digital diferente
Projeto atual (funciona):
Canonicalização: http://www.w3.org/2001/10/xml-exc-c14n#WithComments
Algoritmos: SHA-256 (com fallback SHA-1)
Transform: xml-exc-c14n#WithComments
Projeto wsrtph (não funciona):
Canonicalização: http://www.w3.org/TR/2001/REC-xml-c14n-20010315 (C14N padrão)
Sem WithComments
Transform: C14N padrão
4. URL e endpoint incorretos
Projeto atual (funciona):
URL: https://sefin.nfse.gov.br/SefinNacional/nfse
Endpoint REST para NFS-e
Projeto wsrtph (não funciona):
URLs de NFe (SOAP)
Exemplo: https://nfe-homologacao.svrs.rs.gov.br/ws/recepcaoevento/...
-
DanrleiNascimento's post in Emitir Nfs-e pelo WebService Pública was marked as the answer
SOLUÇÃO:
Envelope:
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ser=\"http://service.nfse.integracao.ws.publica/\">
<soapenv:Body>
<ser:RecepcionarLoteRps>
<XML>
<![CDATA[ AQUI COLOCA O XML ]]>
</XML>
</ser:RecepcionarLoteRps>
</soapenv:Body>
</soapenv:Envelope
-
DanrleiNascimento's post in Emitir Nfs-e pelo WebService Pública was marked as the answer
SOLUÇÃO:
Envelope:
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ser=\"http://service.nfse.integracao.ws.publica/\">
<soapenv:Body>
<ser:RecepcionarLoteRps>
<XML>
<![CDATA[ AQUI COLOCA O XML ]]>
</XML>
</ser:RecepcionarLoteRps>
</soapenv:Body>
</soapenv:Envelope
-
DanrleiNascimento's post in Selecionar Certifica na tela aberta pelo Java was marked as the answer
SOLUÇÃO: Os certificados são sempre apresentados em ordem de vencimento do maior para o menor. Eu consigo ler quais os certificados estão instalados na máquina usando TElWinCertStorage. Então eu os ordeno da mesma forma e localizo a posição dele. Então quando abre a tela para selecionar, eu clico no certificado certo usando os comandos do teclado.
void __fastcall TfrmNavegador::TimerSelecionarCertificadoTimer(TObject *Sender)
{
TimerSelecionarCertificado->Enabled = false;
Application->ProcessMessages();
Sleep(1000);
if(!FindWindowW(NULL, String("Segurança do Windows").c_str()))
{
TimerSelecionarCertificado->Enabled = true;
return;
}
setLog("Selecionando certificado.");
WebBrowser1->Silent = true;
Application->ProcessMessages();
Sleep(1000);
for(int i = 0; i < getPosicaoCertificado(); i++)
{
keybd_event(VK_DOWN, 0, 0, 0);
keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0);
Sleep(100);
}
keybd_event(VK_RETURN, 0, 0, 0);
keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);
}
