가이드
목차

Version 2

새로 나온

PayPal 해외 간편결제를 연동하는 방법입니다. PayPal은 전 세계 200여 개 국가에서 4억 명 이상이 사용하는 글로벌 결제수단이에요.

샘플 프로젝트 바로가기

API 실행해보기

결제창-결제흐름

더욱 매끄러운 결제 경험을 편리하게 연동하고 싶다면 결제위젯을 추천드려요.

API 키 준비하기

개발자센터의 API 키 메뉴에서 API 개별 연동 키를 확인하세요.

토스페이먼츠와 전자결제 계약 전이어도 회원가입하면 나만의 테스트 상점 키를 확인하고 테스트 결제내역, 웹훅 등 기능을 사용할 수 있어요. 로그인한 상태라면 코드의 키값이 테스트 상점 키입니다. 로그인하지 않아도 문서 테스트 키로 테스트 연동할 수 있어요.

토스페이먼츠와 전자결제 계약을 완료했다면 개발자센터의 API 키 메뉴에서 해외 간편결제로 계약된 상점아이디(MID)를 선택한 다음에 클라이언트 키와 시크릿 키를 확인하세요. 테스트 키와 라이브 키의 차이점도 확인하고 연동을 시작하세요.

API 개별 연동 키


1. 결제창 띄우기

먼저 주문서 페이지에 결제창을 연동할게요. 아래 코드는 주문서 페이지의 예시에요.

스크립트 태그 또는 패키지 매니저로 토스페이먼츠 SDK를 설치하고, 클라이언트 키로 SDK를 초기화하세요. 다음, payment() 메서드로 결제창 인스턴스를 생성하세요. 아래 코드에서는 payment라는 인스턴스를 생성했어요.

그럼 이제 결제창을 띄울 준비가 됐어요. payment.requestPayment() 메서드를 호출하면 결제 요청이 시작되고, 결제창이 열려요. 메서드의 파라미터로 결제수단(FOREIGN_EASY_PAY), 주문번호, 결제금액, successUrl, failUrl 등 필요한 정보를 설정하세요. 해외 간편결제는 현재 USD만 지원하고 있어요.

그리고 주문서의 '결제하기' 버튼에 결제 요청 메서드를 이벤트로 등록해주세요.

위 코드를 실행한 다음에 '결제하기' 버튼을 누르면 PayPal 로그인 페이지로 이동합니다. PayPal 결제창은 구매자가 위치한 현지 언어로 설정됩니다. 실제로 결제가 되지 않는 아래 토스페이먼츠 테스트 계정으로 로그인해서 결제 요청을 완료하세요. 토스페이먼츠 테스트 계정에 개인 카드 또는 계좌는 추가하지 마세요.

토스페이먼츠 해외간편결제 PayPal

2. 리다이렉트 URL로 이동하기

결제창에서 구매자의 결제수단을 하는데요. 인증 결과는 리다이렉트 URL로 확인할 수 있어요. 결제 인증이 성공했다면 성공 리다이렉트 URL(successUrl)의 쿼리 파라미터로 결제 정보를 확인하고 검증해주세요. 인증이 실패했다면 이동한 실패 리다이렉트 URL(failUrl)의 쿼리 파라미터로 에러를 확인해주세요.

결제 인증이 성공했어요

결제 정보가 모두 인증됐다면, successUrl로 이동해요. 해당 URL에 아래 세 가지 쿼리 파라미터가 추가돼요.

결제 인증이 실패했어요

만약에 결제 정보가 틀려서 결제 인증이 실패했다면, failUrl로 이동해요. 해당 URL에는 아래 세 가지 쿼리 파라미터가 추가돼요. 에러 코드와 메시지를 확인해서 구매자에게 적절한 안내 메시지를 보여주세요.

3. 결제 승인하기

마지막 단계로 결제 승인 API를 호출하세요. API 키 준비하기 단계에서 확인한 API 개별 연동 키 > 시크릿 키를 사용해요.

시크릿 키와 :을 base64로 인코딩해서 헤더를 아래와 같이 만들어주세요. :을 빠트리지 않도록 주의하세요. 비밀번호가 없다는 것을 알리기 위해 시크릿 키 뒤에 콜론을 추가합니다. 시크릿 키는 클라이언트, GitHub 등 외부에 노출되면 안 됩니다.

결제 승인 API의 헤더에 인코딩한 시크릿 키 인증 헤더를 추가하세요. 요청 본문 파라미터에는 앞 단계에서 리다이렉트 URL로 받은 paymentKey, orderId, amount를 넣어주세요. 아래 예제 코드에는 내 테스트 결제의 paymentKey 값을 넣어 실행해주세요.

4. 응답 확인하기

결제 승인이 성공했어요

결제 승인 API의 결과로 HTTP 200 OK와 함께 Payment 객체가 돌아오면 결제가 정상적으로 완료됐어요. Payment 객체easyPay필드가 페이팔로 응답돼요.

응답으로 받은 Payment 객체가 아래 예시와 다르다면 API 버전을 확인하세요. 개발자센터의 API 키 메뉴에서 설정된 API 버전을 확인하고 변경할 수 있어요. API 버전 업데이트 사항은 릴리즈 노트에서 확인할 수 있습니다.

내 테스트 API 키를 사용했다면 개발자센터 > 테스트 결제내역에서 결제 정보를 확인할 수 있지만, 외화 결제액은 정확히 표시되지 않습니다.

결제 승인이 실패했어요

결제 승인에 실패하면 HTTP 4XX 또는 5XX 코드와 에러 객체를 받습니다. 결제 승인의 전체 오류 목록은 에러 코드를 참고하세요. 테스트 환경에서 결제 승인 실패를 재현해보고 싶다면 토스페이먼츠 API 테스트 헤더를 사용해보세요.

5. 해외 간편결제 취소하기

라이브 환경에서 PayPal 결제를 취소하면 거래 수수료가 반환되지 않습니다. 해외 간편결제를 전체 취소하는 방법은 다른 결제와 동일합니다. 하지만 부분 취소하려면 아래 주의사항이 있어요.

부분 취소하는 방법

해외 간편결제로 이루어진 결제를 부분 취소할 때는 요청 본문 파라미터에 currency 값을 필수로 추가해야 합니다.

응답은 결제 취소 API와 동일하게 Payment 객체의 cancels 필드에 취소한 기록이 쌓입니다.


더 알아보기

결제 취소하기
  • 더 궁금한 내용이 있나요?
  • 코드 샘플을 참고하세요
  • 기술지원이 필요한가요?
    실시간 문의|이메일 보내기