IPN vs PDT no Paypal

99

Estou tendo problemas para escolher entre Notificação instantânea de pagamento (IPN) do PayPal e Transferência de dados de pagamento (PDT).

Basicamente, os usuários compram um produto único em meu site, pagam no PayPal e retornam ao meu site. Eu entendo como funciona o IPN, mas agora estou vendo que posso acionar as várias ações que ocorrem após uma compra bem-sucedida com mais facilidade com o PDT, conforme os dados são retornados ali e então (em vez de precisar de um ouvinte separado) .

No entanto, a documentação PDT do PayPal contém esta linha enigmática: "PDT não se destina a ser usado com cartão de crédito ou transações Express Checkout." ... mas não consigo encontrar mais nada sobre o assunto.

  1. Os cartões de crédito REALMENTE não devem ser usados ​​com o PDT? Eu gostaria de mais do que uma frase.

  2. Isso significa que um usuário deve ter / criar uma conta do PayPal para pagar?

  3. Isso significa que se eu quiser permitir que os usuários paguem com suas contas do PayPal E / OU com cartões de crédito diretamente, devo implementar o IPN?

Alguém que passou por isso gentilmente poderia lançar alguma luz?

Tom
fonte
Encontrei uma página da web que realmente explica isso melhor. [PayPal PDT e IPN: Como funciona?] [1] [1]: webmasters.stackexchange.com/questions/21634/…
Ananize Scott
Em relação à pergunta 2, há uma PayPal Account Optionalconfiguração em My selling preferences > Website preferencesque você pode ativar para não forçar seus clientes a criar / ter uma conta PayPal, ou seja, pagar com cartão de crédito / débito.
kaiyaq

Respostas:

112

As APIs para PDT e IPN são semelhantes. A principal diferença é quando você recebe a notificação. Por esse motivo, eu recomendaria a implementação de ambos.

  • Com o PDT, você recebe a notificação instantaneamente e pode fazer qualquer processamento adicional necessário e mostrar ao usuário uma página de confirmação.
  • Com o IPN, você tem a garantia de ser notificado de que o pagamento foi recebido, mesmo se o computador do usuário explodir, antes que ele possa enviar o PDT.

Implemente os dois e obtenha o melhor dos dois mundos. Mas se você estiver fazendo apenas um, o IPN é o confiável.

Um problema: se você implementar ambos, há uma chance de seus pagamentos serem processados ​​duas vezes. Tome cuidado para garantir que isso não aconteça. O aplicativo que escrevi lida com PDT e IPN quase de forma idêntica (a parte de back-end é a mesma) e esse código adquire um bloqueio por usuário da web no banco de dados, de modo que se o mesmo usuário tentar enviar exatamente o mesmo pagamento várias vezes só pode ser processado uma vez. Uma vez processado, o resultado desse processo é reutilizado para quaisquer tentativas subsequentes de processá-lo.

Editar Mais uma coisa: IPN carrega mais informações do que PDT. Existem muitas mensagens diferentes que você pode receber do IPN, como notificação de estorno, etc. e, portanto, você realmente deve implementá-lo.


O sistema PDT do PayPal envia confirmações de pedido aos sites de comerciantes que usam o PayPal Payments Standard e permite que eles autentiquem essas informações. Esses sites podem exibir esses dados localmente em uma página de "confirmação de pedido".

Quando usar o PDT?

O IPN oferece os mesmos recursos descritos acima. Então, quando você deve escolher PDT em vez de IPN?

Com o PDT, seu site é notificado imediatamente quando um cliente conclui o pagamento. Com o IPN, no entanto, há um atraso significativo entre o momento em que um cliente conclui o pagamento e o momento em que seu site recebe a notificação desse evento.

Portanto, use o PDT se o seu site incluir um recurso que exija notificação de pagamento imediata.

Por exemplo, considere uma loja de música digital. Com o PDT, esta loja pode permitir que os clientes baixem suas compras imediatamente, já que o PDT envia confirmações de pedidos imediatamente. Com o IPN, o atendimento imediato do pedido não é possível.

Vantagens do IPN

O PDT tem uma grande fraqueza: ele envia confirmações de pedidos uma vez e apenas uma vez. Como resultado, quando o PDT envia uma confirmação, seu site deve estar funcionando; caso contrário, ele nunca receberá a mensagem.

