복수 전자서명

고객의 동의를 받아야하는 계약・동의 원문이 다수여도 한 번의 서명으로 간편하게 인증을 끝낼 수 있습니다. 보험가입, 대출신청 등 다양하게 활용 가능합니다.

일반 전자서명과 복수 전자서명의 서비스 흐름은 동일하지만 사용하는 엔드포인트와 일부 API의 요청 파라미터의 차이가 있으니 연동에 유의해주세요.

토스인증 흐름

1. Access Token 발급 API

서버 인증을 위한 Access Token을 발급받는 API 입니다. 인증 방식 살펴보기

발급받은 Access Token은 모든 서비스 API 호출 시, 인증 용도로 사용됩니다. Access Token은 만료시간을 가지며, 토큰이 만료되면 유효한 토큰을 다시 발급받아 사용해야 합니다.

이미 유효한 토큰을 가지고 있는 상태에서 새로운 토큰 발급 API 를 반복 호출하지 마세요.

EndPoint

POST /token

요청

curl --request POST 'https://oauth2.cert.toss.im/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=test_a8e23336d673ca70922b485fe806eb2d' \
--data-urlencode 'client_secret=test_418087247d66da09fda1964dc4734e453c7cf66a7a9e3' \
--data-urlencode 'scope=ca'

요청 헤더

  • Content-Type 필수 · String

    application/x-www-form-urlencoded

요청 파라미터

  • grant_type 필수

    client_credentials

  • scope 필수

    ca

  • client_id 필수

    고객사에 발급된 클라이언트 아이디

  • client_secret 필수

    고객사에 발급된 클라이언트 시크릿

응답

{
"access_token": "eyJraWQiOiJjZXJ0IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJ0ZXN0X2E4ZTIzMzM2ZDY3M2NhNzA5MjJiNDg1ZmU4MDZlYjJkIiwiYXVkIjoidGVzdF9hOGUyMzMzNmQ2NzNjYTcwOTIyYjQ4NWZlODA2ZWIyZCIsIm5iZiI6MTY0OTIyMjk3OCwic2NvcGUiOlsiY2EiXSwiaXNzIjoiaHR0cHM6XC9cL2NlcnQudG9zcy5pbSIsImV4cCI6MTY4MDc1ODk3OCwiaWF0IjoxNjQ5MjIyOTc4LCJqdGkiOiI4MDNjNDBjOC1iMzUxLTRmOGItYTIxNC1iNjc5MmNjMzBhYTcifQ.cjDZ0lAXbuf-KAgi3FlG1YGxvgvT3xrOYKDTstfbUz6CoNQgvd9TqI6RmsGZuona9jIP6H12Z1Xb07RIfAVoTK-J9iC5_Yp8ZDdcalsMNj51pPP8wso86rn-mKsrx1J5Rdi3GU58iKt0zGr4KzqSxUJkul9G4rY03KInwvl692HU19kYA9y8uTI4bBX--UPfQ02G0QH9HGTPHs7lZsISDtyD8sB2ikz5p7roua7U467xWy4BnRleCEWO2uUaNNGnwd7SvbjhmsRZqohs9KzDUsFjVhSiRNdHL53XJQ5zFHwDF92inRZFLu6Dw8xttPtNHwAD1kT84uXJcVMfEHtwkQ",
"scope": "ca",
"token_type": "Bearer",
"expires_in": 31536000
}
JSON

2. 복수 전자서명 요청 API

전자서명을 시작하기 위한 API로서 토스 인증 서버에서 txId를 발급합니다.

EndPoint

POST /api/v2/sign/docs/request

Case1. 앱 푸쉬를 이용해서 서명 요청하기

