pagarme / pagarme-java

Pagar.me's Java API
The Unlicense
46 stars 29 forks source link

CardHash ? #104

Open lucazin opened 6 years ago

lucazin commented 6 years ago

Como eu crio um cardhash no java ?

jonatasmaxi commented 6 years ago

Olá @lucazin , meu nome é Jonatas e faço parte da equipe de suporte técnico do Pagar.me.

Atualmente, nossa biblioteca não possui a funcionalidade de geração de card_hash. O que recomendamos é que utilize nosso script de geração de card_hash disponibilizado aqui: https://docs.pagar.me/docs/obtendo-os-dados-do-cartao

Isso permite que o script seja gerado ainda no front end o que evita o transporte de dados do cartão até o seu backend.

No caso de uma aplicação Android, recomendamos que o script seja colocado e executado em uma webview.

Qualquer dúvida estou por aqui.

lucazin commented 6 years ago

Ola Jonatas. Obrigado

O cardhash estou gerando em .net e retornando pro android via rest. até ai tudo bem.

Mas estou usando a lib pra java https://github.com/pagarme/pagarme-java

implementation('me.pagar:pagarme-java:1.5.4') { transitive = true }

E quando vou rodar o projeto me aparece esse cara ..

Error:Program type already present: javax.ws.rs.Consumes

Poderia me ajudar?

funciona quando eu coloco desta maneira

implementation ('me.pagar:pagarme-java:1.5.4') { exclude group: 'com.google.code.gson', module: 'gson' exclude group:'javax.inject', module:'javax.inject' exclude group: 'com.google.guava' exclude group: 'javax.ws.rs'

    }

Mas tirando o ws.rs ele nao salva a transacao.

Em qui, 12 de jul de 2018 às 16:16, Jonatas Alvarenga Maximiano < notifications@github.com> escreveu:

Olá @lucazin https://github.com/lucazin , meu nome é Jonatas e faço parte da equipe de suporte técnico do Pagar.me.

Atualmente, nossa biblioteca não possui a funcionalidade de geração de card_hash. O que recomendamos é que utilize nosso script de geração de card_hash disponibilizado aqui: https://docs.pagar.me/docs/obtendo-os-dados-do-cartao

Isso permite que o script seja gerado ainda no front end o que evita o transporte de dados do cartão até o seu backend.

No caso de uma aplicação Android, recomendamos que o script seja colocado e executado em uma webview.

Qualquer dúvida estou por aqui.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/pagarme/pagarme-java/issues/104#issuecomment-404620370, or mute the thread https://github.com/notifications/unsubscribe-auth/Aa9RlllsdSbc0Cv91zc56QRDXDzpHp32ks5uF6B3gaJpZM4VNeaq .

lucazin commented 6 years ago

No caso de ser gerado ainda no webview ..seria melhor por questao de seguranca.

Mas como eu salvo o hash em uma variavel no javascript tendo esse codigo como base

var token;

pagarme.client.connect({ encryption_key: 'xxxx' }) .then(client => client.security.encrypt(creditCard)) .then(card_hash => console.log(card_hash))

como atribuir o hash ao token ? pq no console e exibido o hash.

Em qui, 12 de jul de 2018 às 17:30, Lucas Bergamo bergamo86@gmail.com escreveu:

Ola Jonatas. Obrigado

O cardhash estou gerando em .net e retornando pro android via rest. até ai tudo bem.

Mas estou usando a lib pra java https://github.com/pagarme/pagarme-java

implementation('me.pagar:pagarme-java:1.5.4') { transitive = true }

E quando vou rodar o projeto me aparece esse cara ..

Error:Program type already present: javax.ws.rs.Consumes

Poderia me ajudar?

funciona quando eu coloco desta maneira

implementation ('me.pagar:pagarme-java:1.5.4') { exclude group: 'com.google.code.gson', module: 'gson' exclude group:'javax.inject', module:'javax.inject' exclude group: 'com.google.guava' exclude group: 'javax.ws.rs'

    }

Mas tirando o ws.rs ele nao salva a transacao.

Em qui, 12 de jul de 2018 às 16:16, Jonatas Alvarenga Maximiano < notifications@github.com> escreveu:

Olá @lucazin https://github.com/lucazin , meu nome é Jonatas e faço parte da equipe de suporte técnico do Pagar.me.

Atualmente, nossa biblioteca não possui a funcionalidade de geração de card_hash. O que recomendamos é que utilize nosso script de geração de card_hash disponibilizado aqui: https://docs.pagar.me/docs/obtendo-os-dados-do-cartao

