가이드/연동하기

Version 1

결제 연동하기

결제위젯 SDK v1은 더 이상 업데이트되지 않습니다. 토스페이먼츠 SDK v2 연동을 추천합니다.

모든 결제수단을 한 번에 연동할 수 있는 샘플 프로젝트입니다. 프로젝트 언어를 선택하고 빠르게 시작하세요. 연동이 끝나면 노코드로 결제수단 설정과 디자인을 변경할 수 있어요.

아래 문서용 테스트 키 또는 전자결제 신청 이후에 확인 가능한 결제 연동 키를 사용하세요.

토스페이먼츠 결제위젯 흐름


1

결제위젯 렌더하기

Client
SDK 설치

스크립트 태그 또는 npm 패키지로 결제위젯 SDK를 설치하세요.

결제위젯 초기화

클라이언트 키, customerKey로 결제위젯 SDK를 초기화하세요.

결제 영역 정의

결제 UI, 이용약관 UI를 보여주고 싶은 영역을 각각 div 태그로 정의하세요. 결제 버튼도 만들어주세요.

결제 UI 렌더링

DOM이 생성된 이후에 renderPaymentMethods() 메서드로 결제 UI를 렌더링하세요. 결제 영역의 div CSS 선택자(Selector)와 결제 금액을 파라미터로 넣으세요. 여러 결제 UI를 만들었다면, variantKey를 결제위젯 어드민에서 확인하고 파라미터로 넘기세요.

이용약관 UI 렌더링

renderAgreement() 메서드로 이용약관 UI를 렌더링하세요. 이용약관 영역의 div CSS 선택자(Selector)를 파라미터로 넣으세요.

(선택) 기타 결제 UI 추가

할인 쿠폰, 가격 정보 등 구매자에게 보여주고 싶은 기타 결제 UI를 직접 만들어서 추가해주세요.

(선택) 결제 금액 업데이트

결제 금액을 업데이트하려면 updateAmount()를 호출하세요. 파라미터에 새로운 결제 금액을 넣어주세요. 예를 들어, 5만원 주문에 5천원이 할인됐다면 4만5천원을 넣어주세요.

* 결제 금액이 UI에서 바뀌는 시점에 해당 메서드를 호출하세요.


결제 버튼 이벤트 설정

결제를 요청하기 전에 orderIdamount를 서버에 임시로 저장하세요. 결제 요청과 승인 사이에 데이터 무결성을 확인할 때 필요해요. 더 자세한 내용은 결제 흐름 가이드에서 확인하세요.

결제 버튼에 결제 요청 메서드 requestPayment()를 이벤트로 걸어주세요. 더 많은 파라미터는 SDK 문서에서 확인하세요.

결제 UI가 렌더링된 이후에 결제 요청 메서드를 호출하세요. ready 이벤트로 결제 UI 렌더링 완료 이벤트를 받을 수 있습니다.

결제창 띄우기

결제 UI에서 자주 사용하는 결제수단을 선택하고 '결제하기' 버튼을 누르세요. 선택한 결제수단의 결제창에서 정보를 입력하세요. 테스트 환경에서는 결제가 가상으로만 이뤄지기 때문에 결제수단에서 금액이 차감되지 않아요. 결제를 마치면 결제 인증이 완료된 거예요.

클라이언트는 결제 인증이 성공하면 successUrl로 이동하고, 실패하면 failUrl로 이동해요.


successUrl로 이동한 경우

결제 요청이 성공하면 successUrl로 이동합니다. URL에 아래 네 가지 쿼리 파라미터가 추가돼요.

쿼리 파라미터의 amount 값과 renderPaymentMethods()amount 파라미터의 값이 같은지 반드시 확인하세요. 클라이언트에서 결제 금액을 조작하는 행위를 방지할 수 있습니다. 만약 값이 다르다면 결제를 취소하고 구매자에게 알려주세요.

서버로 결제정보 전달

서버로 paymentKey, amount, orderId 값을 전달하세요. 결제 승인에 필요한 데이터입니다. 결제 승인 결과에 따라 클라이언트에서 필요한 결제 성공 및 실패 로직을 추가하세요.

failUrl로 이동한 경우

결제 요청이 실패하면 failUrl로 이동합니다. 쿼리 파라미터로 돌아오는 에러 코드, 메시지를 확인하고 필요한 로직을 구현해주세요.


시크릿 키로 Basic 인증 헤더 설정

개발자센터에서 결제 연동 키 > 시크릿 키를 불러오세요. 결제 연동 키는 토스페이먼츠 전자결제 신청 이후에만 확인할 수 있어요. 신청 전에는 아래 테스트 키로 연동해보세요.

시크릿 키와 :로 인코딩해서 Basic 인증 헤더를 아래와 같이 만들어주세요. :을 빠트리지 않도록 주의하세요. 비밀번호가 없다는 것을 알리기 위해 시크릿 키 뒤에 콜론을 추가합니다.

* 시크릿 키는 클라이언트, GitHub 등 외부에 노출되면 안 됩니다.

결제 승인 API 호출

결제를 승인하면 결제수단에서 금액이 차감돼요. 토스페이먼츠 결제 승인 API를 호출해서 결제를 완료하세요.

Authorization 헤더에 인코딩된 시크릿 키값을 추가하세요. orderId, amount, paymentKey를 요청 데이터로 사용하세요.

성공 응답

결제 승인에 성공하면 HTTP 200 OKPayment 객체를 받습니다.

데이터 저장

paymentKey, orderId는 서버에 필수로 저장하세요. 결제 조회, 결제 취소에 사용되는 값입니다. 나머지 값들은 필요에 따라 저장하세요.

결제수단

응답 객체에 선택한 결제수단 정보를 확인하세요. 결제 UI에서 신용・체크를 선택했다면, card 필드에 카드 정보 객체가 돌아와요. method 필드도 카드로 나와요.

API 버전

응답 객체는 API 버전에 따라 조금씩 달라집니다. 개발자센터에 설정된 API 버전을 확인하고, 원하는 필드가 있는 버전으로 변경해보세요. API 버전 업데이트 사항은 릴리즈 노트에서 확인할 수 있습니다.

실패 응답

결제 승인에 실패하면 HTTP 4XX 또는 5XX 코드와 에러 객체를 받습니다. 결제 승인의 전체 오류 목록은 에러 코드를 참고하세요.

다음 단계

결제 연동을 완성하셨어요. 이제 개발자센터에서 테스트 결제내역을 확인하거나 토스페이먼츠 코어 API로 결제를 조회 또는 취소해보세요.

실시간으로 결제 알림을 받고 싶다면 웹훅을 연동하세요.