Webinar Fundo de Combate à Pobreza (FCP) - Oobj e Systax

Integração HTTP Local

Integração via Rest (HTTP)

A integração Rest que permite a comunicação através de HTTP fornece as mesmas operações disponíveis na integração via dll, são elas:

  • Emissão (Salva um lote de envio na pasta de entrada)
  • Cancelamento (Salva um arquivo de cancelamento na pasta de entrada)
  • Reimpressão
  • Impressão de texto livre em alguma impressora
  • Acompanhar a resposta de um arquivo

 

Toda a comunicação é baseada em chamadas de POST com conteúdo JSON no serviço exposto na localização onde o DF-e Client está instalado e a porta onde o serviço é configurado (default 3090). A ação é definida através do parâmetro de URL “acao”.


Obs.: Nenhuma autenticação é necessária, o serviço será exposto localmente.

 

Contrato de configuração

Todas as requisições deverão ter no JSON base a propriedade “config” que carrega alguns metadados da requisição, ele é definido pelas seguintes propriedades:

  • emitCpfCnpj : Número do CNPJ do emitente (Opcional);
  • url_oobj_service = IP e porta onde o serviço HTTP está online.
  • integracao : Identificador da integração definido de comum acordo junto a Oobj, este identificador define os layouts de entrada na emissão, cancelamento e outras ações necessárias;
  • Integrações implementadas:
    • micros (Utiliza layout Micros na entrada)
    • cielopos (Utiliza layout Micros na entrada mas não imprime)
    • yrest (Utiliza layout txt simplificado)
  • serie : Série em que as notas enviadas para este serviço serão emitidas, também é relevante para a configuração de impressoras;
  • idPDV : Identificador do PDV a ser utilizado na emissão da nota
  • Conteúdo: String contendo conteúdo do lote a ser emitido de acordo com o Layout escolhido. Esse conteúdo deve ser encodado em UTF-8.
    Veja aqui como fazer o enconde do conteúdo do seu documento.

 

O CNPJ do emitente é opcional?

Sim, para os casos onde o cliente só tenha um único CNPJ configurado no periférico. Caso tenha mais, o periférico vai responder dizendo que não pode executar a operação.

 

Exemplo de JSON completo:

{
"config":{ "emitCpfCnpj":"07385111000102", "url_oobj_service":"https://127.0.0.1:3090/", "integracao":"micros", "serie":"35", "idPDV":"1"
}, "conteudo":
"H1%7cF%7cRicardo%20Faria%7c02372992163%7c%7c%7c%7c%7c%7c%7c%7c%7c%0d%0aH2%7c19%7c267%7c0%7cVANESSA%7c0.00%0d%0aH3%7c%7c%0d%0aI%7c50004%7cCASQUINHA%20%20%20%20%20%20%20%7c1%7c2.00%7c2.00%7c18.0000%7c0.00%7c21050010%7c%7c10.0%7c5.0%0d%0aP%7c10%7cDinheiro%7c2%7c%7c%7c%7c%7c%0d%0aCPL%7cPDV%3a%2018%20%2f%20Conta%20N.%3a%20862%20%2f%20Mesa%3a%200%20%2f%20Emp.%3a%20VANESSA%0d%0aCPL%7c%2a%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0d%0aCPL%7cSEJA%20BEM%20VINDO%20A%0d%0aCPL%7cBURGER%20KING%0d%0a"
}


Obs.: Em todos os contratos de requisição o atributo “config” fica presente no mesmo local, sendo assim nos próximos exemplos resumiremos ele.

 

Integrações existentes

  • integracao=micros - Este contrato define uma emissão no formato TXT Micros onde é feita a impressão do cupom pelo periférico Oobj diretamente na impressora escolhida.
  • integracao=cielopos - Este contrato de integração define uma emissão no formato TXT Micros e retorno em XML onde a aplicação da Oobj não faz nenhum tipo de impressão.

 

O retorno é recebido no seguinte formato:

<retorno>
	<resposta> … Conteúdo de resposta padrão no formato TXT SP ... </resposta>
	<temImpressao> boolean ou false que informa se há impressão </temImpressao>
	<impressao>
Conteúdo formatado em 42 colunas para a impressão Cielo [opcional]
	</impressao>
</retorno>

 

Obs.: O conteúdo de impressão já está completamente formatado a ser enviado a máquina cielo.

 

