-
Notifications
You must be signed in to change notification settings - Fork 0
PHP
#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!
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.
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.phppara fazer a requisição para oSaaS.
<?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);
?>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 |
| docdestinatario | nomedestinatario | idgrupo | idintegracao | |
| nlote | numero | dhdpec | nomegrupo | eventos |
| ambiente | impressora | origem | sincronizadopm | cstat |
| importado | destinada | xmldestinatario |