Search

페이팔 결제실패(failed) → 결제완료(paid) 변경되는 경우 관련 안내

Tags
페이팔
속성
페이팔의 경우 구매자 / 판매자 보호정책에 의해 결제가 승인된 시점에는 Pending(보류) 상태로
처리한 다음, 페이팔 자체적으로 내부 검토 후 최종 결제 완료되었다고 변경하는 케이스가 있습니다.
최초 승인 시점에는 해당 결제에 대해 review가 필요하다고 Paypal이 판단하여 결제실패로
아임포트에 응답을 보내고 추후에 완료 처리하는 프로세스로 보여집니다.
(보통 eCheck 결제수단 혹은 구매자의 Paypal 계정이 명확하지 않을 때 보통 Pending 상태로 만들게 됩니다.)
해당 이슈에 해결을 위해 페이팔 IPN 인터페이스 구현이 완료되어, 아임포트 Webhook을 이용하시면 통해 다음과 같은 상황에 대응이 가능합니다.
결제 시점에는 Paypal이 Pending상태의 거래건으로 응답 ( 아임포트에서는 이 거래건을 status : failed로 기록합니다. )
(통상적으로 2~3일 후) 해당 결제건에 대한 이슈가 해결되어 IPN으로 결제승인되었음을 Paypal -> 아임포트로 통지
아임포트에서 거래건 status : paid 로 변경 후 거래건에 설정된 Webhook발송
아임포트 웹훅( Webhook )관련 설정방법은 https://docs.iamport.kr/tech/webhook 참고 바랍니다.
아임포트는 거래상태값을 정의할 때 한국 결제수단 위주로 진행되다보니 Paypal 이
추후 추가되었을 때 해당되는 상태값이 없는 경우가 있어 pending 과 같은 상태를 failed 로 처리하고 있었습니다.
이 부분에 대해서 Paypal Original 상태값을 별도로 조회하실 수 있도록 추가 메타정보를 제공드리고 있습니다.
대상 : 아임포트 거래상태 (status) 가 failed 인 거래건 중
방법 : https://api.iamport.kr/payments/{imp_uid} API 를 통한 조회 시 query string 으로 extension=true 옵션을 추가
응답 : 응답속성 내 extension 객체가 추가됨
extension.PaymentStatus : Paypal 로부터 응답된 주문상태를 의미하는 값으로, Pending 이라는 값인지 체크. PaymentStatus 는 None, Canceled-Reversal, Completed, Denied, Expired, Failed, In-Progress, Partially-Refunded, Pending, Refunded, Reversed, Processed, Voided, Completed-Funds-Held 중 하나입니다.
extension.PendingReason : Pending 거래건인 경우 그 사유에 대해 나타내는 코드입니다. none, address, authorization, echeck, intl, multi-currency, order, paymentreview, regulatoryreview, unilateral, verify, other 중 하나입니다.
extension.ReasonCode : Pending 거래와는 관련이 없습니다만, 정산금 지급이 홀드된 경우 그 사유를 의미하는 코드입니다. none, chargeback, guarantee, buyer-complaint, refund, other 중 하나입니다.
아임포트에서 거래데이터를 조회할 수 있는 API 중
/payments/{imp_uid} 에만 현재 extension=true query string 옵션이 동작하므로 참고바랍니다.