curl --location --request POST 'https://cert.toss.im/api/v2/sign/docs/request' \
--header 'Authorization: Bearer eyJraWQiOiJjZXJ0IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJ0ZXN0X2E4ZTIzMzM2ZDY3M2NhNzA5MjJiNDg1ZmU4MDZlYjJkIiwiYXVkIjoidGVzdF9hOGUyMzMzNmQ2NzNjYTcwOTIyYjQ4NWZlODA2ZWIyZCIsIm5iZiI6MTY0OTIyMjk3OCwic2NvcGUiOlsiY2EiXSwiaXNzIjoiaHR0cHM6XC9cL2NlcnQudG9zcy5pbSIsImV4cCI6MTY4MDc1ODk3OCwiaWF0IjoxNjQ5MjIyOTc4LCJqdGkiOiI4MDNjNDBjOC1iMzUxLTRmOGItYTIxNC1iNjc5MmNjMzBhYTcifQ.cjDZ0lAXbuf-KAgi3FlG1YGxvgvT3xrOYKDTstfbUz6CoNQgvd9TqI6RmsGZuona9jIP6H12Z1Xb07RIfAVoTK-J9iC5_Yp8ZDdcalsMNj51pPP8wso86rn-mKsrx1J5Rdi3GU58iKt0zGr4KzqSxUJkul9G4rY03KInwvl692HU19kYA9y8uTI4bBX--UPfQ02G0QH9HGTPHs7lZsISDtyD8sB2ikz5p7roua7U467xWy4BnRleCEWO2uUaNNGnwd7SvbjhmsRZqohs9KzDUsFjVhSiRNdHL53XJQ5zFHwDF92inRZFLu6Dw8xttPtNHwAD1kT84uXJcVMfEHtwkQ' \
--header 'Content-Type: application/json' \
# 세션 키는 매 요청 시 새로 생성해야 합니다.
--data-raw '{
       "requestType" : "USER_PERSONAL",
       "triggerType" : "PUSH",
       "userName": "v1$dee37038-24d3-44df-960d-6ca9d456c310$XRoDvtmNauTj/tIdBnvyWt9J1GT77z7Kow==",
       "userPhone": "v1$dee37038-24d3-44df-960d-6ca9d456c310$h5KzYWcms2VfiR2cGsoVO0infPotGpbYYIoh",
       "userBirthday": "v1$dee37038-24d3-44df-960d-6ca9d456c310$hpq6YWEksWlV6F9actErr8TSl7mLqTfD",
       "sessionKey" : "v1$dee37038-24d3-44df-960d-6ca9d456c310$OLw0wMAqvXRXUnuUB+SAlCANzztg8ztUE2/Lb/ydWJDbXuQCVyWwirDKBUewTRsPBBzszY6fY/utN0wNZw3h9YDAvwqpB4e36fNxHUQdzOKw3qm3bNNk0GwNHqcw5CjmzXdwmmGYNfsCq619vzvJxrqSJAhB+kYU4AWZsjfZf56EsyCHyjXswiL4XXGcj/AMD71Fq9wCv61L/Aja+xxLDZJFA1skAqMyk7WWm/Vv0CZOqflqUVodJKzOEPl3/xLQapEbjnLK4nIVnajJtsgEiW/SFWM8o1Q+bdKlAV5yVEcfZzpu9A67XoPnLxmeH2+fybS6gjOgZQ2nXDD+gQ5s4kBBoXIvUphvtyf2Ct7YDvu8M7gfi2Vr+gz6816jmLwZnUCJv3GM1t7a05MDHY50C7D+2oK19W+DquELcbRuLSsl3N19BFk9vtzH3DuTU3Kic3b/nVkIJac50oYS1/ceSF6PNHW2yVtcipsCPa2E/e4ZEfJpJLeSOVj4/d80mhaorldCZ4KyNruw2n0kLpXQI4/cojfZ5qkppYa9veECF28UNo5dbeCs9/ZPtziQ8sgNejt89pEwP7WvGBGvYQK/Oc7VaIij34POPXAYxSPY6c/+Tw0IWPymx6m93WFTZMbeoWrisyYq3KOSv/SUBU1yezEOD00DuVW4btnVNTHFeGg=",
       "serviceName": "토스 서비스 이용약관",
       "docList": [
       {
               "docTitle" : "통합 금융정보 서비스 약관",
               "doc" : "본 약관은 주식회사 비바리퍼블리카(이하 회사)가 제공하는 통합 금융정보 서비스 또는 전자문서 서비스(이하 서비스)의 이용과 관련하여, 회사와 회원 간의 권리와 의무 및 책임사항과 서비스 이용조건 및 절차 등 기본적 사항을 규정함을 목적으로 합니다.(이하생략)",
               "docType": "TEXT",
               "docEncrypted" : false,
               "signatureType": "PKCS7",
               "order" : 1
       },
       {
               "docTitle" : "이용자의 권리 및 유의사항",
               "doc" : "회원은 개인신용정보의 주체이며, 당사에서는 정보주체인 회원의 권리를 보호하기 위해 아래와 같은 이용자 보호 제도를 시행하고 있습니다.(이하생략)",
               "docType": "TEXT",
               "docEncrypted" : false,
               "signatureType": "PKCS7",
               "order" : 2
        }
      ]
    }'

Case 2. 토스 서버에서 생성하는 앱스킴을 이용해서 서명 요청하기

curl --location --request POST 'https://cert.toss.im/api/v2/sign/docs/request' \
--header 'Authorization: Bearer eyJraWQiOiJjZXJ0IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJ0ZXN0X2E4ZTIzMzM2ZDY3M2NhNzA5MjJiNDg1ZmU4MDZlYjJkIiwiYXVkIjoidGVzdF9hOGUyMzMzNmQ2NzNjYTcwOTIyYjQ4NWZlODA2ZWIyZCIsIm5iZiI6MTY0OTIyMjk3OCwic2NvcGUiOlsiY2EiXSwiaXNzIjoiaHR0cHM6XC9cL2NlcnQudG9zcy5pbSIsImV4cCI6MTY4MDc1ODk3OCwiaWF0IjoxNjQ5MjIyOTc4LCJqdGkiOiI4MDNjNDBjOC1iMzUxLTRmOGItYTIxNC1iNjc5MmNjMzBhYTcifQ.cjDZ0lAXbuf-KAgi3FlG1YGxvgvT3xrOYKDTstfbUz6CoNQgvd9TqI6RmsGZuona9jIP6H12Z1Xb07RIfAVoTK-J9iC5_Yp8ZDdcalsMNj51pPP8wso86rn-mKsrx1J5Rdi3GU58iKt0zGr4KzqSxUJkul9G4rY03KInwvl692HU19kYA9y8uTI4bBX--UPfQ02G0QH9HGTPHs7lZsISDtyD8sB2ikz5p7roua7U467xWy4BnRleCEWO2uUaNNGnwd7SvbjhmsRZqohs9KzDUsFjVhSiRNdHL53XJQ5zFHwDF92inRZFLu6Dw8xttPtNHwAD1kT84uXJcVMfEHtwkQ' \
--header 'Content-Type: application/json' \
# 세션 키는 매 요청 시 새로 생성해야 합니다.
--data-raw '{
       "requestType" : "USER_CI",
       "triggerType" : "APP_SCHEME",
       "userCi" : "v1$27d72275-2957-4eff-8e62-7413e42f15ab$GnebSTUmqL6jpXVam1UwdsMDE4375ikDePjAiEPAhQ/RhmFdJZFXTz0aCIi53yQnxM+nGdNIk6V2ERaO8NCRQhnVAGOhMlNBlgLqRo2Cc30hNciJDo6yAo6b1thcamTG+TjrD63TkOY=",
       "sessionKey" : "v1$27d72275-2957-4eff-8e62-7413e42f15ab$I3fvkHr8DeSv/8WcIZfSLjfAiN83zz0W8tnjXw0aHeZA8CHGwV0N+tj+4YIT3B0QhICkHLBTiMVitzAkBHV3PYkQz5U5hKtBmUCM1uqCY2VxUQ+Mmc5GzDH/tKU9Tu648/oTeQhqtNOgi9hPm2/7v8Tu0zlqBO7TXRZhVfDqxAGwGWnJErxbxrEOYvibU8jkKGFRMGhUsrlYfdUEANVkbYrYMY/a06BC6sOHs5OVv5B3mKlTmvGBR8002CTLAOy0reqzpMFWO9EfkwuLYRIvXvu7zgf7bcjKPRXg/q0G+4bq9qExWd8YZ2tvmewcr+oJkkq5m2R8YJsoJgClmPogpICGHLISqbUtZ+01CUTguJffuEucBOsy5bWUBU9ocPmiytASwFFYcjXWKApTsUpXyY+DxPMGkC3X+W4xCLM2DY8iPvqmXK6On/9NTlQyyjcBuOijJgFlU9YPvi5mz4h8KVLmNVr9E1aZyQtbUa9Fo1eLAP//jO3PGPyA3EwqLllwpl5zn+RkEvFSny8RPQtlQbalVcMlEmq/bDO8seWHz/wcNi7+OxUzTiJGqIH19btCBMgSC8p+Hgn+EWXLKPcZDemSidbhtQF+Rw1YaYoiiuV1uPgWqa1B07YdL+W0yMTB4v+TKbUzWLEIwZOgAxAvVUjOUdrBuGwGPZ1McfiyIfU=",
       "serviceName": "토스 서비스 이용약관",
       "docList": [
       {
               "docTitle" : "통합 금융정보 서비스 약관",
               "doc" : "본 약관은 주식회사 비바리퍼블리카(이하 회사)가 제공하는 통합 금융정보 서비스 또는 전자문서 서비스(이하 서비스)의 이용과 관련하여, 회사와 회원 간의 권리와 의무 및 책임사항과 서비스 이용조건 및 절차 등 기본적 사항을 규정함을 목적으로 합니다.(이하생략)",
               "docType": "TEXT",
               "docEncrypted" : false,
               "signatureType": "PKCS7",
               "order" : 1
        },
        {
               "docTitle" : "이용자의 권리 및 유의사항",
               "doc" : "회원은 개인신용정보의 주체이며, 당사에서는 정보주체인 회원의 권리를 보호하기 위해 아래와 같은 이용자 보호 제도를 시행하고 있습니다.(이하생략)",
               "docType": "TEXT",
               "docEncrypted" : false,
               "signatureType": "PKCS7",
               "order" : 2
         }
       ]
    }'

요청 파라미터

  • requestType String
    • USER_PERSONAL : 고객의 이름, 생년월일, 전화번호 정보를 기반으로 인증 요청 (암호화된 userName, userPhone, userBirthday 정보 필수)

    • USER_CI : 고객사에서 관리하는 고객의 CI 정보를 기반으로 인증 요청 (암호화된 userCi 정보 필수)

      USER_CI 값으로 요청되는 경우 서명 결과조회 API 응답에서 CI, DI를 수신할 수 없습니다.
  • triggerType 필수 · String
    • PUSH : 토스 앱 푸쉬를 이용해서 고객의 토스 앱으로 직접 푸쉬를 발송하고 인증을 진행하는 방식
    • APP_SCHEME : 토스 인증 서버에서 인증 결과로 전달하는 OS별 앱스킴을 고객사 서버에서 직접 호출하고 인증을 진행하는 방식
  • userName String

    requestType이 USER_PERSONAL인 경우에만 필수로 전달하는 고객의 이름

    평문이 아닌 반드시 암호화된 값으로 전달해야 합니다. 개인정보 암복호화 확인하기

  • userPhone String

    requestType이 USER_PERSONAL인 경우에만 필수로 전달하는 고객의 휴대폰번호로 문자 포함없이 순수한 숫자형태로 전달 필요

    평문이 아닌 반드시 암호화된 값으로 전달해야 합니다. 개인정보 암복호화 확인하기

  • userBirthday String

    requestType이 USER_PERSONAL인 경우에만 필수로 전달하는 고객의 생년월일 8자리 YYYYMMDD형식

    평문이 아닌 반드시 암호화된 값으로 전달해야 합니다. 개인정보 암복호화 확인하기

  • sessionKey String

    API에서 사용자의 개인정보 전달이 필요한 경우 즉, requestType이 USER_PERSONAL또는 USER_CI인 경우는 필수 파라미터

    인증 요청과 응답을 AES 암복호화 할 때 사용되는 세션 키로 매 요청 시 마다 새로 생성해서 암호화된 개인정보와 함께 전달해야 합니다. 세션키 생성 방법 확인하기

  • userCi String

    requestType이 USER_CI인 경우에만 필수로 전달하는 고객의 CI

    평문이 아닌 반드시 암호화된 값으로 전달해야 합니다. 개인정보 암복호화 확인하기

  • serviceName 필수 · String

    고객의 토스 앱 인증화면에 보이는 서비스 이름으로 계약서 제목 또는 동의문 제목을 포함하면 좋습니다.

    최대 50자 까지 가능합니다.

  • docList Array

    전자서명 원문 이력이 담기는 배열입니다.

  • docTitle String

    고객의 토스 앱 인증화면에 보이는 계약・동의 문서의 제목

  • doc String

    고객의 토스 앱 인증화면에서 문서의 제목(docTitle)을 눌렀을 때 나오는 상세한 계약・동의 원문 내용

    최대 2,000자 이내의 내용을 권장합니다. 누군가를 특정할 수 있는 개인정보가 포함된 원문이라면 보안을 위해 원문 암호화가 필요합니다.

    개인정보 암복호화 확인하기
  • docType String

    원문의 형태

    • TEXT : 원문 내용을 그대로 보여주는 텍스트 형태

    • HTML : 원문 내용을 HTML 형태로 보여주는 형태

    • PDF : PDF 서명을 위해 원문 내용을 보여주지 않고 hash값만 서명하는 형태

  • docEncrypted String

    원문 암호화 여부

    원문(doc)에 고객 개인정보를 포함한다면 true로 선언하고, doc에 포함된 원문은 모두 암호화된 값으로 전달해야 합니다. 그 외의 경우는 기본이 false입니다.

  • signatureType String

    전자서명 방식으로 기본은 PKCS7 으로 고정

    PDF 등 원문의 크기가 큰 전자서명을 사용하는 경우 PKCS7_NO_CONTENT_WITH_ATTR 으로 선언하고 해당 PDF 컨텐츠를 hash한 후에 원문(doc)을 반드시 base64 encode 요청값으로 전달해야 합니다.

  • order 필수 · Number

    고객의 토스 앱 인증화면에 보여지는 원문의 순서 1부터 숫자 형태로 나열을 시작

  • expireSeconds Number

    인증을 할 수 있는 유효시간으로 최대 1800(초)으로 설정 가능

