Skip to content

Integração ISSNet ​

O MIDDAG Account integra-se ao ISSNet para emissão de notas fiscais eletrônicas de serviço (NFSe -- Nota Fiscal de Serviço Eletrônica) para o município de Brasília/DF. A integração utiliza o padrão ABRASF 2.04 via SOAP.

O que faz ​

Quando um pagamento é confirmado, o plugin gera automaticamente uma NFSe. A nota fiscal é submetida à autoridade tributária municipal, e o plugin acompanha seu status por meio de polling até que a NFSe seja emitida ou um erro ocorra.

Configuração ​

Pré-requisitos ​

  • Um certificado digital A1 válido (arquivo .pfx) emitido para a empresa.
  • Uma inscrição municipal válida em Brasília/DF.
  • O arquivo do certificado deve ser armazenado fora da raiz do servidor web por segurança.

Configurações ​

Todas as configurações são armazenadas em wp_options com o prefixo middag_issnet_:

ConfiguraçãoDescriçãoExemplo
middag_issnet_cnpj_prestadorCNPJ da empresa (apenas dígitos)12345678000190
middag_issnet_inscricao_municipalNúmero da inscrição municipal0123456789
middag_issnet_certificado_pathCaminho absoluto para o arquivo .pfx/etc/ssl/middag.pfx
middag_issnet_certificado_senhaSenha do certificado (armazenada criptografada)---
middag_issnet_ambientehomologacao ou producaohomologacao
middag_issnet_codigo_servicoCódigo do serviço conforme LC 116/20031.01
middag_issnet_aliquota_issAlíquota do ISS0.05

A senha do certificado é criptografada em wp_options -- nunca é armazenada em texto plano.

Ambientes ​

AmbienteEndpoint WSDL
Homologaçãohttps://www.issnetonline.com.br/homologaabrasf/webservicenfse204/nfse.asmx
ProduçãoConfigurável via opção middag_issnet_wsdl_producao

Sempre teste em homologação antes de fazer alterações na configuração de produção.

Quando é acionado ​

O fluxo de emissão inicia quando o plugin dispara o evento middag_order_payment_confirmed:

Se a configuração do ISSNet estiver ausente ou incompleta, o plugin registra um aviso e pula a emissão. O restante do fluxo do pedido continua normalmente (degradação graciosa).

Rastreamento de status ​

A entidade TaxInvoice rastreia o ciclo de vida completo:

StatusSignificado
PENDINGTaxInvoice criada, ainda não submetida
PROCESSINGRPS submetido, aguardando resposta municipal
ISSUEDNFSe emitida com sucesso
FAILEDEmissão falhou após retentativas
CANCELLEDNFSe cancelada (dentro do prazo legal)

Quando a NFSe é emitida, o plugin armazena o número da NFSe, o código de verificação e a URL pública do documento emitido.

Operações SOAP ​

OperaçãoDireçãoFinalidade
RecepcionarLoteRpsSaídaSubmeter um lote de RPS (um RPS por lote)
ConsultarSituacaoLoteRpsPollingVerificar status de processamento do lote
ConsultarNfseServicoPrestadoPollingRecuperar dados da NFSe emitida
CancelarNfseSaídaCancelar uma NFSe emitida (com motivo)

Cancelamento ​

O cancelamento de NFSe é permitido em até 15 dias após a emissão (regulamentação de Brasília/DF). Após esse prazo, o cancelamento requer um processo administrativo junto à prefeitura. O plugin bloqueia a ação de cancelamento após o prazo ter expirado.

Tratamento de erros ​

CenárioAção
Código de erro SOAPLog detalhado, status da TaxInvoice definido como FAILED, admin notificado
Certificado expiradoEmissão bloqueada, admin notificado por e-mail e aviso no admin
Timeout SOAPRetentativa via WP-Cron com backoff exponencial (máximo 3 tentativas)
Configuração incompletaRegistrar aviso, aviso no admin exibido. Emissão não tentada.
CNPJ/CPF do tomador inválidoStatus da TaxInvoice definido como FAILED com mensagem de erro específica
Arquivo de certificado não encontradoEmissão bloqueada, admin notificado

Política de retentativa ​

TentativaTiming
1Imediata
2+2 minutos
3+10 minutos
Após 3Status: FAILED

Um admin pode reprocessar manualmente uma TaxInvoice com falha pela interface admin.

Hooks ​

HookQuandoPayload
middag_taxinvoice_pendingTaxInvoice criada$tax_invoice_id
middag_taxinvoice_issuedNFSe emitida com sucesso$tax_invoice_id, $nfse_number
middag_taxinvoice_failedEmissão falhou$tax_invoice_id, $error
middag_taxinvoice_cancelledNFSe cancelada$tax_invoice_id, $nfse_number
middag_issnet_certificate_expiringCertificado expira em menos de 30 dias$days_remaining