Intergração PHP PayPal com feedback instantâneo
Pergunta
É possível obter uma resposta instantânea de uma transação do PayPal e eles precisam deixar seu site para pagar pelo PayPal?
Estou trabalhando em um site em que o usuário precisa fazer um pagamento único, então estou procurando scripts de doação, mas a maioria deles é paga e o único que encontrei não dá uma resposta instantânea http://www.ibdhost.com/donation/. Se você tiver algum script relacionado que você usou antes que seja muito apreciado se pudesse postá -los.
Obrigado
Solução
Meu aplicativo, www.perqworks.com, usa o PayPal Website Payment Pro. Na API, há uma noção de notificação de pagamento instantâneo (IPN). https://cms.paypal.com/us/cgi-bin/?&cmd=_render-content&content_id=developer/library_code_ipn_code_samples
Como funciona é que uma pessoa paga com um cartão de crédito. O PayPal envia uma resposta HTTPS para um 'ouvinte' no meu servidor. Com o ouvinte, você pode decidir continuar o processo ou lançar um erro com base nos códigos de resposta do PayPal.
A documentação e a caixa de areia ajudaram, mas a API do PayPal pode ser um pouco complicada para envolver sua cabeça.
Outras dicas
Para ter certeza de que você está pagando com segurança, é necessário que o usuário seja transferido para o site do PayPal, caso contrário, os ataques do tipo phishing seriam muito mais fáceis!
Não tenho certeza do que você quer dizer com resposta instantânea, tive a impressão de que as contas do PayPal Merchant podem informar o comerciante em tempo real para que as chaves de registro e outras sejam geradas e enviadas?
Em primeiro lugar, leve tudo isso com um grão de sal: não usei ativamente o PayPal há pelo menos um ano ...
Você pode (ou pode) usar o PayPal sem que o usuário saia do seu site: ele era chamado de algo como "Merchant Services Pro" e tinha uma taxa mensal associada a ele.
Não é um momento ruim para perguntar, na verdade, com o PayPal anunciando sua API aberta ontem (veja http://www.pcworld.com/businesscenter/article/181382/paypal_introduces_open_api_to_put_payments_into_apps.html ).
De qualquer forma, no que diz respeito à notificação 'instantânea': ela tecnicamente não acontece. Quando o usuário é empurrado para o PayPal e efetue seu pagamento, duas coisas acontecem:
- O usuário acabou sendo empurrado de volta para o seu site, com um ID de transação
- Quando a transação é limpa (embora isso normalmente ocorra 'instantaneamente', pode levar alguns dias), o PayPal atinge seu site, assíncrono, totalmente separado do usuário, para outro URL predeterminado com um ID diferente (tenho certeza de que é diferente)
De qualquer forma, entre os dois, você normalmente está bem. Normalmente, meu fluxo de trabalho de codificação seria algo como:
- Envie o usuário para o PayPal com ID exclusivo '
my_defined_transaction_id
' - Quando o usuário terminar o pagamento, faça com que eles voltem para
user_finished.php
(PayPal com me dê um id) - Configure minhas configurações do PayPal para que, na liberação da transação, o PayPal atinja
transaction_cleared.php
com um parâmetro get indicando 'my_defined_transaction_id
'(Novamente, o PayPal me dará um ID). - O PayPal geralmente atinge
transaction_cleared.php
bem antes do usuário chegar auser_finished.php
: Quando o PayPal atinge esse URL, eu marco 'my_defined_transaction_id
'Como "OK" (após a referência cruzada ao PayPal para garantir a validade). - Quando o usuário acaba de volta em
user_finished.php
, Posso cruzar a referência do ID da transação de volta ao PayPal, garantir a validade e depois marcar ''my_defined_transaction_id
'como "OK".
Fazer tudo isso em duas etapas permite que o usuário feche o navegador sem voltar ao meu site e ainda ter a transação marcada como "OK".
Desculpe ... ainda não iniciei meu café, mas espero que isso faça algum sentido.