• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

ramone

PHP e PayPal

14 mensagens neste tópico

Olá viva pessoal.

Estou a desenvolver uma aplicação web em php que irá permitir efectuar pagamentos através de PayPal, só que estou com alguns problemas no que se refere à confirmação que chega do PayPal ou seja o conhecido IPN. Por acaso já alguém utilizou ou sabe como configurar isto?

Muito obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vou assumir que estás a utilizar o PayPal Developer Toolkit para PHP.

O IPN que recebes do PayPal encontra-se no ficheiro 'ipn.php'

//check the ipn result received back from paypal

if(eregi("VERIFIED",$result)) 
{ include_once('./ipn_success.php'); } 

else 
{ include_once('./ipn_error.php'); } 

Se tiver feito a operação com sucesso 'corre' o ficheiro 'ipn_success.php' senão corre o 'ipn_error.php'.

Agora em cada um dos ficheiros de sucesso ou erro, deverás ser tu a programar o que desejas mostrar ao utilizador.

Por exemplo, assumindo que a transacção ocorreu com sucesso.... o ficheiro 'ipn.php' corre o 'ipn_success.php', e neste tens o código:

//include file - not accessible directly
if(isset($paypal['business']))
{
//log successful transaction to file or database

}
else
{
die('This page is not directly accessible');
}

onde está a mensagem "//log successful transaction to file or database", colocas o teu código. Pode ser ser por exemplo um redireccionamento para uma página tua com a informação de que foi feita a transacção com sucesso.

A página de erro funciona da mesma forma.

Espero que tenha ajudado.

Cumps

Bruno Vaz

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá olá  em primeiro lugar queria-te agradecer pela disponibilidade e confirmar que estou a usar o paypal toolkit :D.

O meu problema é que não recebo notificação nenhuma :S.

Passo a explicar como tenho isto configurado:

1º - Activei no meu profile do PayPal o sistema de notificação IPN, dando-lhe o endereço onde se encontra o meu script exemplo.

http://www.meusite.com/paypal/ipn/ipn.php

2º - Configurei o config.inc.php da seguinte forma:

$paypal[success_url]="./paypal/success.php";
$paypal[notify_url]="http://www.meusite.com/paypal/ipn/ipn.php";
$paypal[return_method]="2"; //1=GET 2=POST

Posso ter páginas dferentes no success_url e no notify_url?

Quando termino o pagamento no paypal for developers sou redireccionado correctamente para o success_url no entanto o ipn.php nc é invocado :thumbsup:

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Poderá ser por estares a colocar o link completo em:

Ora se já definiste:

quando a API do PayPal tentar enviar o IPN, vai enviar para -> http://www.meusite.com/paypal/ipn/ipn.php'>http://www.meusite.com/http://www.meusite.com/paypal/ipn/ipn.php

tenta lá colocar :

$paypal[site_url]="http://www.meusite.com/"

$paypal[notify_url]="paypal/ipn/ipn.php"

Assim desta forma o notify vai para -> http://www.meusite.com/paypal/ipn/ipn.php

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esqueceste-te das '.

$paypal['success_url']="./paypal/success.php";
$paypal['notify_url']="http://www.meusite.com/paypal/ipn/ipn.php";
$paypal['return_method']="2"; //1=GET 2=POST

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá novamente :cheesygrin:

Efectuando as alterações que me falas-te continua a não passar no ficheiro ipn.php :thumbsup:.

a variável success_url e a variável notify_utl podem ter valores diferentes? Devem estar as duas prenchidas?

Outra dúvida é se tenho de configurar na minha conta paypal a opção Instant Payment Notification Preferences. Se sim aqui tenho de dar o endereço completo do ficheiro ipn.php certo?

Estranho é também na pasta de logs do ipn não aparecer nada :D

Agradeço desde já o comentário do djthyrax, no entanto penso que não seja esse o problema pois eu estou a ser correctamente direccionado para a variável success_url.

Obrigado + uma vez.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o que é que estás a utilizar em:

$paypal[return_method]

1 ou 2..... se quiseres utilizar o IPN tens de utilizar o 2.

Crias também uma pasta com o nome de logs dentro da pasta php_paypal/ipn. A pasta logs será onde o script vai guardar os logs do IPN, mas precisas de dar permissões 777 às duas pastas.

Se tudo funcionar bem, deverás ver aparecer dois ficheiros conforme o script é utilizado. São eles: ipn_error.txt e ipn_success.txt que guardam em CSV o resultado da operação. Se não tiveres dado as permissões às pastas, não aparecem ficheiros nenhuns.

Esperemos que fique OK agora :thumbsup:

Cumps

Bruno Vaz

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a variável success_url e a variável notify_url podem ter valores diferentes? Devem estar as duas prenchidas?

success_url serve para redireccionar para uma página de "operação concluida com sucesso", mas sem utilizar o IPN.

notify_url serve para indicar qual o caminho do ficheiro ipn.php, que vai gerir a resposta da API do PayPal.

Outra dúvida é se tenho de configurar na minha conta paypal a opção Instant Payment Notification Preferences. Se sim aqui tenho de dar o endereço completo do ficheiro ipn.php certo?

Em principio sim...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá olá

é assim eu na variável $paypal[return_method] tenho o valor 2 que corresponde ao método POST, por isso está correcto :D

Quanto à pasta logs esta já existe no entanto como eu ainda tou na faze de debug e num pc com Windows

em vez de ter as permissões 777 dei acessos totais ao utilizador IUSR, por isso penso que seja identico (espero...).

Pronto com isto tudo pensei que iriam aparecer os tais ficheiros ipn_error.txt e ipn_success.txt, no entanto não

apareceu lá nada :thumbsup:.

Estou a começar a entrar em pânico :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Talvez fosse preferivel testares isso online. A toolkit traz lá um link de API mesmo para testes.

Em vez de utilizares:

$paypal[url]="https://www.paypal.com/cgi-bin/webscr";

utilizas

$paypal[url]="https://www.sandbox.paypal.com/cgi-bin/webscr";

De outra forma não estou a ver o que possa ser....  :thumbsup:

Tenta dar uma olhada aqui -> http://paypaltech.com/Patrick/content/phptoolkit/ pode ser que te ajude.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na secção FAQS da página que indiquei existe lá:

Q: I do not see any data on screen when I'm returned to the "success.php" page.

A: Make sure you've set $paypal[return_method] equal to "2" in "config.inc.php". It's set to "1" by default. If you find that you are not having to click a "Continue" button after the PayPal payment is made in order to go to "success.php" and you are being automatically redirected to this page, you more than likely have Auto Return enabled in your PayPal account. You will need to disable this feature as the toolkit is not built to support Auto Return as of this writing.

Parece-me ser o teu problema....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá bom dia,

já consegui obter resposta da API do PayPal :cheesygrin: mas para isso tive de efectuar os testes num sistema com Linux, pois as permissões que estava a dar ao utilizador IUSR do Windows não surtiram qualquer efeito. :thumbsup: .

No entanto estava à espera que dois ficheiros de log fossem criados dentro da pasta logs, o que realmente não acontece. Pelo que estive a analisar no código do ToolKit do PayPal não está lá codificação nenhuma para que sejam criados estes ficheiros de log.

Das duas uma ou estes seriam enviados pelo PayPal e seria feito o upload para o meu site (o que não me parece...) ou então fica a nosso cargo criar estes ficheiros.

Se alguém estiver dentro do assunto e que me possa esclarecer agradecia.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quem deveria tratar dos ficheiros de log seria a API do PayPal. Não é upload dos ficheiros, mas sim criá-los.

No entanto podes sempre criar tu 2 ficheiros em branco com os nomes:

ipn_error.txt

ipn_success.txt

Confirmas as permissões das pastas e ficheiros, e tentas novamente.

PS: Afinal sempre era de não estar online.... :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Online ele estava :thumbsup:  pois a minha máquina estava a fazer de servidor Web :P as permissões atribuídas ao directório no Windows é que deviam ser insuficientes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora