Paypal의 IPN 대 PDT


99

PayPal의 IPN (Instant Payment Notification)과 PDT (Payment Data Transfer) 중에서 선택하는 데 문제가 있습니다.

기본적으로 사용자는 내 사이트에서 일회성 제품을 구입하고 PayPal에서 결제 한 다음 내 사이트로 돌아갑니다. IPN이 어떻게 작동하는지 이해하지만 이제 데이터가 반환되면 PDT를 사용하여 성공적인 구매 후 발생하는 다양한 작업을 더 쉽게 트리거 할 수 있음을 알 수 있습니다 (별도의 리스너가 필요하지 않음). .

그러나 PayPal의 PDT 문서에는 "PDT는 신용 카드 나 Express Checkout 거래에 사용할 수 없습니다." ...하지만 주제에 대해 더 이상 찾을 수 없습니다.

  1. 신용 카드는 실제로 PDT와 함께 사용할 수 없습니까? 한 문장 이상을 원합니다.

  2. 이는 사용자가 결제하려면 PayPal 계정을 가지고 / 생성해야 함을 의미합니까?

  3. 사용자가 PayPal 계정 및 / 또는 신용 카드로 직접 결제 할 수 있도록하려면 IPN을 구현해야한다는 의미입니까?

이 과정을 겪은 사람이 친절하게 빛을 비출 수 있습니까?


나는 이것을 더 잘 설명하는 웹 페이지를 찾았다. [PayPal PDT 및 IPN : 작동
원리

질문 2와 관련하여 고객이 PayPal 계정을 생성 / 소유하도록 강요하지 않도록 설정할 수 있는 PayPal Account Optional설정 My selling preferences > Website preferences이 있습니다. 신용 / 직불 카드로 지불하십시오.
kaiyaq

답변:


112

PDT 및 IPN 용 API는 유사합니다. 주요 차이점은 알림을받을 때입니다. 따라서 두 가지를 모두 구현하는 것이 좋습니다.

  • PDT를 사용하면 즉시 알림을 받고 필요한 추가 처리를 수행하고 사용자에게 확인 페이지를 표시 할 수 있습니다.
  • IPN을 사용하면 PDT를 보내기 전에 사용자의 컴퓨터가 폭발하더라도 지불이 수신되었다는 알림을받을 수 있습니다.

둘 다 구현하고 두 세계를 최대한 활용하십시오. 그러나 한 번만 수행하는 경우 IPN이 신뢰할 수 있습니다.

한 가지주의 사항 : 둘 다 구현하면 결제가 두 번 처리 될 가능성이 있습니다. 그런 일이 일어나지 않도록주의하십시오. 내가 작성한 애플리케이션은 PDT와 IPN을 거의 동일하게 처리하고 (백엔드 부분은 동일 함) 해당 코드는 데이터베이스에서 웹 사용자 별 잠금을 획득하므로 동일한 사용자가 동일한 지불을 여러 번 제출하려고 시도하면 한 번만 처리 할 수 ​​있습니다. 처리되면 해당 프로세스의 결과는 후속 처리 시도에 다시 사용됩니다.

편집 한 가지 더 : IPN은 PDT보다 더 많은 정보를 전달합니다. 지불 거절 알림 등과 같이 IPN에서받을 수있는 많은 메시지가 있으므로 실제로 구현해야합니다.


PayPal의 PDT 시스템은 PayPal Payments Standard를 사용하는 판매자 사이트에 주문 확인을 보내고이 정보를 인증 할 수 있도록합니다. 그런 다음 이러한 사이트는 "주문 확인"페이지에이 데이터를 로컬로 표시 할 수 있습니다.

PDT는 언제 사용합니까?

IPN은 위에서 설명한 것과 동일한 기능을 제공합니다. 그렇다면 언제 IPN 대신 PDT를 선택해야합니까?

PDT를 사용하면 고객이 결제를 완료하면 즉시 사이트에 알립니다. 그러나 IPN을 사용하면 고객이 결제를 완료 한 시간과 사이트에서이 이벤트에 대한 알림을받는 시간 사이에 물질적 지연이 있습니다.

따라서 사이트에 즉각적인 결제 알림이 필요한 기능이 포함 된 경우 PDT를 사용하십시오.

예를 들어, 디지털 뮤직 스토어를 생각해보십시오. PDT를 사용하면 PDT가 주문 확인을 즉시 보내므로 고객이 구매를 즉시 다운로드 할 수 있습니다. IPN을 사용하면 이러한 즉각적인 주문 이행이 불가능합니다.

IPN의 장점

PDT에는 한 가지 큰 약점이 있습니다. 주문 확인을 한 번만 보냅니다. 결과적으로 PDT가 확인을 보낼 때 사이트가 실행 중이어야합니다. 그렇지 않으면 메시지를 수신하지 않습니다.

반대로 IPN을 사용하면 사이트에서 수신을 확인할 때까지 IPN이 확인을 다시 보내므로 주문 확인 배달이 사실상 보장됩니다. 이러한 이유로 PayPal은 PDT 대신 IPN을 구현할 것을 권장합니다.

IPN의 또 다른 장점은 PDT가 주문 확인 만 보내는 동안 많은 유형의 알림을 보내는 것입니다. 따라서 IPN을 사용하면 사이트에서 예를 들어 지불 거절 알림과 주문 확인을받을 수 있습니다. 참고 : 사이트에 즉시 결제 알림을 보내야하는 경우 IPN과 PDT를 모두 구현할 수 있습니다. 그러나 그렇게 할 경우 사이트는 각 판매에 대해 두 개의 주문 확인을 받게됩니다. 따라서 주어진 확인 메시지의 복사본 하나에 대해 조치 (예 : 제품 배송)를 수행하도록주의해야합니다.

여기에 문서화


2
감사합니다. 따라서 기본적으로 데이터베이스 업데이트를 IPN에 연결하고 (항상 처리되므로) 사용자 확인을 PDT에만 연결합니다 (예 : 보류중인 페이지에서 IPN에 의해 ​​결제가 처리되었는지 확인) ....?
Tom

1
IPN과 PDT를 모두 구현하기 위해 +1, 우리는 이것을 수행했으며 잘 작동합니다.
Mark Redman

3
@Tom : 내 구현은 다음과 같습니다. PDT 또는 IPN이 들어 오면 매개 변수를 읽고 결제 처리를 시도합니다. 프로세서 A)는 다른 동시 처리 (해당 사용자에 대해)를 차단하고 B) 이미 처리되었는지 확인합니다. 처리가 완료되면 IPN을 사용하여 완료하고 PDT를 사용하여 사용자에게 확인 페이지 또는 영수증 페이지 등을 표시합니다. PDT 측과 IPN 측 모두 상대방이 다운되면 제대로 작동 할 수 있지만 둘 다 사용하면 좋은 신뢰성을 얻을 수 있습니다. 상당히 높은 비율의 사용자는 IPN이 도착하기 전에 클릭하지 않습니다.
Mr. Shiny and New 安 宇

