{"id":20,"date":"2026-09-21T22:28:56","date_gmt":"2026-09-21T22:28:56","guid":{"rendered":"https:\/\/asx.dev.br\/?p=20"},"modified":"2026-09-21T22:28:56","modified_gmt":"2026-09-21T22:28:56","slug":"guia-pratico-de-utilizacao-nfse-dll","status":"publish","type":"post","link":"https:\/\/asx.dev.br\/?p=20","title":{"rendered":"Guia pr\u00e1tico de utiliza\u00e7\u00e3o\u00a0 &#8211;  NFSe DLL"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Este guia tem como objetivo explicar rapidamente o funcionamento das fun\u00e7\u00f5es que podem ser encontradas na nossa DLL NFSe. O uso na pr\u00e1tica destas fun\u00e7\u00f5es pode ser observado atrav\u00e9s do c\u00f3digo fonte do aplicativo de testes que acompanha o pacote \u2013 pasta \u201csource\u201d.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">1. GeraDPS \/ GeraDpsStr:<\/mark><\/strong> Esta fun\u00e7\u00e3o vai receber um conjunto de vetores que devem ser preenchidos conforme o exemplo no fonte do aplicativo de testes. No mesmo est\u00e3o comentados cada posi\u00e7\u00e3o de cada vetor, e qual tag \u00e9 gerada, assim como instru\u00e7\u00f5es para tags espec\u00edficas, caso seja necess\u00e1rio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Exemplo em C#:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"180\" src=\"https:\/\/asx.dev.br\/wp-content\/uploads\/2026\/09\/image-1024x180.png\" alt=\"\" class=\"wp-image-21\" srcset=\"https:\/\/asx.dev.br\/wp-content\/uploads\/2026\/09\/image-1024x180.png 1024w, https:\/\/asx.dev.br\/wp-content\/uploads\/2026\/09\/image-300x53.png 300w, https:\/\/asx.dev.br\/wp-content\/uploads\/2026\/09\/image-763x134.png 763w, https:\/\/asx.dev.br\/wp-content\/uploads\/2026\/09\/image.png 1030w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">Nos casos dos pacotes VB6 e Delphi<\/mark>, a fun\u00e7\u00e3o que deve ser utilizada \u00e9 a <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-luminous-vivid-orange-color\">GeraDpsStr<\/mark>. Ela funciona de maneira semelhante, no entanto ela recebe uma string concatenada com os valores de todas as posi\u00e7\u00f5es de todos os vetores. <strong>No pr\u00f3prio c\u00f3digo fonte do aplicativo de testes \u00e9 poss\u00edvel encontrar uma fun\u00e7\u00e3o que faz este processo e que pode ser simplesmente copiada e utilizada no seu pr\u00f3prio c\u00f3digo<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">2. AssinarArquivoXML:<\/mark><\/strong> Esta fun\u00e7\u00e3o \u00e9 utilizada para assinar o xml da DPS que foi gerada no passo anterior para que possa ser transmitida e validada pela SEFAZ. A fun\u00e7\u00e3o simplesmente recebe o caminho do arquivo que precisa ser assinado e em seguida vai solicitar um certificado digital v\u00e1lido para concluir a assinatura. Ap\u00f3s isto o arquivo assinado ser\u00e1 gerado na pasta <strong>\u201c&#8230;\\nfse\\DPS\\assinado\u201d.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">3. ValidarArquivoXML:<\/mark><\/strong> Esta fun\u00e7\u00e3o funciona de forma semelhante \u00e0 anterior. Ela recebe o caminho de um arquivo assinado, e vai fazer uma valida\u00e7\u00e3o estrutural do arquivo. Isto evita que erros muito \u00f3bvios passem para a fase de transmiss\u00e3o do arquivo, mas ela n\u00e3o valida erros relacionados \u00e0s informa\u00e7\u00f5es que s\u00e3o passadas, apenas valida a estrutura e sintaxe do arquivo xml assinado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">4. EnviarDpsGerarNfse:<\/mark><\/strong> Esta \u00e9 a fun\u00e7\u00e3o que faz a transmiss\u00e3o do DPS assinado e retorna o resultado da transmiss\u00e3o. Basta informar o caminho do DPS assinado, em seguida o componente vai solicitar novamente um certificado digital v\u00e1lido, e logo ap\u00f3s a transmiss\u00e3o ser\u00e1 feita. Caso haja algum erro, uma mensagem ser\u00e1 retornada explicando o que causou o erro. Caso a DPS seja aprovada, o XML da NFSe ser\u00e1 finalmente gerado no caminho <strong>\u201c&#8230;\\nfse\\NF\u201d<\/strong>. <strong>&nbsp;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">5. ImprimeDANFSe:<\/mark><\/strong> A fun\u00e7\u00e3o para impress\u00e3o do DANFSe n\u00e3o est\u00e1 funcional no momento pois a SEFAZ desativou a API que fazia a gera\u00e7\u00e3o do PDF, e estamos trabalhando para implementar uma impress\u00e3o pr\u00f3pria. No entanto, \u00e9 poss\u00edvel baixar o PDF da NFSe atrav\u00e9s do portal da pr\u00f3pria NFSe e para isto basta simplesmente informar a chave de acesso da nota que foi emitida.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Acessando o portal: <a href=\"https:\/\/www.nfse.gov.br\/consultapublica\/\">https:\/\/www.nfse.gov.br\/consultapublica\/<\/a><strong>,<\/strong> \u00e9 poss\u00edvel baixar notas que foram emitidas em produ\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">J\u00e1 atrav\u00e9s do portal: <a href=\"https:\/\/www.producaorestrita.nfse.gov.br\/consultapublica\/\">https:\/\/www.producaorestrita.nfse.gov.br\/consultapublica\/<\/a>, \u00e9 poss\u00edvel baixar notas emitidas em homologa\u00e7\u00e3o.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"886\" height=\"384\" src=\"https:\/\/asx.dev.br\/wp-content\/uploads\/2026\/09\/image-1.png\" alt=\"\" class=\"wp-image-22\" srcset=\"https:\/\/asx.dev.br\/wp-content\/uploads\/2026\/09\/image-1.png 886w, https:\/\/asx.dev.br\/wp-content\/uploads\/2026\/09\/image-1-300x130.png 300w, https:\/\/asx.dev.br\/wp-content\/uploads\/2026\/09\/image-1-766x332.png 766w\" sizes=\"auto, (max-width: 886px) 100vw, 886px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Este processo tamb\u00e9m pode ser feito atrav\u00e9s do Portal do contribuinte que tamb\u00e9m existem ambos em ambiente de produ\u00e7\u00e3o e homologa\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Portal do Contribuinte (Produ\u00e7\u00e3o): <a href=\"https:\/\/www.nfse.gov.br\/EmissorNacional\/Login\">https:\/\/www.nfse.gov.br\/EmissorNacional\/Login<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Portal do Contribuinte (Homologa\u00e7\u00e3o): <a href=\"https:\/\/www.producaorestrita.nfse.gov.br\/EmissorNacional\/Login\">https:\/\/www.producaorestrita.nfse.gov.br\/EmissorNacional\/Login<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Este guia tem como objetivo explicar rapidamente o funcionamento das fun\u00e7\u00f5es que podem ser encontradas na nossa DLL NFSe. O uso na pr\u00e1tica destas fun\u00e7\u00f5es pode ser observado atrav\u00e9s do c\u00f3digo fonte do aplicativo de testes que acompanha o pacote \u2013 pasta \u201csource\u201d. 1. GeraDPS \/ GeraDpsStr: Esta fun\u00e7\u00e3o vai receber um conjunto de vetores [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":23,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"pagelayer_contact_templates":[],"_pagelayer_content":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-20","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/asx.dev.br\/index.php?rest_route=\/wp\/v2\/posts\/20","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/asx.dev.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/asx.dev.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/asx.dev.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/asx.dev.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=20"}],"version-history":[{"count":1,"href":"https:\/\/asx.dev.br\/index.php?rest_route=\/wp\/v2\/posts\/20\/revisions"}],"predecessor-version":[{"id":24,"href":"https:\/\/asx.dev.br\/index.php?rest_route=\/wp\/v2\/posts\/20\/revisions\/24"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/asx.dev.br\/index.php?rest_route=\/wp\/v2\/media\/23"}],"wp:attachment":[{"href":"https:\/\/asx.dev.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=20"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/asx.dev.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=20"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/asx.dev.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=20"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}