Link pagamento para conta de consumo

Criei um projeto na pandemia para ajudar pessoas em dificuldades financeiras.
Conecto pessoas com contas de consumo atrasadas que compartilham a linha digitável da conta e outras pessoas pagam para elas. Não acredita? Já foram pagos +80 boletos com ticket médio de R$70,

Gostaria de implementar uma funcionalidade em que tivesse um ícone, pagar com Nubank e já abrisse a tela de pagamento com cartão.

Algo http://pagamento.nubank?codigodaconta=132413413531453245234524 onde o parâmetro seria exatamente a linha digitável.

Já viram algo assim?

O objetivo é facilitar quem vai ajudar, pois hoje precisa copiar o código e colar no app de pagamento. aqui eu explico https://www.instagram.com/tv/CJ40KvRJj_X/?utm_source=ig_web_copy_link

6 Curtidas

Olá, @Alexandre_Caruso.
Seja bem vindo à comunidade, irmão.
Nossa, o projeto é ousado, né?! Fico meio receoso de doar pra algumas instituições ou projetos desse tipo por falta de credibilidade… Sendo assim prefiro ajudar as pessoas à minha volta que precisam, afinal sempre existem essas pessoas, não é?
Mas desejo sorte no projeto, amigo.
Dou os parabéns por pensar no próximo e desejo sucesso e reconhecimento pro projeto.

2 Curtidas

Obrigado pela percepção. Eu também sou assim. O ponto importante é que eu não ganho intermediação, ou qualquer taxa. Imagina vc chegar para um amigo e falar, paga minha conta ai! Pega meu código! Não é seu amigo que vai receber o dinheiro, é a concessionária. É o mesmo princípio. Existem 2 tipos de boletos, aqueles que vc manipula a linha digitável e caem em contas de laranjas e as contas de consumo (água, luz, telefone, gás) essas não podemos falsificar. Escrevi isso tudo para esclarecer a quem for ler o item e obrigado mais uma vez.

Quando tiver tempo, navegue pelo Insta e veja as declarações reais.
Valeu mais uma vez!

4 Curtidas

Fico meio receoso com os mal intencionados, mas cara, achei sensacional, super Shofiboll!
:wink:

6 Curtidas

Obrigado Mr.Xls (adorei o nick) ! Eu entendo e esse é o default dos brasileiros, que me incluo, mas como sempre digo, existem os que são verdadeiros, os que precisam. Além disso, neste caso especificamente, os “mal intencionados” não podem fazer nada, pois o código é da conta de consumo, o projeto não aceita aqueles boletos que desenhamos, portanto, vão direto para a conta da concessionária.
De qualquer forma, obrigado pela mensagem!

3 Curtidas

Obrigado :wink:

Essa é a bronca da má intenção!
Se eu colocar lá, meu boleto da conta de água, uma pessoa de bom coração que quiser me ajudar, vai lá e paga meu boleto correto?
Eu não precisei desenhar, usei um boleto real da conta de água, alguém viu se compadeceu, foi lá e pagou.
Mas será que eu precisava mesmo de ajuda para pagar esse boleto?
Entende?

3 Curtidas

Exato. (não sei dividir bonito como vc fez)
Eu criei no GlideApps em um final de semana, depois de ter sido um sucesso um Google Sheet compartilhado.

Neste seu exemplo, o valor vai para a concessionária, nem eu, nem quem está ajudando recebe. Não recebo, nada, taxa de intermediação, comissão ou qualquer percentual por transação. Nada! Eu só junto quem precisa com quem pode.

Aliás já temos +80 contas pagas com ticket médio de R$80, R$90. Pessoas que não se conhecem (e nem eu conheço) se ajudando. Isso é muito legal de ver!

2 Curtidas

Muito bom o projeto, parabéns pela iniciativa e boa fé, poucos são os que se dispõe a ajudar.

Quando você frisa que é apenas pagamento de contas de consumo, realmente não tem como desviar esse pagamento para uma pessoa de má fé, que está se aproveitando da boa vontade de quem tem a intenção de ajudar, mas tenho dois pontos a observar:

