Skip to content
Igor Souza Martins edited this page Feb 21, 2017 · 8 revisions

#Como testar o Manager SaaS utilizando PHP

Este tutorial leva em consideração que você tenha um conhecimento básico da linguagem PHP e tenha um servidor como o XAMP ou WAMP, rodando em sua maquina.

  • Caso você não tenha um servidor, você pode realizar o download aqui!

Agora que você já possui o servidor, podemos iniciar os testes!


Mão na massa!

Este tutorial tem como objetivo mostrar como é feita a comunicação com o Manager SaaS através das requisições HTTP, nele vamos verificar exemplos para Enviar, Consultar, Imprimir e Cancelar a nota.

Envio

Parâmetros necessários

  • Grupo

  • Se refere ao nome do grupo no qual a empresa que está emitindo a nota faz parte.

  • CNPJ

  • Ele é de acordo com a empresa que está emitindo a nota.

  • Arquivo

  • Ele é referente aos dados da nota que vamos emitir.

  • O envio é feito através de um POST, dessa forma no nosso exemplo utilizamos o seguinte código no arquivo envia.php para fazer a requisição para o SaaS.

<?php
//Carregamos o conteúdo do arquivo NFe.tx2, pois dentro dele nós temos todos os dados necessários para autorizar uma nota.
  $tx2 = file_get_contents('NFe.tx2');
  
//Aqui vamos preencher os parâmetros obrigatórios da rota Envia
  $post_data['grupo']= $_POST['grupo'];
  $post_data['cnpj']= $_POST['CNPJ'];
  $post_data['arquivo']= $tx2;

//Passamos para a variável host o endereço do SaaS
  $host = $_POST['host'];

//Monta uma query no formato que a requisição POST necessita para enviar informações para um determinado destinatário
  $data=http_build_query($post_data);

//Para o SaaS autorizar uma comunicação entre seu sistema e nosso servidor, é necessário autenticar essa requisição com o usuario e senha
  $usuario = $_POST['usuario'];
  $senha = $_POST['senha'];

//Essa autenticação deve ser encodada em Base64
  $auth = base64_encode("$usuario:$senha");

//Aqui iniciamos o processo de montagem da requisição e envio dela
  $socket = fsockopen("ssl://".$host, 7071, $errno, $errstr, 15);

  $http  = "POST /ManagerAPIWeb/nfe/envia HTTP/1.1\r\n";
  $http .= "Authorization: Basic ".$auth."\r\n";
  $http .= "Host: ".$host.":7071\r\n";
  $http .= "User-Agent: " . $_SERVER['HTTP_USER_AGENT'] . "\r\n";
  $http .= "Content-Type: application/x-www-form-urlencoded\r\n";
  $http .= "Content-length: " . strlen($data) . "\r\n";
  $http .= "Connection: close\r\n\r\n";
  $http .= $data."\r\n\r\n";
  fwrite($socket, $http);               

  $result="";

//Lemos todas as linhas do retorno da requisição e atribuimos elas para a variável $result
  while (!feof($socket))
  {
    $result .= fgets($socket, 4096);
  }
  fclose($socket);

//Aqui separamos o que é header e o que é o conteúdo que vamos retornar para o front
  list($header, $body) = preg_split("/\R\R/", $result, 2);

//Devolvemos para o front o conteúdo de resposta do SaaS
  echo($body); 
?>

Consulta

Parâmetros necessários

  • Grupo
  • Se refere ao nome do grupo no qual a empresa que está emitindo a nota faz parte.
  • CNPJ
  • Ele é de acordo com a empresa que está emitindo a nota.
  • Filtro
  • Ele é referente ao que vamos usar para consultar, por exemplo a chave de uma nota e o parâmetro.
  • Campos
  • Serão os campos que queremos que sejam retornados nessa consulta, abaixo temos uma tabela de todos os campos que podem ser consultados.
handle chave situacao nnf codnf
nrecibo nprotenvio nprotcanc nprotinutil nregdpec
modoentrada modosaida cnpj motivo dtautorizacao
dtcadadstro dtcancelamento dtemissao impresso envemail
email docdestinatario nomedestinatario idgrupo idintegracao
nlote numero dhdpec nomegrupo eventos
ambiente impressora origem sincronizadopm cstat
importado destinada xmldestinatario

Clone this wiki locally