repositório com os arquivos utilizados para integração entre o sistema SimplesIP e diversos sistemas.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

260 lines
7.3 KiB

<?php
require_once 'Integracao.php';
require_once 'config.php';
/**
* Classe para utilizar API da Gerenet
*
* @author Lucas Awade
* @function developer
* @company SimplesIP
* @version 1.0.0
*/
class Gerenet extends Integracao {
private $token;
private $url;
private $metodo;
private $debug;
private $params = array();
private $query;
private $curl;
private $ssl = false;
########################################################################
## FUNCOES DA API ##
########################################################################
/**
* Busca o cliente no sistema.
*
* @param string $documento
* @return boolean
*/
public function identificarDocumento($documento) {
$this->debug = debug_backtrace();
if ($this->getArgs(func_get_args())) {
$this->setMetodo('consulta_cpf_cnpj');
$this->params['cpf_cnpj'] = $documento;
$this->params['nome'] = "S";
$this->params['endereco'] = "S";
$this->params['area'] = "S";
$this->params['tipo_assinante'] = "";
return $this->setParams();
} else {
return false;
}
}
/**
* Verifica se o cliente possui alguma pendencia financeira.
*
* @param int $id_cliente
* @return string
*/
public function identificarPendencia($id_cliente) {
$this->debug = debug_backtrace();
if ($this->getArgs(func_get_args())) {
$this->setMetodo('pendencia_financeira');
$this->params['id_assinante'] = $id_cliente;
return $this->setParams();
} else {
return false;
}
}
/**
* Consulta se o cliente possui email.
*
* @param int $id_cliente
* @return boolean
*/
public function consultarEmail($id_cliente) {
$this->debug = debug_backtrace();
if ($this->getArgs(func_get_args())) {
$this->setMetodo('consulta_emails');
$this->params['id_assinante'] = $id_cliente;
return $this->setParams();
} else {
return false;
}
}
/**
* Consulta parada tecnica
*
* @param int $id_cliente
* @return string
*/
public function liberacaoServico($id_cliente) {
$this->debug = debug_backtrace();
if ($this->getArgs(func_get_args())) {
$this->setMetodo('liberar_servico');
$this->params['id_assinante'] = $id_cliente;
return $this->setParams();
} else {
return false;
}
}
/**
*
* $mail_conta -> Codigo fornecido pelo administrador da Gerenet
* $mail_msg -> Codigo de mensagem que ser<EFBFBD> enviada pelo cliente fornecido
* pelo administrador da Gerenet
*
* @param int $id_cliente
* @param int $mail_conta
* @param int $mail_msg
* @return boolean
*/
public function enviarBoletoEmail($id_cliente, $mail_conta, $mail_msg) {
$this->debug = debug_backtrace();
if ($this->getArgs(func_get_args())) {
$this->setMetodo('seg_via_boleto');
$this->params['id_assinante'] = $id_cliente;
$this->params['email_conta'] = $mail_conta;
$this->params['email_msg'] = $mail_msg;
return $this->setParams();
} else {
return false;
}
}
########################################################################
## FUNCOES DEFAULT DA CLASSE ##
########################################################################
/**
* Coleta as informacoes iniciais para o inicio da integracao com a API.
*
* @param string $token
* @param string $url
* @param boolean $log
*/
public function __construct($token = CONF_TOKEN_API, $url = CONF_URL_API, $log = true) {
$this->token = $token;
if(end(str_split($url)) != '/'){
$url .= '/';
}
if (strpos($url, 'https')) {
$this->ssl = true;
}
$this->url = $url ."ws_ura.php";
$this->setLog($log);
$this->integracaoReg();
$this->log->info("Iniciando integracao com Gerenet", debug_backtrace());
}
/**
* Parametriza o metodo utilizado para a consulta.
*
* @param type $metodo
*/
private function setMetodo($metodo) {
$this->metodo = $metodo;
}
/**
* Escreve a query para ser passada para o curl
*
* @param string $query
*/
private function setQuery($query){
return $this->query .= $query;
}
/**
* retorna a string pronta da query do curl e limpa a variavel.
*
* @return string $query
*/
private function getQuery(){
$query = $this->query;
unset($this->query);
return $query;
}
/**
* Constroi de forma dinamica a string para ser passada para a execucao do Curl
*
* @void
*/
private function curl() {
/*
* Final da linha para pegar os dados da variavel
*/
$header = array();
$header[] = 'Accept: application/json';
$this->curl = curl_init();
curl_setopt($this->curl, CURLOPT_URL, $this->url . "?chave={$this->token}&acao={$this->metodo}". $this->getQuery());
curl_setopt($this->curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($this->curl, CURLOPT_SSL_VERIFYHOST, $this->ssl);
curl_setopt($this->curl, CURLOPT_POST, false);
$this->log->debug("Curl:". print_r(curl_getinfo($this->curl), true), debug_backtrace());
}
/**
* Recebe array de forma de indice e valor
*
* @example array("qtype" => 'test_api', "query" => '123', "oper" => '=')
*
* @obs sempre chamar a fun<EFBFBD><EFBFBD>o debug_backtrace() para ser dispon<EFBFBD>vel em log
*
* @param type $params
* @debug_track function debug_backtrace()
*/
private function setParams() {
$count = 0;
if ($this->params) {
foreach ($this->params as $key => $param) {
if ($count < count($this->params)) {
$this->setQuery("&");
}
$this->setQuery("{$key}={$param}");
$count++;
}
}
unset($this->params);
$this->curl();
$result = $this->exec();
return $result;
}
private function exec() {
/**
* Caso tenha problema de requisi<EFBFBD><EFBFBD>o
*/
$content = curl_exec($this->curl);
if (curl_errno($this->curl)) {
$this->log->error(curl_error($this->curl), debug_backtrace());
curl_close($this->curl);
$this->audioError();
return false;
}
curl_close($this->curl);
return $this->response($content);
}
/**
* Prepara dos dados para ser transmitidos para o metodo a ser retornado a
* integracao.
*
* @return array
*/
private function response($data) {
$this->log->debug("Reponse API: " . $data, $this->debug);
if ($data) {
return $data;
} else {
return false;
}
}
}