Version 1
결제창 SDK v1은 더 이상 업데이트되지 않습니다. 토스페이먼츠 SDK v2 연동을 추천합니다.
결제창 JavaScript SDK는 브라우저 환경에서 결제창을 열 수 있는 메서드를 제공합니다. 토스페이먼츠 결제창과 직연동 결제창에서 모두 사용합니다. SDK 사용을 위한 준비와 메서드 사용법, 결제 실패 및 에러 처리 방법을 알아봅니다.
모바일 환경에서는 웹뷰로 연동을 하거나 모바일 SDK를 살펴보세요.
<script>
태그에 결제창 SDK 파일을 추가합니다. 스크립트가 로드되면 전역 객체(window)에 생기는 TossPayments()
초기화 함수에 파라미터를 설정해서 결제창 객체가 생성하세요.
- clientKey 필수 · string
클라이언트 키는 브라우저에서 결제창을 연동할 때 사용합니다. 토스페이먼츠에서 발급합니다. API 키 페이지에서 API 개별 연동 키 > 사용하고 싶은 결제서비스의 MID로 발급된 키값을 사용하세요.
결제창 JavaScript SDK에서 제공하는 메서드 목록입니다. 모든 메서드는 응답으로 Promise 객체를 반환합니다.
카드 결제창을 호출하는 메서드입니다. 첫 번째 파라미터에는 카드
/CARD
, 두 번째 파라미터에는 결제 정보가 들어갑니다.
- amount 필수 · number
결제되는 금액입니다.
- orderId 필수 · string
주문번호입니다. 주문을 구분하는 ID입니다. 충분히 무작위한 값을 생성해서 각 주문마다 고유한 값을 넣어주세요. 영문 대소문자, 숫자, 특수문자
-
,_
,=
로 이루어진 6자 이상 64자 이하의 문자열이어야 합니다. - orderName 필수 · string
구매상품입니다. 예를 들면
생수 외 1건
같은 형식입니다. 최대 길이는 100자입니다. - successUrl 필수 · string
결제가 성공하면 리다이렉트되는 URL입니다. 결제 승인 처리에 필요한 값들이 쿼리 파라미터로 함께 전달됩니다. 반드시 오리진을 포함해야 합니다. 예를 들면
https://www.example.com/success
와 같은 형태입니다. - failUrl 필수 · string
결제가 실패하면 리다이렉트되는 URL입니다. 에러 코드 및 에러 메시지가 쿼리 파라미터로 함께 전송됩니다. 반드시 오리진을 포함해야 합니다.
- windowTarget string
브라우저에서 결제창이 열리는 프레임입니다.
self
,iframe
중 하나입니다.-
self
는 현재 브라우저를 결제창으로 이동시켜요. 모바일 환경에서 기본 값입니다.-
iframe
은 iframe에서 결제창이 열려요. PC 환경에서 기본 값입니다. 모바일 환경에서는iframe
을 사용할 수 없습니다. - customerName string
구매자명입니다. 최대 길이는 100자입니다.
- customerEmail string
구매자의 이메일 주소입니다. 결제 상태가 바뀌면 이메일 주소로 결제내역이 전송됩니다. 최대 길이는 100자입니다.
- metadata object
결제 관련 정보를 추가할 수 있는 객체입니다. 최대 5개의 키-값(key-value) 쌍을 자유롭게 추가해주세요. 키는
[
,]
를 사용하지 않는 최대 40자의 문자열, 값은 최대 500자의 문자열입니다. - taxFreeAmount number
결제 금액 중 면세 금액입니다. 값을 넣지 않으면 기본값인
0
으로 설정됩니다.* 면세 상점 혹은 복합 과세 상점일 때만 설정한 금액이 적용되고, 일반 과세 상점에는 적용되지 않습니다. 더 자세한 내용은 세금 처리하기에서 살펴보세요.
- taxExemptionAmount number
과세를 제외한 결제 금액(컵 보증금 등)입니다. 값을 넣지 않으면 기본값인
0
으로 설정됩니다. 카드 결제 또는 간편결제로 계좌이체할 때 사용하세요.* 과세 제외 금액이 있는 카드 결제는 부분 취소가 안 됩니다.
- flowMode string
DEFAULT
는 카드, 간편결제수단이 있는 기본 결제창을 호출합니다. 기본값입니다.DIRECT
는 앱카드 또는 간편결제사 결제창을 호출합니다. 앱카드를 호출하려면cardCompany
를 설정하세요. 간편결제사 결제창을 호출하려면easyPay
를 설정하세요. 앱카드 또는 간편결제사 결제창을 사용하면 구매자로부터 직접 토스페이먼츠 이용약관 동의를 받으세요. - cardCompany string
카드사 코드입니다.
flowMode
값이DEFAULT
이면 설정한 카드사만 보이는 기본 결제창이 열립니다.flowMode
값이DIRECT
이면 설정한 카드사의 결제창이 열립니다. - easyPay string
간편결제사 코드입니다.
flowMode
값이DIRECT
이면 설정한 간편결제사의 결제창이 열립니다. - useInternationalCardOnly boolean
해외카드(Visa, MasterCard, JCB, UnionPay 등) 결제 여부입니다. 값이
true
면 해외카드 결제가 가능한 다국어 결제창이 열립니다.다국어 결제창 연동 가이드를 참고하세요. - cardInstallmentPlan number
신용 카드의 할부 개월 수입니다. 값을 넣으면 해당 할부 개월 수로 결제가 진행됩니다. 값을 넣지 않으면 구매자가 결제창에서 할부 개월 수를 선택할 수 있습니다.
flowMode
값이DIRECT
이면 구매자가 결제창에서 할부 개월 수를 확인할 수 없습니다.2
부터12
사이의 값을 사용할 수 있고,0
이 들어가면 할부가 아닌 일시불로 결제됩니다.- 결제 금액(
amount
)이 5만원 이상일 때만 할부가 적용됩니다.
- maxCardInstallmentPlan number
카드 결제에서 선택할 수 있는 최대 할부 개월 수를 제한합니다. 결제 금액(
amount
)이 5만원 이상일 때만 사용할 수 있습니다.2
부터12
사이의 값을 사용할 수 있고,0
이 들어가면 할부가 아닌 일시불로 결제됩니다. 만약 값을6
으로 설정한다면 결제창에서 일시불~6개월 사이로 할부 개월을 선택할 수 있습니다.할부 개월 수를 고정하는
cardInstallmentPlan
와 같이 사용할 수 없습니다. - freeInstallmentPlans array
무이자 할부를 적용할 카드사 및 할부 개월 정보입니다. 결제 금액이 5만원 이상일 때만 적용됩니다. 하위 파라미터에 포함된 정보와 구매자가 선택한 카드사 및 할부 개월이 매칭되면 무이자 할부가 적용됩니다.
* 이 파라미터로 적용된 무이자 할부 비용은 상점이 부담합니다.
- company 필수 · string
할부를 적용할 카드사 코드입니다. 카드사 코드를 참고하세요.
- months 필수 · array
무이자를 적용할 할부 개월 정보입니다. 할부 개월을 배열에 추가해주세요.
- useCardPoint boolean
카드로 결제할 때 설정하는 카드사 포인트 사용 여부입니다. 값을 주지 않거나 값이
false
라면 사용자가 카드사 포인트 사용 여부를 결정할 수 있습니다. 이 값을true
로 주면 카드사 포인트 사용이 체크된 상태로 결제창이 열립니다.* 추가 계약 후 사용할 수 있습니다. 토스페이먼츠 고객센터(1544-7772, support@tosspayments.com)로 문의해주세요.
- useAppCardOnly boolean
이 값을
true
로 주면 카드사의 앱카드 결제창만 열립니다.국민, 농협, 롯데, 삼성, 신한, 우리, 현대 카드에만
true
값을 사용할 수 있습니다. - hideMobileAppHeader boolean
상점 앱에서 결제창의 상단 타이틀 바를 숨길지 결정합니다.
true
로 설정하면 타이틀 바가 숨겨집니다. 상점 앱에서 결제창의 타이틀 바를 숨기고 자체적으로 만든 내비게이션 바를 사용하기 위해 설정합니다. 기본값은false
입니다. 앱으로 구현할 때만 사용하세요. - discountCode string
카드사의 할인 코드입니다.
flowMode
값이DIRECT
여야 합니다.프로모션 조회 API로 적용할 수 있는 할인 코드의 목록을 조회하세요.
- appScheme string
페이북/ISP 앱에서 상점 앱으로 돌아올 때 사용됩니다. 상점의 앱 스킴을 지정하면 됩니다. 예를 들면
testapp://
같은 형태입니다. - validHours number
결제 요청 시점으로부터 결제가 유효한 시간입니다. 설정한
validHours
가 지나고 결제 승인을 시도하면 실패합니다. 설정할 수 있는 최대값은2160
시간(90일)입니다.예를 들어 24시간 내에 결제해야 한다면
24
로 설정합니다. 값을 넣지 않으면 기본값168
시간(7일)으로 설정됩니다.validHours
와dueDate
중 하나만 사용할 수 있습니다. - dueDate string
결제 기한입니다.
dueDate
이 지난 시점에 결제를 시도하면 실패합니다. 티켓 예매 등 주문 시간과 상관없이 정해진 시점까지 결제를 받아야 할 때도 사용할 수 있습니다. 설정할 수 있는 최대값은 결제 요청일로부터 90일입니다.yyyy-MM-dd'T'HH:mm:ss
ISO 8601 형식을 사용합니다.예를 들어 2023년 10월 7일 주문 건의 결제 시간을 '주문 후 3일 뒤 자정'과 같이 특정 시점으로 설정하고 싶을 때
2023-10-10T00:00:00
과 같이 사용하세요.validHours
와dueDate
중 하나만 사용해야 합니다.
가상계좌 결제창을 호출하는 메서드입니다. 첫 번째 파라미터에는 가상계좌
/VIRTUAL_ACCOUNT
, 두 번째 파라미터에는 결제 정보가 들어갑니다.
- amount 필수 · number
결제되는 금액입니다.
- orderId 필수 · string
주문번호입니다. 주문을 구분하는 ID입니다. 충분히 무작위한 값을 생성해서 각 주문마다 고유한 값을 넣어주세요. 영문 대소문자, 숫자, 특수문자
-
,_
,=
로 이루어진 6자 이상 64자 이하의 문자열이어야 합니다. - orderName 필수 · string
구매상품입니다. 예를 들면
생수 외 1건
같은 형식입니다. 최대 길이는 100자입니다. - successUrl 필수 · string
결제가 성공하면 리다이렉트되는 URL입니다. 결제 승인 처리에 필요한 값들이 쿼리 파라미터로 함께 전달됩니다. 반드시 오리진을 포함해야 합니다. 예를 들면
https://www.example.com/success
와 같은 형태입니다. - failUrl 필수 · string
결제가 실패하면 리다이렉트되는 URL입니다. 에러 코드 및 에러 메시지가 쿼리 파라미터로 함께 전송됩니다. 반드시 오리진을 포함해야 합니다.
- windowTarget string
브라우저에서 결제창이 열리는 프레임입니다.
self
,iframe
중 하나입니다.-
self
는 현재 브라우저를 결제창으로 이동시켜요. 모바일 환경에서 기본 값입니다.-
iframe
은 iframe에서 결제창이 열려요. PC 환경에서 기본 값입니다. 모바일 환경에서는iframe
을 사용할 수 없습니다. - customerName string
구매자명입니다. 최대 길이는 100자입니다.
- customerEmail string
구매자의 이메일 주소입니다. 결제 상태가 바뀌면 이메일 주소로 결제내역이 전송됩니다. 최대 길이는 100자입니다.
- metadata object
결제 관련 정보를 추가할 수 있는 객체입니다. 최대 5개의 키-값(key-value) 쌍을 자유롭게 추가해주세요. 키는
[
,]
를 사용하지 않는 최대 40자의 문자열, 값은 최대 500자의 문자열입니다. - taxFreeAmount number
결제 금액 중 면세 금액입니다. 값을 넣지 않으면 기본값인
0
으로 설정됩니다.* 면세 상점 혹은 복합 과세 상점일 때만 설정한 금액이 적용되고, 일반 과세 상점에는 적용되지 않습니다. 더 자세한 내용은 세금 처리하기에서 살펴보세요.
- taxExemptionAmount number
과세를 제외한 결제 금액(컵 보증금 등)입니다. 값을 넣지 않으면 기본값인
0
으로 설정됩니다. 카드 결제 또는 간편결제로 계좌이체할 때 사용하세요.* 과세 제외 금액이 있는 카드 결제는 부분 취소가 안 됩니다.
- cultureExpense boolean
문화비(도서, 공연 티켓, 박물관·미술관 입장권 등) 지출 여부입니다.
- validHours number
가상계좌 발급 시점으로부터 가상계좌가 유효한 시간입니다. 설정한
validHours
안에 구매자가 입금을 하지 않으면 주문은 취소됩니다. 설정할 수 있는 최대값은2160
시간(90일)입니다.예를 들어 가상계좌 발급 후 24시간 내에 입금해야 한다면
24
로 설정합니다. 값을 넣지 않으면 기본값168
시간(7일)으로 설정됩니다.validHours
와dueDate
중 하나만 사용할 수 있습니다. - dueDate string
가상계좌 입금 기한입니다.
dueDate
이 지난 시점에 입금을 시도하면 실패합니다. 티켓 예매 등 주문 시간과 상관없이 정해진 시점까지 결제를 받아야 할 때도 사용할 수 있습니다. 설정할 수 있는 최대값은 결제 요청일로부터 90일입니다.yyyy-MM-dd'T'HH:mm:ss
ISO 8601 형식을 사용합니다.예를 들어 입금 기한을 '2023년 10월 10일 자정'과 같이 특정 시점으로 설정하고 싶을 때
2023-10-10T00:00:00
과 같이 사용하세요.validHours
와dueDate
중 하나만 사용해야 합니다. - customerMobilePhone string
구매자의 휴대폰 번호입니다. 가상계좌 입금 안내가 전송되는 번호입니다.
- showCustomerMobilePhone boolean
결제창에서 휴대폰 번호 입력 필드 노출 여부입니다.
false
를 넘기면 가상계좌 결제창에서 휴대폰 번호 입력 필드를 보여주지 않습니다. 기본값은true
입니다. - cashReceipt object
현금영수증 발급 정보를 담는 객체입니다.
- type string
현금영수증 발급 용도입니다.
소득공제
,지출증빙
,미발행
중 하나입니다.소득공제
,지출증빙
을 넣으면 해당 용도가 선택된 상태로 결제창이 열립니다. 선택된 용도는 구매자가 결제창에서 바꿀 수 있습니다.
- type string
- useEscrow boolean
에스크로 사용 여부입니다. 값을 주지 않으면 결제창에서 구매자가 직접 에스크로 결제 여부를 선택합니다.
- escrowProducts array
각 상품의 상세 정보를 담는 배열입니다.
예를 들어 사용자가 세 가지 종류의 상품을 구매했다면 길이가 3인 배열이어야 합니다. 에스크로 결제를 사용할 때만 필요한 파라미터입니다.
- id string
상품의 ID입니다. 이 값은 유니크해야 합니다.
- name string
상품 이름입니다.
- code string
상점에서 사용하는 상품 관리 코드입니다.
- unitPrice number
상품의 가격입니다. 전체를 합한 가격이 아닌 상품의 개당 가격입니다.
- quantity number
상품 구매 수량입니다.
계좌이체 결제창을 호출하는 메서드입니다. 첫 번째 파라미터에는 계좌이체
/TRANSFER
, 두 번째 파라미터에는 결제 정보가 들어갑니다.
- amount 필수 · number
결제되는 금액입니다.
- orderId 필수 · string
주문번호입니다. 주문을 구분하는 ID입니다. 충분히 무작위한 값을 생성해서 각 주문마다 고유한 값을 넣어주세요. 영문 대소문자, 숫자, 특수문자
-
,_
,=
로 이루어진 6자 이상 64자 이하의 문자열이어야 합니다. - orderName 필수 · string
구매상품입니다. 예를 들면
생수 외 1건
같은 형식입니다. 최대 길이는 100자입니다. - successUrl 필수 · string
결제가 성공하면 리다이렉트되는 URL입니다. 결제 승인 처리에 필요한 값들이 쿼리 파라미터로 함께 전달됩니다. 반드시 오리진을 포함해야 합니다. 예를 들면
https://www.example.com/success
와 같은 형태입니다. - failUrl 필수 · string
결제가 실패하면 리다이렉트되는 URL입니다. 에러 코드 및 에러 메시지가 쿼리 파라미터로 함께 전송됩니다. 반드시 오리진을 포함해야 합니다.
- windowTarget string
브라우저에서 결제창이 열리는 프레임입니다.
self
,iframe
중 하나입니다.-
self
는 현재 브라우저를 결제창으로 이동시켜요. 모바일 환경에서 기본 값입니다.-
iframe
은 iframe에서 결제창이 열려요. PC 환경에서 기본 값입니다. 모바일 환경에서는iframe
을 사용할 수 없습니다. - customerName string
구매자명입니다. 최대 길이는 100자입니다.
- customerEmail string
구매자의 이메일 주소입니다. 결제 상태가 바뀌면 이메일 주소로 결제내역이 전송됩니다. 최대 길이는 100자입니다.
- metadata object
결제 관련 정보를 추가할 수 있는 객체입니다. 최대 5개의 키-값(key-value) 쌍을 자유롭게 추가해주세요. 키는
[
,]
를 사용하지 않는 최대 40자의 문자열, 값은 최대 500자의 문자열입니다. - customerMobilePhone string
구매자의 휴대폰 번호입니다. 퀵계좌이체창에서 구매자의 휴대폰 번호를 자동 완성합니다.
- taxFreeAmount number
결제 금액 중 면세 금액입니다. 값을 넣지 않으면 기본값인
0
으로 설정됩니다.* 면세 상점 혹은 복합 과세 상점일 때만 설정한 금액이 적용되고, 일반 과세 상점에는 적용되지 않습니다. 더 자세한 내용은 세금 처리하기에서 살펴보세요.
- taxExemptionAmount number
과세를 제외한 결제 금액(컵 보증금 등)입니다. 값을 넣지 않으면 기본값인
0
으로 설정됩니다. 카드 결제 또는 간편결제로 계좌이체할 때 사용하세요.* 과세 제외 금액이 있는 카드 결제는 부분 취소가 안 됩니다.
- cultureExpense boolean
문화비(도서, 공연 티켓, 박물관·미술관 입장권 등) 지출 여부입니다.
- type string
현금영수증 발급 용도입니다.
소득공제
,지출증빙
,미발행
중 하나입니다.소득공제
,지출증빙
을 넣으면 해당 용도가 선택된 상태로 결제창이 열립니다. 선택된 용도는 구매자가 결제창에서 바꿀 수 있습니다. - useEscrow boolean
에스크로 사용 여부입니다. 값을 주지 않으면 결제창에서 구매자가 직접 에스크로 결제 여부를 선택합니다.
- escrowProducts array
각 상품의 상세 정보 객체를 담는 배열입니다.
예를 들어 사용자가 세 가지 종류의 상품을 구매했다면 길이가 3인 배열이어야 합니다. 에스크로 결제를 사용할 때만 필요한 파라미터입니다.
- id string
상품의 ID입니다. 이 값은 유니크해야 합니다.
- name string
상품 이름입니다.
- code string
상점에서 사용하는 상품 관리 코드입니다.
- unitPrice number
상품의 가격입니다. 전체를 합한 가격이 아닌 상품의 개당 가격입니다.
- quantity number
상품 구매 수량입니다.
- id string
- validHours number
결제 요청 시점으로부터 결제가 유효한 시간입니다. 설정한
validHours
가 지나고 결제 승인을 시도하면 실패합니다. 설정할 수 있는 최대값은2160
시간(90일)입니다.예를 들어 24시간 내에 결제해야 한다면
24
로 설정합니다. 값을 넣지 않으면 기본값168
시간(7일)으로 설정됩니다.validHours
와dueDate
중 하나만 사용할 수 있습니다. - dueDate string
결제 기한입니다.
dueDate
이 지난 시점에 결제를 시도하면 실패합니다. 티켓 예매 등 주문 시간과 상관없이 정해진 시점까지 결제를 받아야 할 때도 사용할 수 있습니다. 설정할 수 있는 최대값은 결제 요청일로부터 90일입니다.yyyy-MM-dd'T'HH:mm:ss
ISO 8601 형식을 사용합니다.예를 들어 2023년 10월 7일 주문 건의 결제 시간을 '주문 후 3일 뒤 자정'과 같이 특정 시점으로 설정하고 싶을 때
2023-10-10T00:00:00
과 같이 사용하세요.validHours
와dueDate
중 하나만 사용해야 합니다.
휴대폰 결제창을 호출하는 메서드입니다. 첫 번째 파라미터에는 휴대폰
/MOBILE_PHONE
, 두 번째 파라미터에는 결제 정보가 들어갑니다.
- amount 필수 · number
결제되는 금액입니다.
- orderId 필수 · string
주문번호입니다. 주문을 구분하는 ID입니다. 충분히 무작위한 값을 생성해서 각 주문마다 고유한 값을 넣어주세요. 영문 대소문자, 숫자, 특수문자
-
,_
,=
로 이루어진 6자 이상 64자 이하의 문자열이어야 합니다. - orderName 필수 · string
구매상품입니다. 예를 들면
생수 외 1건
같은 형식입니다. 최대 길이는 100자입니다. - successUrl 필수 · string
결제가 성공하면 리다이렉트되는 URL입니다. 결제 승인 처리에 필요한 값들이 쿼리 파라미터로 함께 전달됩니다. 반드시 오리진을 포함해야 합니다. 예를 들면
https://www.example.com/success
와 같은 형태입니다. - failUrl 필수 · string
결제가 실패하면 리다이렉트되는 URL입니다. 에러 코드 및 에러 메시지가 쿼리 파라미터로 함께 전송됩니다. 반드시 오리진을 포함해야 합니다.
- windowTarget string
브라우저에서 결제창이 열리는 프레임입니다.
self
,iframe
중 하나입니다.-
self
는 현재 브라우저를 결제창으로 이동시켜요. 모바일 환경에서 기본 값입니다.-
iframe
은 iframe에서 결제창이 열려요. PC 환경에서 기본 값입니다. 모바일 환경에서는iframe
을 사용할 수 없습니다. - customerName string
구매자명입니다. 최대 길이는 100자입니다.
- customerEmail string
구매자의 이메일 주소입니다. 결제 상태가 바뀌면 이메일 주소로 결제내역이 전송됩니다. 최대 길이는 100자입니다.
- metadata object
결제 관련 정보를 추가할 수 있는 객체입니다. 최대 5개의 키-값(key-value) 쌍을 자유롭게 추가해주세요. 키는
[
,]
를 사용하지 않는 최대 40자의 문자열, 값은 최대 500자의 문자열입니다. - taxFreeAmount number
결제 금액 중 면세 금액입니다. 값을 넣지 않으면 기본값인
0
으로 설정됩니다.* 면세 상점 혹은 복합 과세 상점일 때만 설정한 금액이 적용되고, 일반 과세 상점에는 적용되지 않습니다. 더 자세한 내용은 세금 처리하기에서 살펴보세요.
- mobileCarrier array
결제창에서 선택할 수 있는 통신사를 제한합니다. 배열에 통신사 코드를 추가하면 해당 통신사 코드만 선택할 수 있는 결제창이 뜹니다.
값을 넣지 않으면 모든 통신사 코드를 선택할 수 있는 결제창이 뜹니다. 통신사 코드를 참고하세요.
상품권 결제창을 호출하는 메서드입니다. 첫 번째 파라미터에는 문화상품권
/CULTURE_GIFT_CERTIFICATE
, 도서문화상품권
/BOOK_GIFT_CERTIFICATE
, 게임문화상품권
/GAME_GIFT_CERTIFICATE
중 하나를 설정하세요. 두 번째 파라미터에는 결제 정보가 들어갑니다.
- amount 필수 · number
결제되는 금액입니다.
- orderId 필수 · string
주문번호입니다. 주문을 구분하는 ID입니다. 충분히 무작위한 값을 생성해서 각 주문마다 고유한 값을 넣어주세요. 영문 대소문자, 숫자, 특수문자
-
,_
,=
로 이루어진 6자 이상 64자 이하의 문자열이어야 합니다. - orderName 필수 · string
구매상품입니다. 예를 들면
생수 외 1건
같은 형식입니다. 최대 길이는 100자입니다. - successUrl 필수 · string
결제가 성공하면 리다이렉트되는 URL입니다. 결제 승인 처리에 필요한 값들이 쿼리 파라미터로 함께 전달됩니다. 반드시 오리진을 포함해야 합니다. 예를 들면
https://www.example.com/success
와 같은 형태입니다. - failUrl 필수 · string
결제가 실패하면 리다이렉트되는 URL입니다. 에러 코드 및 에러 메시지가 쿼리 파라미터로 함께 전송됩니다. 반드시 오리진을 포함해야 합니다.
- windowTarget string
브라우저에서 결제창이 열리는 프레임입니다.
self
,iframe
중 하나입니다.-
self
는 현재 브라우저를 결제창으로 이동시켜요. 모바일 환경에서 기본 값입니다.-
iframe
은 iframe에서 결제창이 열려요. PC 환경에서 기본 값입니다. 모바일 환경에서는iframe
을 사용할 수 없습니다. - customerName string
구매자명입니다. 최대 길이는 100자입니다.
- customerEmail string
구매자의 이메일 주소입니다. 결제 상태가 바뀌면 이메일 주소로 결제내역이 전송됩니다. 최대 길이는 100자입니다.
- metadata object
결제 관련 정보를 추가할 수 있는 객체입니다. 최대 5개의 키-값(key-value) 쌍을 자유롭게 추가해주세요. 키는
[
,]
를 사용하지 않는 최대 40자의 문자열, 값은 최대 500자의 문자열입니다. - taxFreeAmount number
결제 금액 중 면세 금액입니다. 값을 넣지 않으면 기본값인
0
으로 설정됩니다.* 면세 상점 혹은 복합 과세 상점일 때만 설정한 금액이 적용되고, 일반 과세 상점에는 적용되지 않습니다. 더 자세한 내용은 세금 처리하기에서 살펴보세요.
해외 간편결제로 이동하는 메서드입니다. 첫 번째 파라미터에는 해외간편결제
를 설정하세요. 두 번째 파라미터에는 결제 정보가 들어갑니다.
- amount 필수 · number
결제되는 금액입니다.
- orderId 필수 · string
주문번호입니다. 주문을 구분하는 ID입니다. 충분히 무작위한 값을 생성해서 각 주문마다 고유한 값을 넣어주세요. 영문 대소문자, 숫자, 특수문자
-
,_
,=
로 이루어진 6자 이상 64자 이하의 문자열이어야 합니다. - orderName 필수 · string
구매상품입니다. 예를 들면
생수 외 1건
같은 형식입니다. 최대 길이는 100자입니다. - successUrl 필수 · string
결제가 성공하면 리다이렉트되는 URL입니다. 결제 승인 처리에 필요한 값들이 쿼리 파라미터로 함께 전달됩니다. 반드시 오리진을 포함해야 합니다. 예를 들면
https://www.example.com/success
같은 형태입니다. - failUrl 필수 · string
결제가 실패하면 리다이렉트되는 URL입니다. 에러 코드 및 에러 메시지가 쿼리 파라미터로 함께 전송됩니다. 반드시 오리진을 포함해야 합니다.
- provider 필수 · string
간편결제사 코드입니다. PayPal 연동에서는
PAYPAL
또는페이팔
을 넣어야 합니다. - currency 필수 · string
결제 통화입니다. 기본 값은
KRW
입니다.PayPal 해외간편결제를 연동한다면 필수 값입니다. PayPal에서 사용할 수 있는 통화는
USD
입니다. - country 필수 · string
결제한 국가입니다. 기본 값은
KR
입니다.PayPal 해외간편결제를 연동한다면 필수 값입니다. ISO-3166의 두 자리 국가 코드를 모두 지원합니다.
- customerName string
구매자명입니다. 최대 길이는 100자입니다.
- customerEmail string
구매자의 이메일 주소입니다. 결제 상태가 바뀌면 이메일 주소로 결제내역이 전송됩니다. 최대 길이는 100자입니다.
- metadata object
결제 관련 정보를 추가할 수 있는 객체입니다. 최대 5개의 키-값(key-value) 쌍을 자유롭게 추가해주세요. 키는
[
,]
를 사용하지 않는 최대 40자의 문자열, 값은 최대 500자의 문자열입니다. - taxFreeAmount number
면세 금액입니다.
아래 파라미터는 PayPal 해외간편결제를 사용하면 필수 파라미터입니다. 판매자를 보호하고 위험한 거래를 관리하기 위해 PayPal에 제공되는 정보입니다. 이 파라미터를 보내면 PayPal에서 제공하는 판매자 보호를 받을 수 있으니 반드시 보내주세요.
- products array
구매자가 선택한 각 상품의 상세 정보를 담는 배열입니다. 예를 들어, 세 가지 상품을 구매했다면 배열 길이는 3이어야 합니다.
products
정보는 선택 사항이지만 포함할 경우 아래 모든 항목은 필수입니다.- name 필수 · string
상품 이름입니다.
- quantity 필수 · number
상품 구매 수량입니다.
- unitAmount 필수 · number
상품의 가격입니다. 전체를 합한 가격이 아닌 상품의 개당 가격입니다.
- currency 필수 · string
상품 가격의 통화입니다.
- description 필수 · string
상품에 대한 부가적인 설명입니다.
- name 필수 · string
- shipping object
구매한 각 상품의 배송 정보 객체입니다.
- fullName string
구매자명입니다.
- address object
배송지 주소입니다.
- country 필수 · string
배송지 국가 정보입니다.
- line1 string
배송지 상세 주소입니다. 도로명 및 건물(Street, Apt), 번지 정보입니다. 예를 들어
2nd St 105
같은 형태입니다. - line2 string
추가적인 배송지 상세 주소입니다. 번지 및 동호수 정보가 길어질 때 사용합니다. 예를 들어
Unit #105
같은 형태입니다. - area1 string
배송지 주소입니다. 주(State, Province, Region) 정보입니다. 국가 별로 도시 체계에 따라 없는 경우가 있습니다.
- area2 필수 · string
배송지 주소입니다. 도시(City) 정보입니다. 예를 들어
San Jose
같은 형태입니다. - postalCode string
배송지 우편번호입니다. 중국, 일본, 프랑스, 독일 등 일부 국가에서 일어나는 PayPal 거래에는
postalCode
가 필수 파라미터입니다.
- country 필수 · string
- fullName string
- paymentMethodOptions object
결제수단의 추가 파라미터를 담는 객체입니다. 결제수단이나 결제사 별로 파라미터를 제공합니다. PayPal을 연동할 때는
paypal
을 사용합니다.- paypal object
PayPal의 추가 파라미터를 담는 객체입니다.
- setTransactionContext object
PayPal에서 추가로 요청하는 STC(Set Transaction Context) 정보를 객체로 전달하는 필드입니다. 이 정보는 PayPal에서 부정거래, 결제 취소, 환불 등 리스크 관리에 활용합니다. 결제 거래의 안전성과 신뢰성을 확보하려면 이 정보를 전달해야 합니다. PayPal STC 문서를 참고해서 업종에 따라 필요한 파라미터를 추가해주세요. 문서의 표에 있는 ‘Data Field Name’ 칼럼 값을 객체의 ‘key’로, ‘Description’에 맞는 값을 객체의 ‘value’로 넣어주시면 됩니다.
예를 들어 이벤트/티케팅 업종에 종사하고 있다면, STC 문서 3페이지에 해당하는 모든 파라미터를
setTransactionContext
객체에 추가하세요.* 이 정보는 토스페이먼츠에서 관리하지 않습니다.
- setTransactionContext object
- paypal object
자동결제 등록창을 호출하는 메서드입니다. 카드를 등록한 뒤 상점에서 원하는 시점에 자동으로 결제하는 카드 자동결제를 연동할 때 사용합니다.
첫 번째 파라미터에는 카드
/CARD
, 두 번째 파라미터에는 결제 정보가 들어갑니다. 자동결제는 카드 결제만 지원합니다.
- customerKey 필수 · string
구매자 ID입니다. 빌링키와 연결됩니다. 다른 사용자가 이 값을 알게 되면 악의적으로 사용될 수 있습니다. 자동 증가하는 숫자 또는 이메일・전화번호・사용자 아이디와 같이 유추가 가능한 값은 안전하지 않습니다. UUID와 같이 충분히 무작위적인 고유 값으로 생성해주세요. 영문 대소문자, 숫자, 특수문자
-
,_
,=
,.
,@
를 최소 1개 이상 포함한 최소 2자 이상 최대 300자 이하의 문자열이어야 합니다. - successUrl 필수 · string
결제가 성공하면 리다이렉트되는 URL입니다. 빌링키 발급에 필요한 값이 쿼리 파라미터로 전달됩니다. 반드시 오리진을 포함해야 합니다. 예를 들면
https://www.example.com/success
와 같은 형태입니다. - failUrl 필수 · string
결제가 실패하면 리다이렉트되는 URL입니다. 에러 코드 및 에러 메시지가 쿼리 파라미터로 함께 전송됩니다. 반드시 오리진을 포함해야 합니다.
- customerName string
구매자명입니다. 최대 길이는 100자입니다.
- customerEmail string
구매자의 이메일 주소입니다. 결제 상태가 바뀌면 이메일 주소로 결제내역이 전송됩니다. 최대 길이는 100자입니다.
- windowTarget string
브라우저에서 결제창이 열리는 프레임입니다.
self
,iframe
중 하나입니다.-
self
는 현재 브라우저를 결제창으로 이동시켜요. 모바일 환경에서 기본 값입니다.-
iframe
은 iframe에서 결제창이 열려요. PC 환경에서 기본 값입니다. 모바일 환경에서는iframe
을 사용할 수 없습니다.
cancelPayment()
를 실행하면 열려있는 iframe 결제창이 닫히고 진행 중인 결제는 취소됩니다.
React 또는 Vue.js로 SPA(Single Page Application) 사이트를 구현했을 때 사용합니다. 데스크톱 브라우저에서 페이지를 전환해도 결제창 iframe이 남아 있다면 cancelPayment()
를 실행하세요.
* 모바일 웹에서는 아무 동작도 실행되지 않습니다.
모바일 환경에서 사용할 수 있는 결제창 SDK입니다.
requestPayment()
메서드 응답은 리다이렉트 URL 또는 Promise로 처리할 수 있습니다.
✔️ PC 및 모바일 환경에서 사용하세요.
✔️ requestPayment()
의 successUrl
, failUrl
파라미터를 설정하세요.
✔️ 응답 데이터를 successUrl
, failUrl
의 쿼리 파라미터로 확인하세요.
✅ 결제 요청 성공: successUrl
로 리다이렉트 됩니다. 쿼리 파라미터로 결제 승인 API를 호출하세요.
❎ 결제 요청 실패: failUrl
로 리다이렉트 됩니다. 에러 목록을 확인하세요.
✔️ PC 환경에서만 사용하세요. 모바일 환경에서 Promise를 사용하면 결제가 안 됩니다.
✔️ requestPayment()
의 successUrl
, failUrl
, windowTarget
파라미터를 설정하지 마세요.
✔️ 응답 데이터를 then
, catch
로 확인하세요.
- paymentKey string
결제를 식별하는 키값입니다. 토스페이먼츠에서 발급합니다. 결제 승인, 결제 조회, 결제 취소 등 운영에 필요한 값입니다.
- orderId string
주문번호입니다. 결제 요청에 보낸 값입니다.
- amount number
결제 금액입니다. 결제 요청에 보낸 결제 금액과 같은지 반드시 확인해보세요. 클라이언트에서 결제 금액을 조작해 승인하는 행위를 방지할 수 있습니다. 만약 값이 다르다면 결제를 취소하고 구매자에게 알려주세요. 적립금이나 쿠폰이 적용된 금액이 맞는지도 확인해보세요.
- code string
에러 코드입니다. 에러 목록을 확인하세요.
- message string
에러 메시지입니다.
- orderId string
주문번호입니다. 결제 요청에 담아 보낸 값입니다.