성공응답

// Case1. 앱 푸쉬를 이용해서 서명 요청한 경우의 결과 데이터
// 결과가 조회되는 시점과 동시에 인증 요청으로 전달된 사용자의 토스 앱으로 푸시가 발송됩니다.
{
"resultType": "SUCCESS",
"success": {
"txId": "67ac897f-3a0e-466d-a6f7-c7e4272fd5a9",
"appScheme": null,
"androidAppUri": null,
"iosAppUri": null,
"requestedDt": "2022-03-13T17:52:22+09:00"
}
}
// Case 2. 토스 서버에서 생성하는 앱 스킴을 이용해서 서명 요청한 경우의 결과 데이터
// 생성된 앱스킴 그대로 호출해야 합니다.
{
"resultType": "SUCCESS",
"success": {
"txId": "573ca50b-dfba-4b40-86b7-51bd8759fd1b",
"appScheme": "supertoss://toss-cert/v2/sign/docs?txId=573ca50b-dfba-4b40-86b7-51bd8759fd1b&_minVerAos=5.36.0&_minVerIos=5.10.0",
"androidAppUri": "intent://toss-cert/v2/sign/docs?txId=573ca50b-dfba-4b40-86b7-51bd8759fd1b&_minVerAos=5.36.0&_minVerIos=5.10.0#Intent;scheme=supertoss;package=viva.republica.toss;end",
"iosAppUri": "https://ul.toss.im?scheme=supertoss%3A%2F%2Ftoss-cert%2Fv2%2Fsign%2Fdocs%3FtxId%3D573ca50b-dfba-4b40-86b7-51bd8759fd1b%26_minVerAos%3D5.36.0%26_minVerIos%3D5.10.0",
"requestedDt": "2022-03-13T17:52:22+09:00"
}
}
JSON

실패응답

{
"resultType": "FAIL",
"error": {
"errorType": 0,
"errorCode": "CE0003",
"reason": "잘못된 요청입니다.",
"data": {},
"title": null
},
"success": null
}
JSON

응답 파라미터

  • resultType 필수 · String
    요청 결과 (성공: SUCCESS, 실패: FAIL)
  • errorCode String
    요청이 실패한 경우 반환되는 에러코드 (인증 에러코드 확인하기)
  • reason String
    에러코드에 해당하는 에러 메시지
  • txId String
    서명 요청 트랜잭션 아이디로 거래를 고유할 수 있는 값

    특정 거래를 고유할 수 있는 값이므로 반드시 저장 관리해야 합니다.

  • requestedDt String
    서명 요청 시간

    ISO 8601 형식인 YYYY-MM-DDThh:mm:ss±hh:mm 를 사용합니다.

  • appScheme String

    triggerType이 APP_SCHEME인 경우에만 전달되는 토스인증 앱 스킴

  • androidAppUri String

    triggerType이 APP_SCHEME인 경우에만 전달되는 안드로이드 인증 앱 스킴 값으로 appScheme과 같은 역할을 하지만, Chrome Intent를 사용하기 때문에 고객사의 추가 기능 구현없이 토스 앱 설치 유무를 판별할 수 있는 장점이 있습니다.
    클라이언트에서 호출하는 코드는 아래 가이드를 참고해주세요.

ㄴAndroid Chrome Intent 실행하는 코드

토스앱이 설치되어 있으면 앱스킴을 실행하고 설치 되어있지 않다면 플레이 스토어로 이동해서 토스앱 설치를 유도하는 코드입니다.

Kotlin
val intent = Intent.parseUri(androidAppUri, Intent.URI_INTENT_SCHEME)
try {
startActivity(intent)
} catch (e: ActivityNotFoundException) {
val marketIntent = Intent(Intent.ACTION_VIEW).apply {
data = Uri.parse("market://details?id=" + intent.`package`)
}
startActivity(marketIntent)
}
크롬 인텐트 문서 참고하기
  • iosAppUri String

    triggerType이 APP_SCHEME인 경우에만 전달되는 iOS 인증 앱 스킴 값으로 appScheme과 같은 역할을 하지만, Universal Link를 사용하기 때문에 안드로이드와 마찬가지로 고객사의 추가 기능 구현 없이 토스 앱 설치 유무를 판별할 수 있는 장점이 있습니다.
    클라이언트에서 호출하는 코드는 아래 가이드를 참고해주세요.

ㄴiOS Universal Link 실행하는 코드