Isso permite que o script seja gerado ainda no front end o que evita o transporte de dados do cartão até o seu backend.

No caso de uma aplicação Android, recomendamos que o script seja colocado e executado em uma webview.

Qualquer dúvida estou por aqui.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/pagarme/pagarme-java/issues/104#issuecomment-404620370, or mute the thread https://github.com/notifications/unsubscribe-auth/Aa9RlllsdSbc0Cv91zc56QRDXDzpHp32ks5uF6B3gaJpZM4VNeaq .

murilohns commented 6 years ago

fala @lucazin, você só precisa mandar esse card_hash pra frente!

algo parecido com:

 pagarme.client.connect({ encryption_key: 'xxxx' })
.then(client => client.security.encrypt(creditCard))
.then(card_hash => {
    token = card_hash;
  })
lucazin commented 6 years ago

Obrigado Murilo! Ja tinha conseguido. !

Agora estou com uma duvida, referente a .net

Criei uma transacao no meu servico WCF e ja esta recebendo os dados e pagando normalmente. Mas como eu recebo os dados do postback ?

Sei que tem que colocar transacao..postbackurl = ....

mas essa url tem que ser como ? e como eu recebo esse json pra salvar no meu sistema. Essa url que eu passar tem que ser uma pagina que recebe parametros via querystring ?

Em sex, 13 de jul de 2018 às 09:15, Murilo Henrique Nascimento Souza < notifications@github.com> escreveu:

fala lucazin, você só precisa mandar esse card_hash pra frente!

algo parecido com:

pagarme.client.connect({ encryption_key: 'xxxx' }) .then(client => client.security.encrypt(creditCard)) .then(card_hash => { token = card_hash; })

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/pagarme/pagarme-java/issues/104#issuecomment-404815861, or mute the thread https://github.com/notifications/unsubscribe-auth/Aa9RltnPFLs_xwi6bYFMX3ZpjzukWsmuks5uGI9OgaJpZM4VNeaq .

lucazin commented 6 years ago

Apenas melhorando a pergunta acima...

Tenho que criar por exemplo uma page Asp.net que recebe algo como parametro via querystring ? e entao passar o endereco dessa page no postbackurl ?

Tipo www.server.com/pagina.aspx?param=1&paramx=2

e nessa page eu recebo os dados json do postback e salvo na minha base. Como faco isso ? no caso da assinatura.

Obrigado

Em sáb, 14 de jul de 2018 às 07:47, Lucas Bergamo bergamo86@gmail.com escreveu:

Obrigado Murilo! Ja tinha conseguido. !

Agora estou com uma duvida, referente a .net

Criei uma transacao no meu servico WCF e ja esta recebendo os dados e pagando normalmente. Mas como eu recebo os dados do postback ?

Sei que tem que colocar transacao..postbackurl = ....

mas essa url tem que ser como ? e como eu recebo esse json pra salvar no meu sistema. Essa url que eu passar tem que ser uma pagina que recebe parametros via querystring ?

Em sex, 13 de jul de 2018 às 09:15, Murilo Henrique Nascimento Souza < notifications@github.com> escreveu:

fala lucazin, você só precisa mandar esse card_hash pra frente!

algo parecido com:

pagarme.client.connect({ encryption_key: 'xxxx' }) .then(client => client.security.encrypt(creditCard)) .then(card_hash => { token = card_hash; })

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/pagarme/pagarme-java/issues/104#issuecomment-404815861, or mute the thread https://github.com/notifications/unsubscribe-auth/Aa9RltnPFLs_xwi6bYFMX3ZpjzukWsmuks5uGI9OgaJpZM4VNeaq .

lucazin commented 6 years ago

Pode me ajudar Jonatas?

Em sáb, 14 de jul de 2018 às 09:01, Lucas Bergamo bergamo86@gmail.com escreveu:

Apenas melhorando a pergunta acima...

Tenho que criar por exemplo uma page Asp.net que recebe algo como parametro via querystring ? e entao passar o endereco dessa page no postbackurl ?

Tipo www.server.com/pagina.aspx?param=1&paramx=2

e nessa page eu recebo os dados json do postback e salvo na minha base. Como faco isso ? no caso da assinatura.

Obrigado

Em sáb, 14 de jul de 2018 às 07:47, Lucas Bergamo bergamo86@gmail.com escreveu:

Obrigado Murilo! Ja tinha conseguido. !

Agora estou com uma duvida, referente a .net

Criei uma transacao no meu servico WCF e ja esta recebendo os dados e pagando normalmente. Mas como eu recebo os dados do postback ?

Sei que tem que colocar transacao..postbackurl = ....

