/* CERTIFICADO e CONTA */ $SSLCERT= $this->Ini->path_doc.'/cert/'.{cert[0][0]}; $SSLKEY = $this->Ini->path_doc.'/cert/'.{cert[0][1]}; $v_portador = {cr[0][0]}; $v_client_id_inter = {inter[0][0]}; $v_client_secret_inter = {inter[0][1]}; /** PEGA TOKEN **/ $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://cdpj.partners.bancointer.com.br/oauth/v2/token', CURLOPT_SSLCERT => $SSLCERT, CURLOPT_SSLKEY => $SSLKEY, 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_POSTFIELDS => array('client_id' => $v_client_id_inter,'client_secret' => $v_client_secret_inter,'grant_type' => 'client_credentials','scope' => 'boleto-cobranca.read'), )); $response = curl_exec($curl); $error = curl_error($curl); curl_close($curl); if ($error !== '') { throw new Exception($error); } if ($response == '') { throw new Exception("Resposta vazia, provavelmente o limite de chamadas foi atingido...\n"); } $obj = json_decode($response); $v_bearerToken = $obj->{'access_token'}; $v_numeroInter = [g_code]; sc_lookup(cert, "SELECT certificado_inter, chave_inter FROM seg_config WHERE certificado_inter <> '' and chave_inter <> ''"); if({cert}){ /* CERTIFICADO e CONTA */ $SSLCERT= $this->Ini->path_doc.'/cert/'.{cert[0][0]}; $SSLKEY = $this->Ini->path_doc.'/cert/'.{cert[0][1]}; $bearerToken = [g_bearerToken]; /* GERAR BOLETO */ //DT de vencimento $v_dt_venc = substr({dt_venc}, 0, -9); $dtHojePadrao = date('d/m/Y'); $dtHoje = sc_date({dt_venc}, "aaaa-mm-dd", "+ ", 5, 0, 0); $difDias = sc_date_dif($v_dt_venc, "aaaa-mm-dd", date('Y-m-d'), "aaaa-mm-dd"); //Dados do cliente sc_lookup(cli, "SELECT cpfcnpj, if(tipo = 'F', 'FISICA', 'JURIDICA') tipo, nome, rua, num, complemento, bairro, cidade, estado, cep, email FROM clientes WHERE id = {cliente}"); $v_cpfcnpj = ({cli[0][0]}) ? {cli[0][0]} : ''; $v_tipo = ({cli[0][1]}) ? {cli[0][1]} : ''; $v_nome = ({cli[0][2]}) ? {cli[0][2]} : ''; $v_rua = ({cli[0][3]}) ? {cli[0][3]} : ''; $v_num = ({cli[0][4]}) ? {cli[0][4]} : ''; $v_complemento = ({cli[0][5]}) ? {cli[0][5]} : ''; $v_bairro = ({cli[0][6]}) ? {cli[0][6]} : ''; $v_cidade = ({cli[0][7]}) ? {cli[0][7]} : ''; $v_estado = ({cli[0][8]}) ? {cli[0][8]} : ''; $v_cep = ({cli[0][9]}) ? {cli[0][9]} : ''; $v_email = ({cli[0][10]}) ? {cli[0][10]} : ''; $enderecoCompleto = "$v_rua, $v_num - $v_bairro, $v_cidade - $v_estado, $v_cep"; $curlBoleto = curl_init(); curl_setopt_array($curlBoleto, array( CURLOPT_URL => 'https://cdpj.partners.bancointer.com.br/cobranca/v2/boletos', CURLOPT_SSLCERT => $SSLCERT, CURLOPT_SSLKEY => $SSLKEY, 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_HTTPHEADER => array( 'Authorization: Bearer '.$bearerToken, 'accept: application/json', 'content-type: application/json', ), CURLOPT_POSTFIELDS =>'{ "seuNumero": "'.{ndocumento}.'", "valorNominal": '.{valor}.', "dataVencimento": "'.$v_dt_venc.'", "numDiasAgenda": "5", "pagador": { "cpfCnpj": "'.$v_cpfcnpj.'", "tipoPessoa": "'.$v_tipo.'", "nome": "'.$v_nome.'", "endereco": "'.$v_rua.'", "numero": "'.$v_num.'", "complemento": "'.$v_complemento.'", "bairro": "'.$v_bairro.'", "cidade": "'.$v_cidade.'", "uf": "'.$v_estado.'", "cep": "'.$v_cep.'", "email": "'.$v_email.'" }, "mensagem": { "linha1": "" }, "desconto1": { "codigoDesconto": "NAOTEMDESCONTO", "taxa": 0, "valor": 0, "data": "" }, "desconto2": { "codigoDesconto": "NAOTEMDESCONTO", "taxa": 0, "valor": 0, "data": "" }, "desconto3": { "codigoDesconto": "NAOTEMDESCONTO", "taxa": 0, "valor": 0, "data": "" }, "multa": { "codigoMulta": "NAOTEMMULTA", "valor": 0, "taxa": 0 }, "mora": { "codigoMora": "TAXAMENSAL", "data": "'.$dtHoje.'", "valor": 0, "taxa": 1 } }', )); $response = curl_exec($curlBoleto); $error = curl_error($curlBoleto); curl_close($curlBoleto); if ($error !== '') { throw new Exception($error); } if ($response == '') { throw new Exception("Resposta vazia, provavelmente o limite de chamadas foi atingido...\n"); } $objBoleto = json_decode($response); $nossoNumeroB = $objBoleto->{'nossoNumero'}; sc_exec_sql("INSERT INTO boletos (codigo, link_boleto, id_contareceber, status, dt_emissao, dt_vencimento) VALUES('$nossoNumeroB', 'BANCO INTER', {id}, 'A', NOW(), '$v_dt_venc') "); //print_r($obj); /** GERAR PDF DO BOLETO **/ $curlPDF = curl_init(); curl_setopt_array($curlPDF, array( CURLOPT_URL => "https://cdpj.partners.bancointer.com.br/cobranca/v2/boletos/$nossoNumeroB/pdf", CURLOPT_SSLCERT => $SSLCERT, CURLOPT_SSLKEY => $SSLKEY, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'Authorization: Bearer '.$bearerToken, 'accept: application/json', 'content-type: application/json', ), )); $response = curl_exec($curlPDF); $error = curl_error($curlPDF); curl_close($curlPDF); if ($error !== '') { throw new Exception($error); } if ($response == '') { throw new Exception("Resposta vazia, provavelmente o limite de chamadas foi atingido...\n"); } $obj = json_decode($response); // print_r($obj); # Define the Base64 string of the PDF file $b64 = $obj->{'pdf'}; $bin = base64_decode($b64, true); if (strpos($bin, '%PDF') !== 0) { throw new Exception('Missing the PDF file signature'); } $mesAno = date('m-Y'); $boletoArquivo = "boleto-$mesAno-$v_cpfcnpj.pdf"; file_put_contents($boletoArquivo, $bin); }else{ echo "Preenha os campos certificado_inter e chave_inter corretamente nas configurações do sistema"; die(); }