Respostas

  • Dando seguimento para quem está usando a versão 23.07 como eu e ainda não quiz atualizzar para a versão 24.xx para usar o novo formato e código da api..

     

    eu fiz uma alteracões no código original da api versão 23.07 para funcionar na opcão de titulo vencido ele informar junto o copia e cola qrcode pix   em formato pagina separada

     

    segue o código

     

    public function get_vencido($valor){

    $comandoSQL = "SELECT uuid_lanc AS uuid, login, status, tipo, valor, linhadig, datavenc, login, cpf_cnpj, sis_qrpix.qrcode AS pix
    FROM vtab_titulos
    LEFT JOIN sis_qrpix ON uuid_lanc = sis_qrpix.titulo
    WHERE (login = :valor OR cpf_cnpj = :valor)
    AND status = 'vencido' AND deltitulo = 0";

    $rotinaSQL = DB::prepare($comandoSQL);
    $rotinaSQL -> bindParam('valor', $valor);
    $rotinaSQL -> execute();
    $resultadosSQL = $rotinaSQL -> fetchAll();
    $numeroDeLinhas = $rotinaSQL -> rowCount();

    echo json_encode(array('Total' => $numeroDeLinhas, 'titulos' => $resultadosSQL));
    }             

     

     

    Depois no whatsapp bot codigo funcão para interpretar os dados enviados da api do mk-auth via jwt-token

     

    funcão que recebe os dados 

    // Função para buscar boletos vencidos do cliente pelo CPF no setor financeiro
    async function buscarBoletosVencidos(cpf) {
    const tokenJWT = fs.readFileSync(path.join(__dirname, 'token.txt'), 'utf-8');
    const url = `https://ip-do-mk-auth-aqui/api/titulo/vencido/${cpf}`;
    const agent = new https.Agent({ rejectUnauthorized: false });

    try {
    const response = await axios.get(url, {
    headers: { 'Authorization': `Bearer ${tokenJWT}` },
    httpsAgent: agent
    });

    // Process the response and return the overdue invoices along with the Pix QR codes
    const boletosVencidos = response.data.titulos.map(boleto => ({
    valor: boleto.valor,
    datavenc: new Date(boleto.datavenc.split(' ')[0]),
    linhadig: boleto.linhadig.replace(/[. ]/g, ''), // Remove dots and spaces
    pix: boleto.pix // Assuming 'pix' field is included in the API response
    }));

    // Sort the invoices by due date
    boletosVencidos.sort((a, b) => a.datavenc - b.datavenc);

    return boletosVencidos;
    } catch (error) {
    console.error('Erro ao buscar boletos vencidos:', error);
    return [];
    }
    }

     

     

    depois no tratamento que irá enviar a resposta do whatsapp bot ao cliente conforme na imagem abaixo

     

    else if (currentState.aguardandoCPFBolVencido) {
    const cpfCliente = msg.body.trim().replace(/\D/g, ''); // Formata o CPF para remover pontos e espaços
    const boletosVencidos = await buscarBoletosVencidos(cpfCliente);

    if (boletosVencidos.length > 0) {
    boletosVencidos.forEach(boleto => {
    let mensagemBoletoVencido = `Boleto vencido:\n💰 Valor: ${boleto.valor}\n📅 Vencimento: ${boleto.datavenc}\n🔢 Linha Digitável:\n${boleto.linhadig.replace(/\D/g, '')}\n`;

    // Envia a primeira mensagem com os detalhes do boleto
    client.sendMessage(msg.from, mensagemBoletoVencido).then(() => {
    // Envia a segunda mensagem apenas com o QR Code Pix após um breve intervalo
    setTimeout(() => {
    client.sendMessage(msg.from, `🔢 QR Code Pix:\n${boleto.pix}`);
    }, 1000); // Ajuste o intervalo conforme necessário
    });
    });
    } else {
    client.sendMessage(msg.from, 'Não foram encontrados boletos vencidos para este CPF.');
    }

    chatStates[chatId] = {}; // Resetar o estado
    }

     

     

    neste formato eu já consigo obter os dados que necessito no meu API bot whatsapp que estou desenvolvendo

     

    12385489274?profile=RESIZE_930x

  • José boa tarde tranquilo

    de volta agora com mais tempo para voltar aos testes, irei efetuar os testes hoje ainda, lembrando que estou na versão 23.07 ainda kkk não atualizei.. porque tenho que mexer em um monte de outros plugins dashboard, etc.. que tenho de monitoramento no meu sistema.

  • Boa tarde, fiz alguns testes aqui e consegui pegar os QR codes desta pasta e passá-los na API, caso o título tenha o QR code e o sistema tenha salvo.
    Se puder testar e dar um feedback, ajudaria muito. Este arquivo está atualizado com os últimos endpoints que atualizei e pode usar a documentação que vai funcionar.
    Creio que dessa forma vai funcionar nas versões mais antigas sem a necessidade de atualizar o sistema.
    https://storage.ning.com/topology/rest/1.0/file/get/12369375679?profile=original
  • José sabe informar se dá para adicionar código para o jwt puxar direto da pasta /boleto/qrcode ? pois o sistema armazena lá a imagem do qrcode especifico PIX.01020304-506070800A0B0C0D0E0F10.png   agora só resta saber como o código armazena os mesmos lá. se é quando o carne com todos os titulos é gerado ou se são salvos posteriormente.

  • Bom dia, para criar um controle personalizado, você deve nomear a classe igual ao arquivo .api e então liberar o acesso no webadmin

    pix.zip

    https://storage.ning.com/topology/rest/1.0/file/get/12367209497?profile=original
  • José aproveitei e corrigi o seu código para funcionar na versão 23.07 titulo.api 

    e funcionou, vou tentar verificar as novidades que postou no link https://storage.. pra implementar na api 23.07

    segue o código alterado pra funcionar na 23.07 

    public function get_aberto($valor) {

    $comandoSQL = "SELECT uuid_lanc AS uuid, login, status, tipo, valor, linhadig, datavenc,login, cpf_cnpj, sis_qrpix.qrcode AS pix
    FROM vtab_titulos
    LEFT JOIN sis_qrpix ON uuid_lanc = sis_qrpix.titulo
    WHERE (login = :valor OR cpf_cnpj = :valor) AND status = 'aberto' AND deltitulo = 0
    ORDER BY uuid_lanc;";

    $rotinaSQL = DB::prepare($comandoSQL);
    $rotinaSQL -> bindParam('valor', $valor);
    $rotinaSQL -> execute();
    $resultadosSQL = $rotinaSQL -> fetchAll();
    $numeroDeLinhas = $rotinaSQL -> rowCount();

    if ($numeroDeLinhas > 0) {
    echo json_encode(array('Total' => $numeroDeLinhas, 'titulos' => $resultadosSQL));
    } else {
    echo json_encode(array('mensagem' => 'Registro não encontrado'));
    }

    }

     

    e a resposta abaixo  

     

    curl -H 'Authorization: Bearer JWT TOKEN' -i -k 'https://190.8.160.4/api/titulo/aberto/01234567890'
    HTTP/1.1 200 OK
    Date: Sat, 27 Jan 2024 01:40:00 GMT
    Server: Apache/2.4.38 (Debian)
    Access-Control-Max-Age: 86400
    Access-Control-Allow-Credentials: true
    Access-Control-Allow-Origin: *
    Access-Control-Allow-Methods: GET
    Etag: MKA_JSON_3b879c288f039
    Vary: Accept-Encoding
    MKAUTH: API
    Content-Length: 5268
    Content-Type: text/html;charset=UTF-8


    {"Total":2,
    "titulos":
    [
    {"uuid":"04441CD1-B998-4F82-B650-CCB9C1856785207",
    "login":"nomedocliente",
    "status":"aberto",
    "tipo":"mensalidade",
    "valor":"97.99",
    "linhadig":"36491.01192 00024.9231006 00001.556956 3 00000000009099",
    "datavenc":"2024-07-10 00:00:00",
    "cpf_cnpj":"01234567890",
    "pix":"00020406071829990014BR.GOV.BCB.PIX2572qrcodespix.sejaefi.com.br\/bolix\/v2\/cobv\/000000000065408a94ab3be1470d28aa5204000053039865802BR5905EFISA6008SAOPAULO62070503***63040DF3"}
    {"uuid":"2D4441E1-B8DE-4F16-A0CD-C18E3094561581B",
    "login":"nomedocliente",
    "status":"aberto",
    "tipo":"mensalidade",
    "valor":"97.99",
    "linhadig":"36490.00092 00014.981005 00000.557009 3 00000000009799",
    "datavenc":"2024-08-10 00:00:00",
    "cpf_cnpj":"01234567890",
    "pix":"00020304025226947084BR.GOV.BCB.PIX2572qrcodespix.sejaefi.com.br\/bolix\/v2\/cobv\/0000000000bd4cffae708af548d9b82a5204000053039865802BR5905EFISA6008SAOPAULO62070503***630497B4"}
    ]
    }

     OBS- alguns dados pessoais editados na resposta do CURL.. por motivos de privacidade.

  • é possivel sim se pegar o link completo url com uuid mas para isso é necessário filtra via CPF = numero titulo = uuuid para buscar , acredito que irá abrir direto no site do banco e baixar o pdf no meu caso estou testando com gerencianet abre direto o link completo do gerencianet, mesmo link que aparece quando clicamos dentro do mk-auth em visualizar boleto ele já abre em pdf  /boleto/boleto.hhvm?titulo=$tit_number

  • Boa noite josé então, eu consegui atualizar o titulo.api na versão 23.07 para me responder no curl o pixqrcode tive que criar a funcão abaixo 

     

    public function get_pix($valor) {
    // Ajustando a consulta para incluir dados do QR Code PIX
    $comandoSQL = "SELECT t.uuid_lanc AS uuid, t.login, t.status, t.tipo, t.valor, t.linhadig, t.datavenc, t.login, t.cpf_cnpj, p.qrcode
    FROM vtab_titulos AS t
    LEFT JOIN sis_qrpix AS p ON t.uuid_lanc = p.titulo
    WHERE (t.login = :valor OR t.cpf_cnpj = :valor)
    AND t.status = 'aberto' AND t.deltitulo = 0";

    $rotinaSQL = DB::prepare($comandoSQL);
    $rotinaSQL->bindParam(':valor', $valor);
    $rotinaSQL->execute();
    $resultadosSQL = $rotinaSQL->fetchAll(PDO::FETCH_ASSOC);
    $numeroDeLinhas = $rotinaSQL->rowCount();

    // Retornando os títulos abertos junto com os QR Codes PIX correspondentes
    echo json_encode(array('Total' => $numeroDeLinhas, 'titulosComPix' => $resultadosSQL));
    }

     

    em seguida testei via curl jwt token de um servidor remoto  

    curl -H 'Authorization: Bearer SEU JWT TOKEN AQUI' -i -k 'https://mk-auth-ip/api/titulo/pix/$cpf_cnpj'
    HTTP/1.1 200 OK
    Date: Fri, 26 Jan 2024 01:43:30 GMT
    Server: Apache/2.4.38 (Debian)
    Access-Control-Max-Age: 86400
    Access-Control-Allow-Credentials: true
    Access-Control-Allow-Origin: *
    Access-Control-Allow-Methods: GET
    Etag: MKA_JSON_968a921225281
    Vary: Accept-Encoding
    MKAUTH: API
    Content-Length: 5310
    Content-Type: text/html;charset=UTF-8

    {"Total":1,"titulosComPix":[{"uuid":"857B0000-FF00-4D00-8F00-C1767E340000","login":"clienteteste","status":"aberto","tipo":"mensalidade","valor":"58.68","linhadig":"36490.00032 003214.9561705 00001.553459442 9 35600000005847","datavenc":"2024-02-12 00:00:00","cpf_cnpj":"01234567890","qrcode":"00020101021363940014BR.GOV.BCB.PIX2571qrcodespix.sejaefi.com.br\/bolix\/v2\/cobv\/2c32a6f1d36b40f5a50eca74f04bccc05204000025435866802BR5905EFISA6008SAOPAULO62070503***6304F3F5"}]}          

     

    receio de atualizar o mk-auth é grande kkkk ainda não tive tempo de subir uma nova VM para testar 100% a versão 24.0x antes de rodar um update no sistema em producão.

     

    confesso que tentei criar o arquivo pix.api e adicionei o código mas ao conectar via JWT ele me dava erro. acesso negado.. foi então que eu vi que só os arquivos já criados com .api que conseguiriam executar o código.

  • vai incluir na api webhook? para quando der alguma baixa no pagamento sermos notificados, assim como os chamados etc

  • Boa noite,

    No caso, o endpoint aberto ainda não existe na versão 23.07. Se atualizar o sistema, será possível utilizá-lo. Ou pode baixá-lo aqui  titulo.zip, mas não inclui o pixqrcode (apenas na versão 24 em diante).

    As próximas novidades que estou finalizando são a paginação da API (para não vir trocentos registros de uma vez) e no endpoint api/titulo/titulos, no modo POST, possibilitando passar login e CPF em um array e retornar os títulos de sua escolha (pagos, abertos e vencidos). logo fica um exemplo pratico no postman.
    https://storage.ning.com/topology/rest/1.0/file/get/12364624854?profile=original
This reply was deleted.