mas essa url tem que ser como ? e como eu recebo esse json pra salvar no meu sistema. Essa url que eu passar tem que ser uma pagina que recebe parametros via querystring ?

Em sex, 13 de jul de 2018 às 09:15, Murilo Henrique Nascimento Souza < notifications@github.com> escreveu:

fala lucazin, você só precisa mandar esse card_hash pra frente!

algo parecido com:

pagarme.client.connect({ encryption_key: 'xxxx' }) .then(client => client.security.encrypt(creditCard)) .then(card_hash => { token = card_hash; })

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/pagarme/pagarme-java/issues/104#issuecomment-404815861, or mute the thread https://github.com/notifications/unsubscribe-auth/Aa9RltnPFLs_xwi6bYFMX3ZpjzukWsmuks5uGI9OgaJpZM4VNeaq .

jonatasmaxi commented 6 years ago

Olá @lucazin tudo bem? A URL de postback pode ser uma página normal como por exemplo https://seusite.com.br/validadorPostback.

Está página precisa estar apta para receber requisições via post e quando um postback chegar, você precisa realizar dois procedimentos:

O primeiro deles é validá-lo, neste processo você se certifica que o postback que está recebendo veio realmente do pagar.me.

O segundo passo é tratá-lo, verificando informações úteis para seu sistema como por exemplo id da transação e o staus e metadata.

A validação de postback não é obrigatória, apesar de muito importante, tem mais algumas informações aqui: https://docs.pagar.me/docs/gerenciando-postbacks

Consegue dar uma olhada?

Consegui responder a sua dúvida?

lucazin commented 6 years ago

Opa Jonatas.

Eu tenho tudo implantado, transacao de cartao certinho. Ja olhei este documento umas 10x

Minha duvida exatamente é:

subscription.PosbackUrl= "http://requestb.in/pkt7pgpk";

Posso colocar qlq url.

So nao entendo como vou receber esses dados, tenho que colocar um request.form ? recuperar variaveis post ? mas qual variaveis ? tem algum exemplo em asp.net ?

Realmente estou com duvida nisso, e vou utilizar para transacoes e assinaturas.

Pode me ajudar? Obrigado!

Em sex, 20 de jul de 2018 às 13:00, Jonatas Alvarenga Maximiano < notifications@github.com> escreveu:

Olá @lucazin https://github.com/lucazin tudo bem? A URL de postback pode ser uma página normal como por exemplo https://seusite.com.br/validadorPostback.

Está página precisa estar apta para receber requisições via post e quando um postback chegar, você precisa realizar dois procedimentos:

O primeiro deles é validá-lo, neste processo você se certifica que o postback que está recebendo veio realmente do pagar.me.

O segundo passo é tratá-lo, verificando informações úteis para seu sistema como por exemplo id da transação e o staus e metadata.

A validação de postback não é obrigatória, apesar de muito importante, tem mais algumas informações aqui: https://docs.pagar.me/docs/gerenciando-postbacks

Consegue dar uma olhada?

Consegui responder a sua dúvida?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/pagarme/pagarme-java/issues/104#issuecomment-406645232, or mute the thread https://github.com/notifications/unsubscribe-auth/Aa9Rlib951Vb7RptaBDPKbVSqEBlfaqAks5uIf6igaJpZM4VNeaq .

lucazin commented 6 years ago

Boa tarde Jonatas.

Consegui recuperar as informacoes, uma coisa tao simples e nao me atentei.

string STATUS_IDEAL_TRANSACAO = Request.Params["desired_status"];

Agora o objecto transaction que mostra todas as informações como eu recupero esse cara? Com Request.Params não esta dando certo, os outros funcionam porque é string. Como recupero esse objeto ?

Obrigado!

transaction

Possui todas as informações do objeto. Para acessar objetos internos basta acessar a chave transaction[objeto1][objeto2]. Ex: para acessar o ddd: transaction[phone][ddd]

Em sex, 20 de jul de 2018 às 13:55, Lucas Bergamo bergamo86@gmail.com escreveu:

Opa Jonatas.

Eu tenho tudo implantado, transacao de cartao certinho. Ja olhei este documento umas 10x

Minha duvida exatamente é:

subscription.PosbackUrl= "http://requestb.in/pkt7pgpk";

Posso colocar qlq url.

So nao entendo como vou receber esses dados, tenho que colocar um request.form ? recuperar variaveis post ? mas qual variaveis ? tem algum exemplo em asp.net ?

Realmente estou com duvida nisso, e vou utilizar para transacoes e assinaturas.

Pode me ajudar? Obrigado!

