Follow treslines by email clicking Here!

Thursday, August 20, 2015

How to run/install pagseguro on android without thirdpart apps

Hi there!

Today i'm gonna show to you, how to run PagSeguro on Android Apps without any third part app from PagSeguro.

Everybody knows how important it is to offer payment methods in our apps. PagSeguro is a very common payment method in Brazil, but very tricky to get it run correctly on android apps. In fact almost every payment method is very annoying to implement! :)

For this reason I decided to implement my own PagSeguro solution and share a complete sample with the world.

First Step - Get a PagSeguro Account

To do so, register yourself on pagseguro, log in and go to: Vender > Ferramentas para desenvolvedores > Sandbox



There you'll find a automatic created test buyer (comprador de teste) and a test seller (vendedor de teste) like in the images bellow. kepp it open, then you'll need those values in the app we will see here.




Second Step - Fork or just download the sample from Github

The sample was developed using android studio and tested on my pagseguro sandbox account. It is available from here: https://github.com/treslines/pagseguro_android. The image bellow shows some transactions i made using my sandbox account:


What you'll get?

The pictures bellow show how the app looks like. It addresses already navigations issues e user notifications.
















Go download it!

Go now to github: https://github.com/treslines/pagseguro_android. download it and test it. Any feedback or contribution to make it better is welcome!

That's all! Hope you like it!

14 comments:

  1. Amigo vi seu código e ficou muito bom, parabéns.
    Fiquei com apenas uma dúvida: Consigo utilizando seu código passar todos os dados através de uma unica activity e tratar apenas a resposta? (Se foi positiva ou não)
    Grato desde já.

    ReplyDelete
    Replies
    1. Então cara, vê: eu criei esse post, porque tinha uma tremenda necessidade de poder efetuar transações atraves do pagseguro. Tentei inumeras outras fontes usando os aplicativos de pagamento da própria pagseguro, mas nenhum deles funcionou, além de ter a desvantagem de ter que instalar(checkar) se o dito aplicativo ja estava instalado para o usuário. Dai surgiu a ideia de fazer os pagamentos eu mesmo, apenas usando os webservices disponiveis, ja que nem no forum da pagseguro, eu recebi respostas às minhas perguntas.

      Foi por isso que criei meus próprios modelos e basicamente delego o processo de pagamento para o site da pagseguro. Se vc quiser tratar tudo isso em uma unica activity e tratar so o result(que foi o que tentei primeiramente) teras que implementar usando o aplicativo deles, que num consegui fazer rodar corretamente nem passar todos os dados que queria, por ser muito limitado e o suporte num me ajudou.

      No exemplo que criei ao finalizar a compra o usuário tbm é notificado de sucesso ou falha. Se te entendi direito, vc gostaria de escapar os steps proposto pelo serviço da pagseguro. Bem do ponto de vista de usabilidade esse processo (baby steps) eh muito bom e num estressa tanto o usuário. Eu por exemplo, toda vez que vejo um formulario gigante, eu "estilo" logo e nem tenho "saco" pra preencher tudo. Olhando dessa forma, eu acho o esquema bacana. Mas fica a seu critério.

      abraço,
      Ricardo

      Delete
    2. PS: Sem falar que salvar esses dados sensiveis do cliente seria extremamente perigoso. (pois de outra forma num terias o ganho ou beneficio de poder passar tudo de uma única vez) Dificilmente alguem iria se sentir a vontade usando tal serviço ou app.

      Delete
    3. Sim. Também tive dificuldades com a implementação do PagSeguro. Com relação ao que comentei é porque havia uma necessidade primaria de um form único com todos os dados (incluindo dados de cartões), mas que não é o caso mais. Estarei implementando a sua para ver se obtenho exito (já implementei uma outra que funciona em tudo, menos no modo de produção). Mais uma vez parabéns pela codificação e obrigado pela rápida resposta.

      Delete
  2. Boa tarde Ricard, parabéns pelo aplicativo.
    Tentei adaptar o teu codigo apontando para SANDBOX, para o meu, então a ultima fase "Seu pagamento esta em fase de analise..." queda travado lá e não volta ao Activity pai (onActivityResult), tipo "A transação foi efetuada com sucesso...". Quando esta em "fase de analise" não retorna ? queda parado lá?
    Obrigado!

    ReplyDelete
  3. Olá Martin! Salvo engano, apos a conclusão, se vc pressionar back, ele deveria voltar para a activity e cair no onActivityForResult. Faz assim: Apos a confirmação de pagamento, quando aparecer a tela de conclusão, pressiona back e vê o que acontece. (Deveria cair no activityForResult). Abraço, Ricardo

    ReplyDelete
    Replies
    1. Daria para fazer isso automaticamente? Acho que o usuario não vai saber voltar com o Back button, e para nosso interese precisariamos que volte automaticamente para onActivityResult.

      Delete
  4. This comment has been removed by the author.

    ReplyDelete
  5. Good job and it works fine. Just a detail: rather than doing "extends ActionBarActivity", maybe it's easier to "extends FragmentActivity" as it resolves the problem of compat theme.
    Best regards
    Pierre-Louis

    ReplyDelete
  6. Hi,
    After making a few test, I've found some problems. First, even if you put email, name, adress and so on, in buyer's data (and these data are OK when I perform a Log on checkoutXml at beginning of pay methode), Pagseguro don't take care of them and ask you your email, then CEP etc... This is not nice because it's slow, and as the code use Webview, we have to fill email, then confirm, enter CEP, confirm etc... In that case, the benefit of an app is "small" and using direclty a browser will do about the same result. :(
    How can we solve that? So how can we put everything in one call?
    Any idea?

    ReplyDelete
  7. Obrigado e parabéns pelo código, me ajudou muito.

    ReplyDelete
  8. Cara, em primeiro lugar parabéns. Esta me ajudando demais na minha aplicação.
    Eu tenho algumas duvidas, se você puder me ajudar agradeço.
    Quando finalizo a compra, não aparece o botão "voltar para a loja". Pressionando back ele volta, porém queria que o botão aparecesse, pois usuários menos habituados terão dificuldades. Outra coisa, tem como puxar os dados do usuário, como cep, telefone, etc... Já tenho esses dados cadastrados na minha app e precisar digitar de novo seria massante.
    Muito obrigado fera!

    ReplyDelete
  9. Olá, ótima aplicação! Gostei pra caramba da organização do código! Bom tenho uma dúvida: Seu projeto suporta produtos digitais? Por exemplo uma assinatura de revista? Pergunto isso pq o projeto quando abre, vai pra tela de Endereço, no caso do produto digital, não tem Shipping. Como eu faria nesse escopo e usando sua demo?

    ReplyDelete
    Replies
    1. Aaah... O pagseguro não trabalha sem o endereço, uma vez que eles precisam para autenticação. Li essa informação aqui: https://goo.gl/SfL3gp

      Delete