본문 바로가기

Development/Management

PayPal 결제 연동 PDT / IPN 정의와 비교.

 

* PDT 방식.(Payment Data Transfer)
sync.

 

결제 완료 후 즉시 실행된다.
 

 

1. 쇼핑몰 서버에 접속한 고객이 paypal 을 통해서 결제를 한다.
- 결제 버튼을 클릭하면 paypal 사이트로 이동한다.
 
2. 결제가 완료되면 paypal 에서 쇼핑몰 서버로 transaction id 를 보내준다.
- transaction id, amount 등등 몇가지 정보를 보내주지만 transaction id 만 필요하다.
 
3. 서버에서 받은 transaction id 와 판매자의 auth token 을 다시 paypal 로 보낸다.
- paypal 보안설정때문에 서버쪽 jdk 는 최신버전이어야 한다. 
 
4. paypal 에서는 받은 데이터로 결제 상세정보를 다시 서버로 보내준다. 
- 서버쪽 jdk 는 최신버전이어야 한다. 
 
5. 고객에게 결제 결과를 알려준다.
- mail, sms.
 
 
2번 과정의 paypal 에서 tansaction id 를 받았다는 것은 결제처리가 완료되었다는 의미이며 이 단계에서 프로세스를 종료해도 사실 아무런 문제가 없다. 하지만 transaction id 를 가지고 해당 결제의 상세정보를 가져오기 위해서 3, 4번 과정을 거치는데 이때는 paypal 쪽으로 post 정보를 요청하는 과정이기때문에 paypal 의 보안정책을 따라야 하며 java 의 경우 jdk 최신버전을 사용해야 한다.
TLS 버전이 맞지 않을 경우 "javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure error" 오류가 발생한다.
 
 
 
 
 
 
 
* IPN 방식.(Instant Payment Notification)
async.
일반적으로 결제 완료 후 5분 이내에 실행된다.
 
paypal 서버와 쇼핑몰 서버의 "서버끼리의 통신". client 에서는 확인할 수 없다.
그래서 일반적으로 paypal 서버에서 쇼핑몰 서버를 호출하면 쇼핑몰 서버에서는 처리 후, database 에 저장하거나 repository 에 데이터를 담은 파일로 떨군다.

 

1. 쇼핑몰 서버에 접속한 고객이 paypal 사이트를 통해서 결제를 한다.
 
2. paypal 서버에서 쇼핑몰 서버로 ipn 정보를 보낸다.
 
3. 쇼핑몰 서버에서 paypal 서버로 요청 정보를 보낸다.
 
4. paypal 서버에서 쇼핑몰 서버로 데이터를 보낸다.
 
5. 쇼핑몰 서버에서 데이터를 처리한다.
- database 에 저장하거나 파일로 떨군다.