Em sex, 20 de jul de 2018 às 13:00, Jonatas Alvarenga Maximiano < notifications@github.com> escreveu:

Olá @lucazin https://github.com/lucazin tudo bem? A URL de postback pode ser uma página normal como por exemplo https://seusite.com.br/validadorPostback.

Está página precisa estar apta para receber requisições via post e quando um postback chegar, você precisa realizar dois procedimentos:

O primeiro deles é validá-lo, neste processo você se certifica que o postback que está recebendo veio realmente do pagar.me.

O segundo passo é tratá-lo, verificando informações úteis para seu sistema como por exemplo id da transação e o staus e metadata.

A validação de postback não é obrigatória, apesar de muito importante, tem mais algumas informações aqui: https://docs.pagar.me/docs/gerenciando-postbacks

Consegue dar uma olhada?

Consegui responder a sua dúvida?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/pagarme/pagarme-java/issues/104#issuecomment-406645232, or mute the thread https://github.com/notifications/unsubscribe-auth/Aa9Rlib951Vb7RptaBDPKbVSqEBlfaqAks5uIf6igaJpZM4VNeaq .

jonatasmaxi commented 6 years ago

Olá @lucazin tudo bem? Fiz um exemplo por aqui já há algum tempo que recupera todos os dados do body do postback e os transforma em um parameter map, Assim torna mais fácil o acesso das propriedades, o método é este aqui:

public static Map<String, List> getParameterMap(String data) throws UnsupportedEncodingException { String pairs[] = data.split("&"); final Map<String, List> map = new LinkedHashMap<String, List>(); for (String pair : pairs) { int idx = pair.indexOf("="); String key = idx > 0 ? URLDecoder.decode(pair.substring(0, idx), "UTF-8") : pair; if (!map.containsKey(key)) { map.put(key, new LinkedList()); } String value = idx > 0 && pair.length() > idx + 1 ? URLDecoder.decode(pair.substring(idx + 1), "UTF-8") : null; map.get(key).add(value); } return map; }

E você pode fazer a chamada dele assim:

getParameterMap(req.getReader().lines().collect(Collectors.joining(System.lineSeparator())));

lucazin commented 6 years ago

Obrigao jonata..vou testar depois!

Em Qua, 25 de jul de 2018 15:47, Jonatas Alvarenga Maximiano < notifications@github.com> escreveu:

Olá @lucazin https://github.com/lucazin tudo bem? Fiz um exemplo por aqui já há algum tempo que recupera todos os dados do body do postback e os transforma em um parameter map, Assim torna mais fácil o acesso das propriedades, o método é este aqui:

public static Map<String, List> getParameterMap(String data) throws UnsupportedEncodingException { String pairs[] = data.split("&"); final Map<String, List> map = new LinkedHashMap<String, List>(); for (String pair : pairs) { int idx = pair.indexOf("="); String key = idx > 0 ? URLDecoder.decode(pair.substring(0, idx), "UTF-8") : pair; if (!map.containsKey(key)) { map.put(key, new LinkedList()); } String value = idx > 0 && pair.length() > idx + 1 ? URLDecoder.decode(pair.substring(idx + 1), "UTF-8") : null; map.get(key).add(value); } return map; }

E você pode fazer a chamada dele assim:

getParameterMap(req.getReader().lines().collect(Collectors.joining(System.lineSeparator())));

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/pagarme/pagarme-java/issues/104#issuecomment-407857008, or mute the thread https://github.com/notifications/unsubscribe-auth/Aa9Rllufvh2G366ey3QsnxUFwkLDCs4Eks5uKL1SgaJpZM4VNeaq .

lucazin commented 6 years ago

Olá Jonatas

Tenho uma duvida, estou tentando criar o split (transacao) via c# seguindo a documentacao.

Mas aqui fala que tem que usar o campo register information..

Recipient recipient = new Recipient(); recipient.TransferInterval = TransferInterval.Weekly; recipient.TransferDay = 5; recipient.TransferEnabled = true; recipient.BankAccount = banco;

Quando coloco recipient. nao tem nenhuma opcao pra eu coloca os dados do meu seller (pra quem vai cair o dinheiro)

é Obrigatório esse campo ? como funciona. Obrigado

Em qua, 25 de jul de 2018 às 15:51, Lucas Bergamo bergamo86@gmail.com escreveu:

Obrigao jonata..vou testar depois!

Em Qua, 25 de jul de 2018 15:47, Jonatas Alvarenga Maximiano < notifications@github.com> escreveu:

Olá @lucazin https://github.com/lucazin tudo bem? Fiz um exemplo por aqui já há algum tempo que recupera todos os dados do body do postback e os transforma em um parameter map, Assim torna mais fácil o acesso das propriedades, o método é este aqui:

public static Map<String, List> getParameterMap(String data) throws UnsupportedEncodingException { String pairs[] = data.split("&"); final Map<String, List> map = new LinkedHashMap<String, List>(); for (String pair : pairs) { int idx = pair.indexOf("="); String key = idx > 0 ? URLDecoder.decode(pair.substring(0, idx), "UTF-8") : pair; if (!map.containsKey(key)) { map.put(key, new LinkedList()); } String value = idx > 0 && pair.length() > idx + 1 ? URLDecoder.decode(pair.substring(idx + 1), "UTF-8") : null; map.get(key).add(value); } return map; }

E você pode fazer a chamada dele assim:

getParameterMap(req.getReader().lines().collect(Collectors.joining(System.lineSeparator())));

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/pagarme/pagarme-java/issues/104#issuecomment-407857008, or mute the thread https://github.com/notifications/unsubscribe-auth/Aa9Rllufvh2G366ey3QsnxUFwkLDCs4Eks5uKL1SgaJpZM4VNeaq .

lucazin commented 6 years ago

Jonatas, Boa noite!

Eu consigo apagar as transacoes no dashboard do pagarme que eu fiz no modo teste ? tem mta coisa la...

Em qui, 9 de ago de 2018 às 12:30, Lucas Bergamo bergamo86@gmail.com escreveu:

Olá Jonatas

Tenho uma duvida, estou tentando criar o split (transacao) via c# seguindo a documentacao.

Mas aqui fala que tem que usar o campo register information..

Recipient recipient = new Recipient(); recipient.TransferInterval = TransferInterval.Weekly; recipient.TransferDay = 5; recipient.TransferEnabled = true; recipient.BankAccount = banco;

Quando coloco recipient. nao tem nenhuma opcao pra eu coloca os dados do meu seller (pra quem vai cair o dinheiro)

é Obrigatório esse campo ? como funciona. Obrigado

Em qua, 25 de jul de 2018 às 15:51, Lucas Bergamo bergamo86@gmail.com escreveu:

Obrigao jonata..vou testar depois!

Em Qua, 25 de jul de 2018 15:47, Jonatas Alvarenga Maximiano < notifications@github.com> escreveu:

Olá @lucazin https://github.com/lucazin tudo bem? Fiz um exemplo por aqui já há algum tempo que recupera todos os dados do body do postback e os transforma em um parameter map, Assim torna mais fácil o acesso das propriedades, o método é este aqui:

public static Map<String, List> getParameterMap(String data) throws UnsupportedEncodingException { String pairs[] = data.split("&"); final Map<String, List> map = new LinkedHashMap<String, List>(); for (String pair : pairs) { int idx = pair.indexOf("="); String key = idx > 0 ? URLDecoder.decode(pair.substring(0, idx), "UTF-8") : pair; if (!map.containsKey(key)) { map.put(key, new LinkedList()); } String value = idx > 0 && pair.length() > idx + 1 ? URLDecoder.decode(pair.substring(idx + 1), "UTF-8") : null; map.get(key).add(value); } return map; }

E você pode fazer a chamada dele assim:

getParameterMap(req.getReader().lines().collect(Collectors.joining(System.lineSeparator())));

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/pagarme/pagarme-java/issues/104#issuecomment-407857008, or mute the thread https://github.com/notifications/unsubscribe-auth/Aa9Rllufvh2G366ey3QsnxUFwkLDCs4Eks5uKL1SgaJpZM4VNeaq .

jonatasmaxi commented 6 years ago

Olá @lucazin tudo bom?

Não é possível apagar dados da dashboard.

O que você pode fazer, caso continue utilizando a company só para teste é gerar uma nova criando uma nova conta.

Sobre a dúvida em relação ao c#, consegue abrir a issue aqui, por favor? Assim conseguimos manter tudo centralizado em cada repositório :)

jonatasmaxi commented 6 years ago

Olá @lucazin podemos encerrar esta issue?

lucazin commented 6 years ago

Pode sim amigo ! Deu tudo certo aqui. Obrigado!

Em Qua, 5 de set de 2018 10:00, Jonatas Alvarenga Maximiano < notifications@github.com> escreveu:

Olá @lucazin https://github.com/lucazin podemos encerrar esta issue?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/pagarme/pagarme-java/issues/104#issuecomment-418721361, or mute the thread https://github.com/notifications/unsubscribe-auth/Aa9RltJ1qin-GEvtE896MMTGJq6At6U9ks5uX8rSgaJpZM4VNeaq .