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