8
이 답변은 OP의 # 1, # 2 또는 # 3 질문에 대답하지 않지만 수락 되었습니까?
Clint Pachl 2013 년

2
IPN 답변 4 일 걸립니다 ... 그것은 짜증
Toskan

1

Re 1. PDT는 웹 사이트 결제를위한 자동 반환 기능과 함께 사용하기위한 것입니다. 자동 반품은 판매자에게 돈을 지불 한 후 PDT 사이트로 리디렉션됩니다. 안타깝게도 신용 카드 결제를 활성화하는 데 사용되는 PayPal 계정 옵션과 함께 해당 기능을 사용할 수 없습니다. PayPal의 참고 사항은 다음과 같습니다. ' 자동 반환을 설정 하고 새 사용자를 위해 PayPal 계정 옵션을 설정하도록 선택한 경우 새 사용자는 자동으로 웹 사이트로 돌아 가지 않지만 반환 옵션이 제공됩니다.' . 사용자는 사이트로 돌아가거나 (PDT 단계) PayPal 사이트에 머무를 수 있습니다. 신용 카드 결제시 요약하자면 사용자가 '상점 링크로 돌아 가기'를 클릭하지 않을 경우 PDT 단계를 건너 뛸 수 있습니다.

Re 2. 어떤 지불 옵션을 허용 할 것인지는 귀하에게 달려 있습니다. PayPal 계정없이 지불을 허용하려면 Account Optional을 활성화 할 수 있습니다 . PayPal 계정이있는 사용자 만 허용하려면 해당 기능을 비활성화하십시오. 더 많은 옵션이있을 수 있습니다.

다시 3. 귀하의 경우 성공적인 구매 후 조치를 트리거해야합니다. 권장되는 방법은 IPN을 구현하는 것입니다. PDT는 모든 경우에 작동하지 않으며 메시지 전달을 보장하지도 않습니다. 여기 PDT 대 IPN 주제를 다루는 문서에 대한 링크가 있습니다.


0

이것은 오래된 질문이지만 내 간단한 대답은-왜 PDT와 IPN을 모두 사용하지 않습니까? 카드 거래에는 잘 작동합니다.

PDT는 귀하의 웹 사이트에 즉각적인 거래 상태를 제공 할 수 있으며, 여기서 결제 성공 또는 실패 상태를 신속하게 확인하고 사용자에게 적절한 메시지를 제공 할 수 있습니다.

한편 백그라운드에서 IPN의 전체 확인을 기다릴 수 있습니다. 수신되면이를 사용하여 DB를 추가로 업데이트하고 주문을 처리 할 수 ​​있습니다.

매우 명확하고 도움이되는이 단계별 가이드를 따를 수 있으며 2018 년에도 여전히 유효합니다.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.