1 - Quem garante que todas essas contas são de quem realmente está necessitando de ajuda? Sabemos que existem os mau intencionados e gostam de tirar proveito às custas de outros (Esse ponto é bem crítico)

2 - Esse é apenas uma observação, se esquecer de virar a chave “conta paga”, está será paga novamente e a concessionária vai amar isso, receber em duplicidade ou até mais.

Esses dois pontos que citei, são apenas pra efeito de melhoria no projeto.

No mais é como falei no início, parabéns pela intenção, pois ajudar ao próximo sempre será uma boa ação.

5 Curtidas

Sim, como eu disse, adorei de mais sua iniciativa de fato ela é super Shofiboll, entenda que não estou questionando a ideia em si, a dúvida é sobre a intenção de quem busca ajuda. Talvez futuramente, pudesse pensar em incrementar algo para interagir com quem busca ajuda, pra que as pessoas que querem ajudar, mas tem algum receio, pudessem ter um mínimo de noção de que aquela pessoa que busca ajuda, realmente precisa, entende?

3 Curtidas

Muitíssimo obrigado pelas observações e só assim evoluímos. Trabalho muito próximo de startups e por consequência, MVPs, testes, roadmaps, etc.

Dois pontos importantes que já surgiram.
Ponto 1 - existe esse risco e que venho tentado mitigar. primeiro era só na intenção, confiança, empatia. Depois inclui o perfil da pessoa para os incrédulos ou desconfiados buscarem informações nas redes de quem colocou. Agora implementei um conta verificada. Mas você está certo, sempre haverá esse risco. Como eu mencionei, não podemos esquecer de que tem os mau intencionados, mas existem os bem intencionados. Por que não arriscar?

Ponto 2 - eu fiz o código sozinho em uma plataforma lowcode ou no-code GlideApps, sem webhook, api, etc…portanto sem integração. Sim existe essa possibilidade e a pessoa ainda será ajudada porque ficará com crédito.

Mais uma vez obrigado pelos pontos!

2 Curtidas

Não se preocupe Mr.Xls fiz a leitura de colaboração, não se preocupe.
De fato existe, no Brasil, vale frisar, porque somos historicamente afetados com fraudes, há a necessidade dessa verificação que você comentou.

Mas o bom é que temos vários crowfundings, doações, assinaturas recorrentes como apoia-se e patrion que são exemplos de ajuda para os “não mau-intencionados”

Agradeço demais os comentários!

3 Curtidas

Olha, quanto ao fato de ficar com crédito não sei, por tratar-se de órgãos públicos, essa conta paga duas ou mais vezes não creio que o órgão irá avisar ao usuário ou deixa como crédito para abater na próxima fatura.

Boa, pra quem está sozinho nessa empreitada, vc já está muito bem, está bem pensado, depois vc pode melhorar um pouco com pequenas implementações.

Está no caminho certo brother, pelo menos demonstra ter bom coração e boas intenções para com o próximo, o restante são só detalhes, melhorias :+1:

Que ótimo, minha intenção é ver ideias como essa properarem, sem o risco de fazermos uma boa ação para quem só quer tirar vantagem.

5 Curtidas

Sim sim. Fica com crédito. Ainda não ocorreu, mas já acompanhei casos fora do app e já confirmei com a LIGHT, no caso do Rio.

Obrigado pelas palavras. Já fui dev há anos atrás e o app como está hoje é uma evolução de aprendizado meu, que recebo esses feedbacks como esses aqui, penso em funções e depois eu busco saber como implemento. Como eu disse, tenho muitas outras ideias, mas preciso validar (mvps) outras hipóteses para pensar em um upgrade. Agradeço demais a contribuição e já me ajudariam se divulgassem o projeto. Valeu!

4 Curtidas

Obrigado pela contribuição de todos. Apesar de ainda não ter tido a resposta do link de pagamento, recebi muitos questionamentos positivos e me deram uma luz para criar a Rede do Bem no app.