토스앱이 설치되어 있으면 앱스킴을 실행하고 설치 되어있지 않다면 앱 스토어로 이동해서 토스앱 설치를 유도하는 코드입니다.

Swift
if let appURL = URL(string: "universal link string") {
UIApplication.shared.open(appURL) { success in
if success {
print("The URL was delivered successfully.")
} else {
print("The URL failed to open.")
}
}
} else {
print("Invalid URL specified.")
}
애플 공식 문서 참고하기

3. 복수 전자서명 상태조회 API

사용자의 전자서명 상태를 확인하기 위한 API로서 txId로 현재의 인증 진행 상태를 확인할 수 있습니다.

사용자의 인증 진행상태를 조회하는 용도로 사용할 수 있고, 상태조회 API의 결과 값으로 인증완료 상태를 처리하지 마세요. 토스에서는 결과조회 API를 기준으로 인증완료를 판별합니다.

EndPoint

POST /api/v2/sign/docs/status

요청

curl --location --request POST 'https://cert.toss.im/api/v2/sign/docs/status' \
--header 'Authorization: Bearer eyJraWQiOiJjZXJ0IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJ0ZXN0X2E4ZTIzMzM2ZDY3M2NhNzA5MjJiNDg1ZmU4MDZlYjJkIiwiYXVkIjoidGVzdF9hOGUyMzMzNmQ2NzNjYTcwOTIyYjQ4NWZlODA2ZWIyZCIsIm5iZiI6MTY0OTIyMjk3OCwic2NvcGUiOlsiY2EiXSwiaXNzIjoiaHR0cHM6XC9cL2NlcnQudG9zcy5pbSIsImV4cCI6MTY4MDc1ODk3OCwiaWF0IjoxNjQ5MjIyOTc4LCJqdGkiOiI4MDNjNDBjOC1iMzUxLTRmOGItYTIxNC1iNjc5MmNjMzBhYTcifQ.cjDZ0lAXbuf-KAgi3FlG1YGxvgvT3xrOYKDTstfbUz6CoNQgvd9TqI6RmsGZuona9jIP6H12Z1Xb07RIfAVoTK-J9iC5_Yp8ZDdcalsMNj51pPP8wso86rn-mKsrx1J5Rdi3GU58iKt0zGr4KzqSxUJkul9G4rY03KInwvl692HU19kYA9y8uTI4bBX--UPfQ02G0QH9HGTPHs7lZsISDtyD8sB2ikz5p7roua7U467xWy4BnRleCEWO2uUaNNGnwd7SvbjhmsRZqohs9KzDUsFjVhSiRNdHL53XJQ5zFHwDF92inRZFLu6Dw8xttPtNHwAD1kT84uXJcVMfEHtwkQ' \
--header 'Content-Type: application/json' \
--data-raw '{
      "txId": "e7d6d2ff-856d-4b75-8558-05ef88a98b01"
    }'

요청 파라미터

  • txId 필수 · String

    상태 확인이 필요한 인증 요청 트랜잭션 아이디

성공응답

{
"resultType": "SUCCESS",
"success": {
"txId": "e7d6d2ff-856d-4b75-8558-05ef88a98b01",
"status": "REQUESTED",
"requestedDt": "2022-02-20T20:22:39+13:00"
}
}
JSON

실패응답

{
"resultType": "FAIL",
"error": {
"errorType": 0,
"errorCode": "CE3100",
"reason": "존재하지 않는 요청입니다",
"data": {},
"title": null
},
"success": null
}
JSON

응답 파라미터

  • resultType 필수 · String

    요청 결과 (성공: SUCCESS, 실패: FAIL)

  • errorCode String

    요청이 실패한 경우 반환되는 에러코드 (인증 에러코드 확인하기)

  • reason String

    에러코드에 해당하는 에러 메시지

  • txId String
    상태를 조회한 인증 요청 트랜잭션 아이디
  • status String
    인증 상태의 종류
    • REQUESTED : 토스 인증서버에서 사용자의 토스 앱으로 인증이 요청된 상태

    • IN_PROGRESS : 사용자가 인증을 진행 중인 상태

    • COMPLETED : 고객이 인증을 완료한 상태

    • EXPIRED : 유효시간 만료로 인증 진행이 불가한 상태

  • requestedDt String
    최초 서명 요청된 시간

    ISO 8601 형식인 YYYY-MM-DDThh:mm:ss±hh:mm 를 사용합니다.

4. 복수 전자서명 결과조회 API

사용자의 서명 결과를 확인하기 위한 API로서 txId로 결과를 조회할 수 있습니다.

결과조회 API는 성공 기준으로 최대 2회까지 조회가 가능합니다.
사용자 인증을 끝마친 후 60분(1시간) 이내 결과조회를 끝내야 합니다. 60분을 초과한 경우 결과조회가 제한되며 인증요청 API부터 다시 시작해야 합니다.

EndPoint

POST /api/v2/sign/docs/result

Case1. 앱 푸쉬 또는 앱 스킴으로 인증된 거래 결과 조회하기