Emissão

A emissão de uma nota fiscal através da integração HTTP deve ocorrer em duas etapas, a de emissão onde é solicitado o início de um novo processo de emissão, seguido do acompanhamento que é a esperado pelo arquivo de resposta.

  • Ação do endpoint:

http://localhost:3090/?acao=emissao

  • Contrato para comunicação:

{"config": { … ver trecho Contrato de configuração … },
"conteudo": " String com texto posicional ou XML que identifique um novo pedido de acordo com o layout utilizado “}

  • Resposta:

A resposta de sucesso deste método ocorre pelo status 200 (conforme padrão do http) contendo uma String que é o identificador do arquivo para acompanhamento. Este nome deve ser utilizado de acordo com as informações presentes na requisição de Acompanhamento.

 

Acompanhamento

Acompanhamento é uma ação que só deve ser utilizada como indicativo de outras ações, sua função é acompanhar o resultado de uma ação assíncrona, como é o caso da Emissão.

Cada requisição de acompanhamento tem timeout padrão de 30 segundos (podendo ser aumentado ou diminuído de acordo com configuração do DF-e Client), após os 30 segundos caso não haja retorno o solicitante pode decidir refazer a operação ou acompanhar novamente.

** Importante, uma vez que uma requisição de acompanhamento responda com sucesso (timeout é respondido com falha) o trabalho será consumido e novos acompanhamentos do mesmo trabalho apenas resultarão em timeouts.

  • Ação do endpoint:

http://localhost:3090/?acao=acompanhamento&nomeacompanhamento=Nome do acompanhamento recebido

  • Contrato para comunicação:

{"config": { … ver trecho Contrato de configuração … } }

  • Resposta:

A resposta de sucesso deste método ocorre pelo status 200 contendo uma String que é a resposta do trabalho assíncrono no layout definido pela integração.

  • Timeout:

A resposta de timeout deste método ocorre pelo status 504 quando o resultado da operação ainda não tiver sido produzido.

 

Cancelamento

O cancelamento de uma nota via integração HTTP ocorre no mesmo fluxo que a emissão, uma requisição de cancelamento e uma de acompanhamento.

  • Ação do endpoint:

http://localhost:3090/?acao=cancelarnota

  • Contrato para comunicação:

{
"config": { … ver trecho Contrato de configuração … },
"chaveAcesso": " String com chave de acesso da nota a ser cancelada “,
"protocolo": " String com o protocolo de autorização da nota “,
"justificativa": " String com o texto da justificativa no tamanho mínimo requerido pela sefaz “,
"cpfCnpjDestinatario": " String com o CPF ou CNPJ do destinatário da CF-e emitida, este campo somente é aplicado para CF-e “
}

  • Resposta:

A resposta de sucesso deste método ocorre pelo status 200 (conforme padrão do http) contendo uma String que é o identificador do arquivo para acompanhamento. Este nome deve ser utilizado de acordo com as informações presentes na requisição de Acompanhamento.

 

Reimprimir

A solicitação de uma reimpressão via integração HTTP gera um novo pedido de reimpressão, não há resultado de acompanhamento.

  • Ação do endpoint:

http://localhost:3090/?acao=reimprimir

  • Contrato para comunicação:

{
"config": { … ver trecho Contrato de configuração … },
"chaveAcesso": " String com chave de acesso da nota a ser reimpressa “
}

  • Resposta:

A resposta de sucesso deste método ocorre pelo status 200 e seu conteúdo é irrelevante.

 

Impressão (Texto Auxiliar)

Solicita a impressão do texto enviado já com formatação via requisição HTTP.

  • Ação do endpoint:

http://localhost:3090/?acao=impressao

  • Contrato para comunicação:

{
"config": { … ver trecho Contrato de configuração … },
"conteudo": " String com o conteúdo a ser impresso “
}

  • Resposta:

A resposta de sucesso deste método ocorre pelo status 200 e seu conteúdo é irrelevante.

 service exposto sobre a autorização desta nota.

0 (0)
Avaliação do Artigo (Nenhum voto)
Avaliar esse artigo
Anexos
Não há anexos para este artigo.
Artigos Relacionados RSS Feed
Não há artigos relacionados para este artigo.
Comentários
Nome
Email
Código de Segurança Security Code
Não há comentários para este artigo. Seja o primeiro a postar um comentário.