https://www.instagram.com/p/CLajdUzJrRw/?utm_source=ig_web_copy_link
Esse é o verdadeiro poder da Comunidade! :smiling_face_with_three_hearts:

1 Curtida

Não estou querendo reabrir o tópico, mas porque vi a função doar no app agora.

Acham que caberia para o Projetogarrafanomar ser uma opção?
O valor doado poderia ser uma conta pendente de consumo.

O que acham?

1 Curtida

Parabéns, belo projeto!

Tinha como você disponibilizar o trecho do código que transforma o código lido no boleto em uma linha digitável? Já procurei muito e não achei nada que me ajudasse… no caso seria pra ler contas de água e energia. Meu e-mail leonardo@construcaodesites.com

1 Curtida

Fala Léo! Eu poderia disponibilizar tranquilamente porque acredito no compartilhamento e da evolução coletiva.
O ponto é que eu construi o app em uma plataforma de no-code chamada Glide.
Aliás se você for conhecer eu tenho um código de referral para ganhar mais linhas e não $$. É só entrar aqui neste endereço Build an app from a Google Sheet in five minutes, for free • Glide

Agora, acho que esse doc pode lhe ajudar
https://cmsportal.febraban.org.br/Arquivos/documentos/PDF/Layout%20-%20Código%20de%20Barras%20ATUALIZADO.pdf

Basicamente é retirar os dígitos verificadores. Visto que qdo a pessoa digita, o dígito verificador corrige ou indica erro no bloco. Já qdo lê o código via infra, não é necessário ter os DVs (dígitos verificadores).

Espero ter ajudado.
Em tempo, o endereço novo do aplicativo é https://projetogarrafanomar.glideapp.io/

Olá Alexandre! Eu estou fazendo um trabalho e já consigo ler nativamente em JAVA no android o código de barras, só que os dígitos verificadores eu não consigo ter os resultados esperados… =(.

Já faz uns dias que pesquiso sobre esses 4 dígitos de boleto concessionária como água, luz e telefone e não consigo esse script que converte o código do boleto recuperado da câmera em linha digitável de foram correta… de qualquer maneira obrigado mas se tiver um script que faz essa conversão eu agradeceria muito se me ajudasse.

Estou usando esse mas não funciona direito…

public class Teste {

    public String checksum(String result) {
        //String result = "8462000000046107010901100356713580601131937174";
        //result = "83850000001261800310100263428150700051123229"; //MEU BOLETO DE LUZ

       

        String[] sequencias = splitToNChar(result, 11); //divide em blocos de 11

        List<String[]> checked = new ArrayList<>();

        for(String seq : sequencias) { //uma sequência de 11 dígitos
            int soma = 0;

            for(int s = seq.length() -1; s >= 0; s--) { //para cada dígito, da direita para a esquerda

                int dig = Character.getNumericValue(seq.charAt(s)); //o dígito

                if(dig > 0) {

                    String tmp;

                    if(s % 2 == 0) {

                        tmp = String.valueOf(dig * 2);

                        if(tmp.length() > 1) {
                            for(int p = 0; p < tmp.length(); p++) {
                                soma += Character.getNumericValue(tmp.charAt(p));
                            }
                        } else {
                            soma += Integer.parseInt(tmp);
                        }

                    } else {
                        tmp = String.valueOf(dig);

                        soma += Integer.parseInt(tmp);
                    }
                }
            }

            int rest = soma % 10; //módulo 10
            /*if (rest == 0){
                rest = 10;
            }*/

            checked.add( new String[]{seq, String.valueOf(10 - rest) } );
        }

        String retorno = "";
        for(String[] code : checked) {
            retorno += code[0] + code[1];
        }
        return retorno;
    }

    private static String[] splitToNChar(String text, int size) {
        List<String> parts = new ArrayList<>();
        int length = text.length();
        for (int i = 0; i < length; i += size) {
            parts.add(text.substring(i, Math.min(length, i + size)));
        }
        return parts.toArray(new String[0]);
    }
}