curl --location --request POST 'https://cert.toss.im/api/v2/sign/docs/result' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJraWQiOiJjZXJ0IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJ0ZXN0X2E4ZTIzMzM2ZDY3M2NhNzA5MjJiNDg1ZmU4MDZlYjJkIiwiYXVkIjoidGVzdF9hOGUyMzMzNmQ2NzNjYTcwOTIyYjQ4NWZlODA2ZWIyZCIsIm5iZiI6MTY0OTIyMjk3OCwic2NvcGUiOlsiY2EiXSwiaXNzIjoiaHR0cHM6XC9cL2NlcnQudG9zcy5pbSIsImV4cCI6MTY4MDc1ODk3OCwiaWF0IjoxNjQ5MjIyOTc4LCJqdGkiOiI4MDNjNDBjOC1iMzUxLTRmOGItYTIxNC1iNjc5MmNjMzBhYTcifQ.cjDZ0lAXbuf-KAgi3FlG1YGxvgvT3xrOYKDTstfbUz6CoNQgvd9TqI6RmsGZuona9jIP6H12Z1Xb07RIfAVoTK-J9iC5_Yp8ZDdcalsMNj51pPP8wso86rn-mKsrx1J5Rdi3GU58iKt0zGr4KzqSxUJkul9G4rY03KInwvl692HU19kYA9y8uTI4bBX--UPfQ02G0QH9HGTPHs7lZsISDtyD8sB2ikz5p7roua7U467xWy4BnRleCEWO2uUaNNGnwd7SvbjhmsRZqohs9KzDUsFjVhSiRNdHL53XJQ5zFHwDF92inRZFLu6Dw8xttPtNHwAD1kT84uXJcVMfEHtwkQ' \
# 세션 키는 매 요청 시 새로 생성해야 합니다.
--data-raw '{
       "txId" : "67ac897f-3a0e-466d-a6f7-c7e4272fd5a9",
       "sessionKey" : "v1$0df719b9-8f15-4a0a-bb3f-333cb86d6324$aog+SKCvnFByl4sTNiCMWwSXW1f+XB7pfOa3dYhQUK/E78KmXoorbEa1HUzq8bConDFA4ebnAr+dsWugwLJ7KlUVwHWJu6ukXIHDxJ3Fcj8UxpTsIilQbq/uihi+gJXWfY/RJ11JTHgZiE0QhKKSD8qImLbil5YcGIrcpBC/WH5WwVlipyAhmeACgwtqWCU0V92Kzy7m7+NnHDcnleg5ibKSMjKF+T6ZT9HR3Ahtrpjl1kVYwmWhmBcXsVXTUpm5rzemwaWkq0LjjIn6hRN66KrdZ0AO847jIx+jw1OEsIwOyFdoV+Jd/FGfw+QTZfz7KELG2Nn1rHXc2KaeV8nysJA/OLZDk4XM8+rj5OYA75VSgmg2kpgLfkeG+wNEr2fheecL3tIN2vQRLVJZb3lJejoL7AU+jOGPzUE6omKnXVvEkrU81WvxWlbO/ICjU6v72qrwf3p72uwrytkPaXedZ30XpECCUKBHRJBR3UpLdJj3mvafQynO8g3uau1WF3x/xPFTcQFG9uhpxCU0tOjTAZs55+Dds+oNVctzqj6c+8P5K6DWGcN8Qw3m9Cc+Q97Ci+otcGdf889yCBmNI44E2pj07lWiFyGktrZpW9dORnSRDj6dgqeNF4mcpDFSrSIy2V1NnLgt6lHaGuHL3/Jcy792uLpFhM7qTTltSZybKg4="
  }'

요청 파라미터

  • txId 필수 · String

    결과 확인이 필요한 서명 요청 트랜잭션 아이디

  • sessionKey String

    API에서 사용자의 개인정보 전달이 필요한 경우 즉, 앱 푸쉬 또는 앱 스킴 방식으로 인증을 진행한 경우 txId와 함께 sessionKey를 전달해야 합니다. 토스 서버에서 결과조회의 응답으로 암호화된 개인정보를 전달하기 때문입니다.

    인증 요청과 응답을 AES 암복호화 할 때 사용되는 세션 키로 매 요청 시 마다 새로 생성해서 암호화된 개인정보와 함께 전달해야 하고, 인증 요청에서 사용된 세션 키를 재 사용하지 마세요.

    세션키 생성 방법 확인하기

성공응답

