debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->setMetodo("view.execute"); $doc = $this->mask_cpf_cnpj($documento); if ($doc) { $this->params['_consulta'] = "011G0NP05B"; $this->params['formato_padrao'] = "X"; $this->params[(strlen($documento) == 11 ? 'cpf' : 'cnpj')] = $doc; return $this->setParamsXML(); } $this->log->error("Mask CPF/CNPJ: {$doc} Nao foi encontrado!", $this->debug); return false; } else { return false; } } public function identificarTelefone($telefone) { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->setMetodo("view.execute"); $telefone = $this->mask_phone_tel($telefone); if ($telefone) { $this->params['_consulta'] = "011G0NP05B"; $this->params['formato_padrao'] = "X"; $this->params[$telefone['type']] = $telefone['telefone']; return $this->setParamsXML(); } $this->log->error("Mask Phone/Tel: " . print_r($telefone, true) . " Nao foi encontrado!", $this->debug); return false; } else { return false; } } public function listaDetalhesServico($codcli) { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->setMetodo("list"); $this->setSubMetodo("services.details"); $this->params['codcli'] = $codcli; return $this->setParamsJSON(); } else { return false; } } public function faturasCliente($codcli, $from = '01-01-2000', $to = '') { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->setMetodo("faturas.cliente"); $this->params['codcli'] = $codcli; $this->params['from'] = $from; $this->params['to'] = date('Y-m-d', strtotime('+20 days', time())); return $this->setParamsXML(); } else { return false; } } public function verBoleto($codFat) { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->setMetodo("list"); $this->setSubMetodo("datasource.verBoleto"); $this->params['codfat'] = $codFat; return $this->setParamsJSON(); } else { return false; } } public function linhaDigitavel($codFat) { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->setMetodo("list"); $this->setSubMetodo("datasource.linhaDigitavel"); $this->params['codfat'] = $codFat; return $this->setParamsJSON(); } else { return false; } } public function listaServico($codcli) { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->setMetodo("list"); $this->setSubMetodo("services.details"); $this->params['codcli'] = $codcli; return $this->setParamsJSON(); } else { return false; } } public function planInfo2($codcli) { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->setMetodo("list"); $this->setSubMetodo("plan.getInfo2"); $this->params['codcli'] = $codcli; return $this->setParamsJSON(); } else { return false; } } public function habilitacaoProvisoria($codsercli) { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->setMetodo("list"); $this->setSubMetodo("habilitacaoProvisoria.execute"); $this->params['codsercli'] = $codsercli; return $this->setParamsJSON(); } else { return false; } } public function verificaIncidente($codcli) { $this->debug = debug_backtrace(); if ($this->getArgs(func_get_args())) { $this->setMetodo("view.execute"); $this->params['_consulta'] = "02A50HOX3E"; $this->params['formato_padrao'] = "X"; $this->params['codcli'] = $codcli; return $this->setParamsXML(); } 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 enviarBoletoFatura($cliente) { $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; } $dados = $cliente->params->param[1]->value->DOMElement->result->row; $fatura = $this->faturasCliente($dados->codcli); $invoices = $fatura->params->param[1]->value->DOMElement->result->row; if (!$invoices) { $this->log->info("Nao foi possivel encontrar nenhuma fatura em aberto do solicitante!"); return false; } foreach ($invoices as $value) { $invoice = $this->verBoleto($value->codfat); $line = $this->linhaDigitavel($value->codfat)['data']['results']['codigo_barras']; $linkInvoice = $invoice['data']['results'][0]['linkPublico']; $link .= "Codigo do boleto:[ $line ] Visualizar Boleto
"; sleep(1); } $data = array('$titulo' => "Envio de Fatura", '$data_ven' => $invoices->data_ven, '$nome' => $dados->nome_cli, '$link' => $link); $this->log->info("Faturas inseridas do E-mail!"); if (file_exists($pathFileMail)) { $this->mail->pathBodyMail($pathFileMail, $data); } else { $this->mail->bodyMessage("

Ola, {$dados->nome_cli}

Conforme solicitado estamos lhe enviando a segunda via de sua fatura.

{$link}

"); } $this->log->info("Encaminhando boleto por E-mail!"); if ($this->mail->mailing($dados->e_mail)) { $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; } } function listaServicoHabilitado($codcli, $infoAll = false) { $retorno = $this->listaDetalhesServico($codcli); $groupService = array(); if ($retorno['data']['results'][0]['planos']) { $descri_est = explode(' ', $retorno['descri_est'])[1]; if ($descri_est == 'Habilitado') { if (!in_array($retorno['codgser'], $groupService)) { $groupService[] = $infoAll ? $retorno : $retorno['codgser']; } } } else { foreach ($retorno['data']['results']['planos'] as $plano) { $descri_est = explode(' ', $plano['descri_est'])[1]; if ($descri_est == 'Habilitado') { if (!in_array($plano['codgser'], $groupService)) { $groupService[] = $infoAll ? $plano : $plano['codgser']; } } } } return $groupService; } ######################################################################## ## FUNCOES DEFAULT DA CLASSE ## ######################################################################## /** * Coleta as informacoes iniciais para o inicio da integracao com a API. * * @param string $user * @param string $password * @param boolean $url */ public function __construct($user, $password, $url) { $this->user = $user; $this->password = $password; $this->url = "http://{$url}/"; $this->setLog(CONF_LOGGER_ATIVO); $this->log->info("Iniciando integracao", debug_backtrace()); } /** * Parametriza o metodo utilizado para a consulta. * * @param type $metodo */ private function setMetodo($metodo) { $this->metodo = $metodo; } /** * Parametriza do submetodo utilizado para a consulta. * * @param type $submetodo */ private function setSubMetodo($submetodo) { $this->subMetodo = $submetodo; } /** * 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($type) { $this->log->debug($this->query); $this->curl = curl_init(); curl_setopt($this->curl, CURLOPT_URL, $this->url . (strtoupper($type) == 'XML' ? 'server.php' : 'integrator.server.php')); curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($this->curl, CURLOPT_POST, 1); curl_setopt($this->curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($this->curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($this->curl, CURLOPT_POSTFIELDS, $this->getQuery()); curl_setopt($this->curl, CURLOPT_ENCODING, "deflate,gzip,br"); if (strtoupper($type) == 'XML') { curl_setopt($this->curl, CURLOPT_HTTPHEADER, array('Content-Type: text/xml; charset=utf-8; ApplicationV: Integrator/6')); } else { curl_setopt($this->curl, CURLOPT_HTTPHEADER, array('Cache-Control: no-cache', 'Content-Type: application/json', 'ApplicationV: Integrator/6')); } /* * Final da linha para pegar os dados da variavel */ $this->log->debug("Curl: {$this->curl}", 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 setParamsXML() { $this->params['_user'] = $this->user; $this->params['_passwd'] = $this->password; $this->setQuery("{$this->metodo}"); foreach ($this->params as $key => $value) { $this->setQuery(""); } $this->setQuery(""); unset($this->params); return $this->exec('XML'); } private function setParamsJSON() { $x = 0; $this->setQuery("{"); $this->setQuery(sprintf('"request": {"sendRequest": "integrator.server", "method": "%s", "submethod": "%s",', $this->metodo, $this->subMetodo)); $this->setQuery(sprintf('"params": {"_user":"%s","_passwd":"%s",', $this->user, $this->password)); foreach ($this->params as $key => $value) { $x++; $this->setQuery(sprintf('"%s":"%s"', $key, $value)); if (count($this->params) != $x) { $this->setQuery(", "); } } $this->setQuery("}}}"); unset($this->params); return $this->exec('JSON'); } /** * Recebe as informações e realiza a execucao da API * * @void */ private function exec($type) { $this->curl($type); $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); if (strtoupper($type) == 'XML') { return $this->response(simplexml_load_string($response)); } else { return $this->response(json_decode($response, true)); } } /** * 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($data, true), $this->debug); if ($data) { return $data; } else { return false; } } }