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를 모두 구현할 수 있습니다. 그러나 그렇게 할 경우 사이트는 각 판매에 대해 두 개의 주문 확인을 받게됩니다. 따라서 주어진 확인 메시지의 복사본 하나에 대해 조치 (예 : 제품 배송)를 수행하도록주의해야합니다.
여기에 문서화