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