Com o IPN, ao contrário, a entrega das confirmações de pedidos é virtualmente garantida, pois o IPN reenvia a confirmação até que seu site acuse o recebimento. Por esse motivo, o PayPal recomenda que você implemente IPN em vez de PDT.

Outra vantagem do IPN é que ele envia muitos tipos de notificações, enquanto o PDT envia apenas confirmações de pedidos. Assim, usando o IPN, seu site pode receber, por exemplo, notificações de estornos, bem como confirmações de pedidos. Nota: Se o seu site precisar ser notificado sobre pagamentos imediatamente, você pode implementar IPN e PDT. No entanto, se você fizer isso, seu site receberá duas confirmações de pedido para cada venda. Como resultado, você deve ter o cuidado de agir (por exemplo, enviar um produto) em apenas uma cópia de uma determinada mensagem de confirmação.

Documentação aqui

Sr. Brilhante e Novo 安 宇
fonte
2
Obrigado, entendo. Então, basicamente, vincule as atualizações do banco de dados ao IPN (pois ele sempre será processado) e vincule as confirmações do usuário apenas ao PDT (como verificar se o pagamento foi processado pelo IPN em uma página pendente, por exemplo) ....?
Tom
1
+1 para a implementação do IPN e do PDT, fizemos isso e funciona bem.
Mark Redman
3
@Tom: Minha implementação é: Quando um PDT ou um IPN entrar, leia os parâmetros e tente processar o pagamento. O processador A) bloqueia outro processamento simultâneo (para aquele usuário) e B) verifica se já foi processado. Depois que o processamento é feito, com o IPN você termina, com o PDT você mostra ao usuário uma página de confirmação ou página de recibo ou qualquer outra coisa. Tanto o lado do PDT quanto o lado do IPN podem funcionar corretamente se o outro lado estiver abaixado, mas você obtém boa confiabilidade tendo ambos. Uma porcentagem bastante alta de usuários não clica antes da chegada do IPN.
Sr. Brilhante e Novo 安 宇
8
Esta resposta não responde às perguntas # 1, # 2 ou # 3 do OP, mas é aceita?
Clint Pachl
2
IPN leva até 4 dias para responder ... é uma merda
Toskan
1

Re 1. PDT deve ser usado com o recurso Auto Return for Website Payments. O retorno automático redireciona para o site PDT após pagar o dinheiro ao vendedor. Infelizmente não é possível usar esse recurso junto com a conta PayPal opcional - usada para habilitar o pagamento com cartão de crédito. Aqui está uma observação do PayPal: 'Se você ativou o Retorno Automático e escolheu ativar a Conta do PayPal como Opcional para novos usuários, um novo usuário não será automaticamente direcionado de volta ao seu site, mas terá a opção de retornar.' . O usuário terá a opção de voltar ao seu site (etapa PDT) ou permanecer no site do PayPal. Para resumir, ao pagar com cartão de crédito, o usuário pode pular a etapa PDT se o usuário não clicar em 'retornar ao link da loja'.

Re 2. Você decide quais opções de pagamento deseja permitir. Se você deseja permitir o pagamento sem uma conta do PayPal, pode ativar a conta opcional . Se você quiser permitir apenas usuários com contas do PayPal, desative esse recurso. Pode haver mais opções.

Re 3. No seu caso, você precisa acionar a ação após a compra bem-sucedida. A forma recomendada seria implementar IPN. O PDT não funciona para todos os casos e não garante a entrega da mensagem. Aqui está o link para o documento que cobre esse tópico PDT vs IPN .

Jan Salawa
fonte
0

Esta é uma pergunta antiga, mas minha resposta simples seria - Por que não usar o PDT e o IPN? Eles funcionarão bem para transações com cartão.

O PDT pode fornecer o status imediato da transação ao seu site, onde você pode verificar rapidamente o sucesso ou falha do pagamento e fornecer ao usuário a mensagem apropriada.

Enquanto isso, você pode aguardar a verificação completa do IPN em segundo plano. Depois de recebido, você pode usar isso para atualizar ainda mais seu banco de dados e processar o pedido.

Você pode seguir este guia passo a passo que considero muito claro e útil - e ainda é válido em 2018.

https://www.codexworld.com/paypal-standard-payment-gateway-integration-php/

Sol
fonte