// 결과조회 응답에서는 인증을 호출하는 방식에 상관없이 동일한 바디 파라미터를 제공합니다.
{
"resultType": "SUCCESS",
"success": {
"txId": "67ac897f-3a0e-466d-a6f7-c7e4272fd5a9",
"status": "COMPLETED",
"docList": [
{
"docType": "TEXT",
"docTitle": "통합 금융정보 서비스 약관",
"doc": "본 약관은 주식회사 비바리퍼블리카(이하 회사)가 제공하는 통합 금융정보 서비스 또는 전자문서 서비스(이하 서비스)의 이용과 관련하여, 회사와 회원 간의 권리와 의무 및 책임사항과 서비스 이용조건 및 절차 등 기본적 사항을 규정함을 목적으로 합니다.(이하생략)",
"docEncrypted": false,
"signatureType": "PKCS7",
"order": 1
},
{
"docType": "TEXT",
"docTitle": "이용자의 권리 및 유의사항",
"doc": "회원은 개인신용정보의 주체이며, 당사에서는 정보주체인 회원의 권리를 보호하기 위해 아래와 같은 이용자 보호 제도를 시행하고 있습니다.(이하생략)",
"docEncrypted": false,
"signatureType": "PKCS7",
"order": 2
}
],
"signedDocList": [
{
"signedDoc": "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",
"signatureType": "PKCS7",
"order": 1
},
{
"signedDoc": "MIIJIAYJKoZIhvcNAQcCoIIJETCCCQ0CAQExDzANBglghkgBZQMEAgEFADCB2wYJKoZIhvcNAQcBoIHNBIHK7ZqM7JuQ7J2AIOqwnOyduOyLoOyaqeygleuztOydmCDso7zssrTsnbTrqbAsIOuLueyCrOyXkOyEnOuKlCDsoJXrs7Tso7zssrTsnbgg7ZqM7JuQ7J2YIOq2jOumrOulvCDrs7TtmLjtlZjquLAg7JyE7ZW0IOyVhOuemOyZgCDqsJnsnYAg7J207Jqp7J6QIOuztO2YuCDsoJzrj4Trpbwg7Iuc7ZaJ7ZWY6rOgIOyeiOyKteuLiOuLpC4o7J207ZWY7IOd6561KaCCBiUwggYhMIIECaADAgECAgN6WcQwDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBgwCS1IxGzAZBgNVBAoMElZpdmEgUmVwdWJsaWNhIEluYzESMBAGA1UECwwJVG9zcyBDZXJ0MREwDwYDVQQDDAhUb3NzIENBMTAeFw0yMjA0MjUwNzM0MjBaFw0yNTA0MjQxNDU5NTlaMHwxCzAJBgNVBAYTAktSMRswGQYDVQQKDBJWaXZhIFJlcHVibGljYSBJbmMxEjAQBgNVBAsMCVRvc3MgQ2VydDEoMCYGCgmSJomT8ixkAQEMGDcwMDI3MjMyMDIxMTEzMDgwMjAwOTk5MTESMBAGA1UEAwwJ6rmA7IiY67mIMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoBvIv6jTUpOMsnJIKVZ4uO+C6mC8rnHgPHFky6Tzv17oQcVrin0UZbdXiOuUM4/HtpK860KsiI+nXPRLKp0c1NTxHHrVFdYqp061CAUsZT/XEGO83m40/uKhBo58jYhYaWhp8saKNGRGalm29mLvFmHbBHARLWiXRd+eFW+8eGlw1RaEs3JNcPKUVfBQipNItB1xJmxVtpBu1+L+2rFlwV+1Opqnb6mLOrIxot3X1DTWhwTFrG1DsEek+raGTOoJTYjbhPY1hPiY7q5ozgdZSWlzAM4eQ9oBjCV8GBHd3rmfG/CQL7GDtw3l/EO8lmiZKNT2C3Z54E5iM2LWS2skIwIDAQABo4IB1TCCAdEwfgYDVR0jBHcwdYAUIOEEYoA6EFhC3FSBskx+jPX3qh+hWqRYMFYxCzAJBgNVBAYMAktSMRswGQYDVQQKDBJWaXZhIFJlcHVibGljYSBJbmMxEjAQBgNVBAsMCVRvc3MgQ2VydDEWMBQGA1UEAwwNVG9zcyBSb290IENBMYIBAjAdBgNVHQ4EFgQUqv1RzK4DEK/bXBXJHFQHFsU0eSAwDgYDVR0PAQH/BAQDAgbAMIGLBgNVHSABAf8EgYAwfjB8BgsqgxqMmyIFAQEBAzBtMCsGCCsGAQUFBwIBFh9odHRwOi8vY2EuY2VydC50b3NzLmltL2Nwcy5odG1sMD4GCCsGAQUFBwICMDIeMABUAGgAaQBzACAAaQBzACAAVABvAHMAcwAgAGMAZQByAHQAaQBmAGkAYwBhAHQAZTBbBgNVHR8EVDBSMFCgTqBMhkpodHRwOi8vY2EuY2VydC50b3NzLmltL2NybC90b3NzX2NybF9kcDJwMjY3My5jcmw/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLmNlcnQudG9zcy5pbS8wDQYJKoZIhvcNAQELBQADggIBABMZMHRRvYZszPGTFKsKbjUo+iSg1XOSECH0YfWtD/mD0SSsWon8IWRudFb0i/H0RsAIM9wY2aQPPdxAUgxTxatt7BnD0UZkULX5hWmOTkhFB6/+1OTLhLlc/8Hlz0qWsdTBnE3zYD4XpWsYD0E0f0kOmAam3sebFToRsripFQ17+9XbgQ9FhTapF1ykDDf3Ywyvm5p5aTGwQqFXGlVgqn70mAy2g5ogPMuqWNRdGkK7RTTTvrQ6LBAEh2HIhVF81eJzTTS9gsdVUNiayIPMjYrm7hhtLskNtUeet7mGfYk1iKE9uGknUqBLKMMWAV0srA+OVMfTmmybqgSaL+duh1v8BAXdYzdRrAHaLvIYhJFzjw7kVDQknAKkb21C+OeLbsyY5DtsyQe+BsG7B59S4sqZ/CHibD11VkcXIxT80FHkfeYlkhspth+bAIIuj0XTIiEctBy2W/4IWeaCHNkU4jPDK8qhuB0C6E2m+fITZb+OXJEOGMRMVgegqSg1JQcTDaxfWu9roGB49BbFC6DmPc3CJrzESmDWwOHXcoG0XjcLeolNe3b107ggAb4J61DtdgVSx7YQMOSDh2gdj4QZI2Fm98SNpeIk+pAbNaRcKnXtQK/SRq1kzb68+pfVjd21QrgXrlCtPtc158ylPY0Qgef8jouXdicq9MouLw9mGx6aMYIB7jCCAeoCAQEwWDBRMQswCQYDVQQGDAJLUjEbMBkGA1UECgwSVml2YSBSZXB1YmxpY2EgSW5jMRIwEAYDVQQLDAlUb3NzIENlcnQxETAPBgNVBAMMCFRvc3MgQ0ExAgN6WcQwDQYJYIZIAWUDBAIBBQCgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0yMjA0MjUxNjE2MTNaMC8GCSqGSIb3DQEJBDEiBCC5tccCVRatDEpivxeic/sDkTBH8suaVONHAr5fsPzQFDANBgkqhkiG9w0BAQEFAASCAQBjjDz273rIuECzcDPINZ1+H6a7a1CIm1h4IwO6ADvFCm9JfS7cl96wOQzfdZAap+Nc4Yjkm57AKlwuW0lWz6LWecpAP3I5ymLFM/+A0NbI6rJa8SWqulRQup8nbqy3EWbG8TF8gLPCUXKy4n6BWnuTkgfg2UqGYvCSRiYGOoGmmlrIIc1eLREXYX8iCjeGm1an61iDyCJa53tIpyGxzL1dljrtPVTPYXI7sayRp+rJF+VjYkd4dHlHq0JO1l8VRimupVZZi1mtOhwFShwgq80GQkVLzD/ZCcmEqErUau5ypZbfO9OXZadKxFJoTAuDvPMOdIEsLPe7ZTGxM4bBCPVS",
"signatureType": "PKCS7",
"order": 2
}
],
"randomValue": null,
"userCiToken": null,
"completedDt": "2022-04-26T01:16:14+09:00",
"requestedDt": "2022-04-26T01:16:00+09:00",
"personalData": {
"ci": "v1$b88f8717-8e76-4276-bed0-f769a8baf7be$X3g52aAyCBirz0UVp1oNRq0SfGtj66vGtUT3rp1aSdm1h//xmpm7vdf48fbGI2i7VTBj6TKG2rqanP6Yo9MiTQu63C8kLWayzWAMp+RLyXLovvnFb9SxxdblRtZbj5KRNlBWK9t2VXI=",
"name": "v1$b88f8717-8e76-4276-bed0-f769a8baf7be$9oiJBRei1KI/SgXtXGmkfNHu+pdAUHXBxA==",
"birthday": "v1$b88f8717-8e76-4276-bed0-f769a8baf7be$LQgw26ExChwWi8cQQz6GrdMAdMZGyaEI",
"gender": "v1$b88f8717-8e76-4276-bed0-f769a8baf7be$WnREqd1HM/Ci7p+3KIqROusVkYeSAQ==",
"nationality": "v1$b88f8717-8e76-4276-bed0-f769a8baf7be$UH5Kqd3dPV1daxw0i23eMWjeXcXC",
"ci2": null,
"di": "v1$2e161d9d-e620-443e-9a27-8db41cc96cf9$6GKr2zaUWWfI6rpJ6/AV9U4W0S4nhAMFIFLkt5CS6N8Gjb1Oc/dpitkMSSvLroDO5b6zdl9bufGSQ6SiVQdlYN2OWYFBr/Hb4e4AYwQpFxDbpi9ksYt52aFa3G2DwaNOQMUBkyQ1IWc=",
"ciUpdate": null
}
}
}
JSON

실패응답

{
"resultType": "FAIL",
"error": {
"errorType": 0,
"errorCode": "CE3101",
"reason": "최종 결과는 2회만 조회할 수 있습니다.",
"data": {},
"title": null
},
"success": null
}
JSON

응답 파라미터

  • resultType 필수 · String

    요청 결과 (성공: SUCCESS, 실패: FAIL)

  • errorCode String

    요청이 실패한 경우 반환되는 에러코드 (인증 에러코드 확인하기)

  • reason String

    에러코드에 해당하는 에러 메시지

  • txId String
    결과를 조회한 서명 요청 트랜잭션 아이디
  • status String

    COMPLETED

    결과 조회가 정상적으로 됐을 때 반환되는 상태

  • docList Array

    전자서명 원문 이력이 담기는 배열입니다.

  • docType String
    원문의 형태

    복수 전자서명 요청에서 선언한 TEXT 또는 HTML입니다.

  • docTitle String

    복수 전자서명 요청에서 전달한 전자서명 원문 제목

  • doc String

    복수 전자서명 요청에서 전달한 원문 내용

  • docEncrypted Boolean

    복수 전자서명 요청에서 전달한 원문 암호화 여부

  • signatureType String

    전자서명 방식으로 기본은 PKCS7 으로 고정

  • order Number

    복수 전자서명 요청에서 전달한 원문의 순서

  • signedDoc Array

    전자서명 결과 이력이 담기는 배열입니다.

  • signedDoc String
    사용자가 서명한 전자서명 정보

    Base64인코딩된 DER값으로 사용자 식별을 위해 txId와 함께 반드시 저장 관리 해야 합니다.

    인증서 유효성 확인하는 방법 알아보기
  • signatureType String

    전자서명 방식으로 기본은 PKCS7으로 고정

  • order String

    전자서명된 원문의 순서

  • randomValue String

    현재 버전에서 미사용으로 null 고정

  • userCiToken String

    현재 버전에서 미사용으로 null 고정

  • completedDt String
    사용자가 서명을 끝마친 시간

    ISO 8601 형식인 YYYY-MM-DDThh:mm:ss±hh:mm 를 사용합니다.

  • requestedDt String
    최초 서명 요청된 시각

    ISO 8601 형식인 YYYY-MM-DDThh:mm:ss±hh:mm 를 사용합니다.

  • personalData Object
    인증을 진행한 사용자의 개인정보입니다.
    토스 테스트 환경에서는 아래 모든 개인정보를 제공하지만 실제 토스 앱으로 테스트한 사용자의 개인정보가 아닌 토스가 생성한 가상 인물의 개인정보를 암호화해서 전달합니다.

    라이브 환경에서는 사업자가 바로 신청하기에서 신청한 개인정보만 String 형태로 전달됩니다.

  • ci String

    암호화된 사용자의 ci

  • name String

    암호화된 사용자의 이름

  • birthday String

    암호화된 사용자의 생년월일 8자리

  • gender String

    암호화된 사용자의 성별정보로 MALE 또는 FEMALE

  • nationality String

    암호화된 사용자의 국적정보로 LOCAL 또는 FOREIGNER

  • ci2 String

    예측할 수 없는 상황에서 ci 유출 대응을 위한 임시 파리미터로 null 고정

  • di String

    암호화된 사용자의 di

  • ciUpdate String

    예측할 수 없는 상황에서 ci 유출 대응을 위한 임시 파리미터로 null 고정

  • 더 궁금한 내용이 있나요?