Grails PayPal e IPN Listener
22/08/2012 19:13
0
Olá a todos!

Estou integrando um sistema com a PayPal, mas estou com dificuldades em testar o IPN (InstantPaymentNotification).

O processo é assim:

1) Na URL do pagamento existe um parâmetro "notify_url", que é uma URL para onde a PayPal enviará a notificação do pagamento.
A resposta da PayPal é asíncrona, então é necessário fazer um "port forward" no roteador para a aplicação local tornar-se apta a receber requisições externas da rede local.
Isso foi feito e é possível acessar a aplicação local de redes externas, atualmente o "notify_url" está sendo passado como: http://189.55.112.193:8080/aplicação/ipnReceiver/index

2) Existe um controller IpnReceiverController, onde a action index contém um IpnCommand em sua assinatura, e o IpnCommand contém todos os parâmetros que são enviados pela PayPal

class IpnReceiverController {

def index(IpnCommand command) {
...
}

class IpnCommand {

String receiver_email
String payer_email
...
}


3) No Config.groovy, ajustei variáveis para usar o ambiente de desenvolvimento da PayPal, está funcionando pois consegui realizar pagamentos através do sistema em desenvolvimento.
Ajustei também a variável grails.serverURL para o IP da máquina onde está rodando a aplicação (grails.serverURL = "http://189.55.112.193:8080/${appName}")

4) Ao acessar a URL do "notify_url" pelo browser, inclusive de uma rede externa, a action "index" é acionada sem problemas, no entanto, ao tentar utilizar a ferramenta de testes de IPN do PayPalSandbox, o seguinte erro é retornado:
IPN delivery failed. Unable to connect to the specified URL. Please verify the URL and try again.

Alguem já conseguiu utilizar a ferramenta de testes de IPN do Sandbox numa aplicação local com port forward sem problemas?

Obrigado pela atenção, abraços!

-Gabriel
Tags: paypal, ipn, port forward, listener


0
Olá Gabriel,

O IPN posta pela porta 80! Você liberou essa porta?

referência: http://development.thatoneplace.net/2012/07/paypal-instant-payment-notification-ipn.html
22/08/2012 19:16


0
Fala Mussatto!!

Fiz o seguinte:

1) Para rodar na porta 80, é necessário estar como "root"
Acessei como root, exportei as variáveis de ambiente e rodei o comando para utilizar a porta 80

grails -Dserver.port=80 -Duse.root.context.ph=true run-app


2) Até aí funcionou, foi possível acessar a aplicação através do IP
http://189.55.112.193/aplicação/

No entanto, agora no teste de IPN do Sandbox o erro foi outro :/

IPN delivery failed. HTTP error code 404: Not Found

Houvi dizer que a porta 80 é bloqueada pela NET para não permitir rodar webserver..
Se for isso, agora estou em cheque em como executar tal teste hahahaha
A não ser colocando a aplicação em produção, mas não queria isso agora...

So Close!!

Valeu ae pela ajuda ;D

Abraços!

-Gabriel
22/08/2012 20:27


0
Desculpem pela resposta off topic, mas é que pelo visto não dá pra editar a resposta.

"Houvi" dizer é ****

*Ouvi dizer [...]
22/08/2012 21:00


0
FUNCIONOU!

Eu que estava viajando hahaha

O erro 404 era porque o método não estava totalmente implementado, aí não estava respondendo/redirecionando e não havia página a ser renderizada, resultando no erro 404.

Para quem quiser testar o IPN em desenvolvimento, basta rodar a aplicação usando a porta 80 e dar forward nesta porta em seu roteador.

Obrigado e abraços!!

-Gabriel
22/08/2012 21:14



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto