TEF - AgentCliSitef + ScriptCase

Bom dia, alguém aqui já fez alguma coisa com o AgentClisitef + Sriptcase?

Clisitef é totalmente baseado em APIs.

Uma API pode ser consumida por qualquer linguagem.

O Scriptcase não é um linguagem, mas usa PHP como linguagem

Então nos eventos das aplicações Scriptcase com código PHP você consome as APIs do produto desejado.

Para consumir uma API vc pode usar os comandos file_get_contents ou CURL.

1 Curtida

Boa tarde Haroldo, mais uma vez obrigado por estar sempre disposto a ajudar.
Eu tentei usar o curl para interagir com o agentclisitef mas não consegui obter sucesso, ele simplesmente não achava o endpoint para fazer a requisição, não sei se porque o AgenteClisitef roda em localhost.
O exemplo que me passaram de interação, a comunicação é feita toda em Javascript.
A definição do agenteClisitef é a seguinte: “O AgenteCliSiTef nada mais é do que um servidor Web leve, que atenderá requisições locais, originadas do
navegador de internet.
Esta comunicação será feita através do protocolo HTTPS, utilizando serviços REST (Representational State
Transfer).
O AgenteCliSiTef, então, recebe requisições em HTTPS, consome as funções CliSiTef, coleta a resposta e
responde à requisição HTTPS.”

Parece ser simples Sergio, você tem o link da documetação da API?

Bom dia Eliel,
A documentação é enviada pela SoftExpress, não achei nenhum link onde possa ser baixado, sem entrar em contado com eles.
Esse é um exemplo de uma chamada feito em Ajax:

Exemplo de requisição JavaScript (usando JQuery):
$.ajax({
url: “https://127.0.0.1/agente/clisitef/startTransaction”,
type: “post”,
data:
“sitefIp=127.0.0.1&storeId=00000000&terminalId=REST0001&functionId=3&trnAmount=100&ta
xInvoiceNumber=1234&taxInvoiceDate=20170304&taxInvoiceTime=170000&cashierOperator=CAI
XA&trnAdditionalParameters=”
});
Exemplo de retorno:
{“serviceStatus”: 0, “clisitefStatus”: 10000, “sessionId”: “45dd5cd”}

Tentei fazer a mesma chamada com CURL mas não tive sucesso!

mas as apis estão na sua máquina?
a Url aponta para 127.0.0.1 ??

Primeiro não acredito que esse endereço seja https.
Segundo não acredito que as apis estejam nesse endereço.

Bom dia Haroldo!
Eu estou testando um cara chamado AgentClisitef que, pelo que eu entendi, simula um servidor web para fazer a comunicação via “web” com o clisitef.
Veja uma parte do log de acesso.
[01/02/2023:10:49:29] - pid: 4136; 127.0.0.1 - “GET /agente/clisitef/state HTTP/1.1” 200
[01/02/2023:11:04:10] - pid: 4136; 127.0.0.1 - “GET /agente/clisitef/state HTTP/1.1” 200
[01/02/2023:11:04:10] - pid: 4136; 127.0.0.1 - " (null) HTTP/1.1" 500
[01/02/2023:11:04:17] - pid: 4136; 127.0.0.1 - “POST /agente/clisitef/pinpad/open HTTP/1.1” 200
[01/02/2023:11:04:20] - pid: 4136; Inicializando CliSiTef…
[01/02/2023:11:04:22] - pid: 4136; CliSiTef inicializada.
[01/02/2023:11:04:22] - pid: 4136; 127.0.0.1 - “POST /agente/clisitef/session HTTP/1.1” 200
[01/02/2023:11:04:25] - pid: 4136; 127.0.0.1 - “POST /agente/clisitef/pinpad/open HTTP/1.1” 200
[01/02/2023:11:04:28] - pid: 4136; 127.0.0.1 - “POST /agente/clisitef/pinpad/close HTTP/1.1” 200

Vou tentar trabalhar com o Ajax no ScriptCase.
Alguém pode me dar uma luz de como alimento uma variável PHP com esse retorno, afim de testar o sucesso da operação?

Olá Sergio.

Antes de tentar algo mais, tire o https://

E vamos ver se funciona.

1 Curtida

Bom dia Ricardo!
Já havia testado dessa forma e também não funcionou!
Obrigado pelo retorno.

de qualquer forma não usa https em endereço local direto pelo ip.

Boa tarde, estou quase lá!
Consigo me comunicar com o servidor e executar algumas funções.
Ao dar start em um transação do TEF, o JavaScript pede algumas informações em tela e associa ao evento onclick do botão uma determinada função, só que ao clicar no botão essa função não é reconhecida!
Abaixo o trecho do código do JS citado:

document.getElementById(“tef_corpo”).innerHTML = “<td colspan=“2”>” + s + "<td colspan=“2”><input type=“text” id=“DADOS"onkeypress=“trataTecla(event);”/>” + “” + “

<input
type=“BUTTON” class=“btn1” value=“OK” onclick=“trataColeta(0);”/>
<input type=“BUTTON” class=“btn1” value=“Cancelar” onclick=“trataColeta(-1);”/>
”;

document.getElementById(“tef_corpo”).style.display=“block”;
setTimeout(function(){ document.getElementById(“DADOS”).focus(); }, 100);
break;

Uncaught ReferenceError: trataTecla is not defined
at HTMLInputElement.onkeypress (fat_wcttef.php:1:1)

bom dia!
O problema acima foi resolvido com a ajuda de um colega, eu estava colocando todas as funções JavaScript num botão JS (falta de conhecimento), a dica foi colocar no onscriptinit o include do arquivo JS e no botão apenas a chamada para a função principal.
Agora funciona a integração com SITEF.
Minha dúvida agora é, quando ele termina de executar as funções JS para onde ele retorna no Scriptcase? Sei que é uma dúvida básica mas estou queimando a cabeça com ela!
Obrigado à todos!

1 Curtida