Respostas

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

  • 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

This reply was deleted.