forked from Claudio/integracao
douglasstrappasson
1 year ago
7 changed files with 436 additions and 70 deletions
@ -0,0 +1,366 @@
|
||||
<?php |
||||
|
||||
require_once 'Integracao.php'; |
||||
include "config.php"; |
||||
|
||||
/** |
||||
* Classe de integracao do sistema SGP. |
||||
* Documentacao: https://documenter.getpostman.com/view/6682240/Tz5s5whG |
||||
* |
||||
* @author Jose Henrique Joanoni |
||||
* @function developer |
||||
* @company SimplesIP |
||||
* @version 1.0.0 |
||||
*/ |
||||
class SGP extends Integracao { |
||||
|
||||
private $token; |
||||
private $url; |
||||
private $metodo; |
||||
private $query; |
||||
private $curl; |
||||
private $debug; |
||||
private $app; |
||||
private $params = array(); |
||||
private $ssl = false; |
||||
|
||||
######################################################################## |
||||
## FUNCOES DA API ## |
||||
######################################################################## |
||||
|
||||
/** |
||||
* Faz a consulta do cliente mediante digitação do CPF. |
||||
* |
||||
* @param string $document |
||||
* @return boolean |
||||
*/ |
||||
public function identificarDocumento($document) { |
||||
$this->debug = debug_backtrace(); |
||||
if ($this->getArgs(func_get_args())) { |
||||
$this->params = array( |
||||
'token' => $this->token, |
||||
'app' => $this->app, |
||||
'cpfcnpj' => $document |
||||
); |
||||
$this->setMetodo('consultacliente/'); |
||||
return $this->setParams(); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Faz a liberacao do contrato do cliente mediante promessa de pagamento. |
||||
* |
||||
* @param int $contract_number |
||||
* @return boolean |
||||
*/ |
||||
public function liberacaoPromessa($contract_number) { |
||||
$this->debug = debug_backtrace(); |
||||
if ($this->getArgs(func_get_args())) { |
||||
$this->params = array( |
||||
'token' => $this->token, |
||||
'app' => $this->app, |
||||
'contrato' => $contract_number |
||||
); |
||||
$this->setMetodo('liberacaopromessa/'); |
||||
return $this->setParams(); |
||||
} else { |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Envia a fatura por email. |
||||
* |
||||
* @param int $contract_number |
||||
* @return boolean |
||||
*/ |
||||
public function enviaFatura($contract_number, $tipo) { |
||||
$this->debug = debug_backtrace(); |
||||
if ($this->getArgs(func_get_args())) { |
||||
$this->params = array( |
||||
'token' => $this->token, |
||||
'app' => $this->app, |
||||
'tipo' => $tipo, |
||||
'contrato' => $contract_number |
||||
); |
||||
$this->setMetodo('enviafatura/'); |
||||
return $this->setParams(); |
||||
} else { |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Envia a segunda via de fatura. |
||||
* |
||||
* @param int $contract_number |
||||
* @return boolean |
||||
*/ |
||||
public function segundaVia($contract_number) { |
||||
$this->debug = debug_backtrace(); |
||||
if ($this->getArgs(func_get_args())) { |
||||
$this->params = array( |
||||
'token' => $this->token, |
||||
'app' => $this->app, |
||||
'contrato' => $contract_number |
||||
); |
||||
$this->setMetodo('fatura2via/'); |
||||
return $this->setParams(); |
||||
} else { |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Verifica se existe manutencao ou status da conexao do cliente. |
||||
* |
||||
* @param int $contract_number |
||||
* @return boolean |
||||
*/ |
||||
public function verificaAcesso($contract_number) { |
||||
$this->debug = debug_backtrace(); |
||||
if ($this->getArgs(func_get_args())) { |
||||
$this->params = array( |
||||
'token' => $this->token, |
||||
'app' => $this->app, |
||||
'contrato' => $contract_number |
||||
); |
||||
$this->setMetodo('verificaacesso/'); |
||||
return $this->setParams(); |
||||
} else { |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Realiza a abertura de um novo chamado no sistema. |
||||
* |
||||
* @param int $contract_number |
||||
* @param int $occurrence_type |
||||
* @param string $reason |
||||
* @return boolean |
||||
*/ |
||||
public function abreChamado($contract_number, $occurrence_type = '', $reason = '', $department = '') { |
||||
$this->debug = debug_backtrace(); |
||||
if ($this->getArgs(func_get_args())) { |
||||
if (!empty($occurrence_type) && !empty($reason)) { |
||||
$this->params = array( |
||||
'token' => $this->token, |
||||
'app' => $this->app, |
||||
'contrato' => $contract_number, |
||||
'ocorrenciatipo' => $occurrence_type, |
||||
'motivoos' => $reason, |
||||
'setor' => $department |
||||
); |
||||
} else { |
||||
$this->params = array( |
||||
'token' => $this->token, |
||||
'app' => $this->app, |
||||
'contrato' => $contract_number, |
||||
); |
||||
} |
||||
$this->setMetodo('chamado/'); |
||||
return $this->setParams(); |
||||
} else { |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Envia email das faturas solicitadas. |
||||
* |
||||
* $faturaMes => Coleta todas as faturas do mês para ser enviadas. |
||||
* |
||||
* @param string|int $documento |
||||
* @param boolean $faturasMes |
||||
* @return boolean |
||||
*/ |
||||
public function enviarBoletoEmail($documento, $faturasMes = false) { |
||||
$this->debug = debug_backtrace(); |
||||
$pathFileMail = __DIR__ . "/email.html"; |
||||
|
||||
if (!$this->mail) { |
||||
$this->log->error('Antes de enviar o email e necessario configurar o SimpleMail e SMTP!'); |
||||
return false; |
||||
} |
||||
|
||||
$clienteDados = $this->identificarDocumento($documento); |
||||
if (!$clienteDados['contratos'][0]['clienteId']){ |
||||
$this->log->error('Nao foi possivel encontrar o cliente para identificar o email!'); |
||||
return false; |
||||
} |
||||
|
||||
$boletos = []; |
||||
foreach($clienteDados['contratos'] as $clienteContrato){ |
||||
$item = $this->segundaVia($clienteContrato['contratoId']); |
||||
foreach($item['links'] as $i){ |
||||
$boletos[$i['fatura']] = $i['link']; |
||||
} |
||||
} |
||||
|
||||
if (!$boletos) { |
||||
$this->log->info("Nao foi possivel encontrar nenhuma fatura em aberto do solicitante!"); |
||||
return false; |
||||
} |
||||
|
||||
$link = ""; |
||||
foreach ($boletos as $fat => $inv) { |
||||
$link .= "Fatura Num.: {$fat} <a href='{$inv}' target='_blank'>Visualizar Boleto</a><br>"; |
||||
} |
||||
|
||||
$data = array('$titulo' => "Envio de Fatura", '$nome' => $clienteDados['contratos'][0]['razaoSocial'], '$link' => $link); |
||||
|
||||
if (file_exists($pathFileMail)) { |
||||
$this->mail->pathBodyMail($pathFileMail, $data); |
||||
} else { |
||||
$this->mail->bodyMessage("<h4>Ola, <b>{$clienteDados['contratos'][0]['razaoSocial']}</b></h4><p>Conforme solicitado estamos lhe enviando a segunda via de sua fatura.</p><p>{$link}</p>"); |
||||
} |
||||
|
||||
$this->log->info("Encaminhando boleto por E-mail!"); |
||||
|
||||
if ($this->mail->mailing($clienteDados['contratos'][0]['emails'][0])) { |
||||
$this->log->success("O Boleto foi enviado com sucesso!"); |
||||
return true; |
||||
} else { |
||||
$this->log->error("Nao foi possivel enviar o boleto para o email do solicitante!"); |
||||
$this->log->error("Error SimpleMail: " . $this->mail->getErrorSend()); |
||||
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, $app = CONF_USERID_API, $log = CONF_LOGGER_ATIVO) { |
||||
$this->token = $token; |
||||
$this->app = $app; |
||||
if(end(str_split($url)) != '/'){ |
||||
$url .= '/'; |
||||
} |
||||
if (strpos($url, 'https')) { |
||||
$this->ssl = true; |
||||
} |
||||
$this->url = $url.'api/ura/'; |
||||
$this->setLog($log); |
||||
$this->integracaoReg(); |
||||
$this->log->info("Iniciando integracao", 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 |
||||
*/ |
||||
$this->curl = curl_init(); |
||||
curl_setopt_array($this->curl, array( |
||||
CURLOPT_URL => $this->url . $this->metodo, |
||||
CURLOPT_RETURNTRANSFER => true, |
||||
CURLOPT_ENCODING => '', |
||||
CURLOPT_MAXREDIRS => 10, |
||||
CURLOPT_TIMEOUT => 0, |
||||
CURLOPT_FOLLOWLOCATION => true, |
||||
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, |
||||
CURLOPT_CUSTOMREQUEST => 'POST', |
||||
CURLOPT_SSL_VERIFYHOST => false, |
||||
CURLOPT_SSL_VERIFYPEER => false, |
||||
CURLOPT_POSTFIELDS => $this->params, |
||||
)); |
||||
$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ção debug_backtrace() para ser disponível em log |
||||
* |
||||
* @param type $params |
||||
* @debug_track function debug_backtrace() |
||||
*/ |
||||
private function setParams() { |
||||
|
||||
$this->curl(); |
||||
unset($this->params); |
||||
return json_decode($this->exec(), true); |
||||
} |
||||
|
||||
/** |
||||
* Recebe as informações e realiza a execucao da API |
||||
* |
||||
* @void |
||||
*/ |
||||
private function exec() { |
||||
/** |
||||
* Caso tenha problema de requisição |
||||
*/ |
||||
$response = 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($response); |
||||
} |
||||
|
||||
/** |
||||
* 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: " . print_r(json_decode($data, true), true), $this->debug); |
||||
if ($data) { |
||||
return $data; |
||||
} else { |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
} |
@ -0,0 +1,21 @@
|
||||
<?php |
||||
|
||||
require "SGP.php"; |
||||
|
||||
$sgp = new SGP(); |
||||
$nomenclatura = str_replace("IDENTIFICACAO", "", $sgp->db()->getUraMovimentoByUniqueid($uid)['umv_ura_nome']); |
||||
$documento = $sgp->agi()->get_variable('DOCUMENTO', true); |
||||
|
||||
$sgp->SimpleMail(CONF_SENDER_EMAIL_USER, CONF_SENDER_EMAIL_PASSWORD, CONF_EMAIL_SUBTITLE_INVOICE); |
||||
$sgp->confSMTP(CONF_SMTP_HOST, CONF_SMTP_POST, CONF_EMAIL_TITLE_INVOICE, true, 'ssl'); |
||||
$response = $sgp->enviarBoletoEmail($documento, false); |
||||
|
||||
if ($response) { |
||||
$redirecionamento_dados = $sgp->db()->redirectUraDestino("REDIR_ENVIA_FATURA", "SUCESSO", $nomenclatura); //PENDENTE |
||||
} else { |
||||
$redirecionamento_dados = $sgp->db()->redirectUraDestino("REDIR_ENVIA_FATURA", "FALHA", $nomenclatura); //OK |
||||
} |
||||
|
||||
$sgp->executarFluxo($redirecionamento_dados["TIPO"], $redirecionamento_dados["NOME"]); |
||||
|
||||
?> |
Loading…
Reference in new issue