본인인증

본인인증 개요

실명·성인·명의 확인을 휴대폰 본인인증 한 번으로 끝내요.

본인인증은 휴대폰(통신사) 또는 PASS 앱으로 사용자가 본인임을 확인​​하고, 이름·생년월일·성별·내외국인·통신사와 CI/DI 같은 식별값을 받아오는 기능이에요. 회원가입 실명 확인, 성인 콘텐츠 인증, 명의 도용 방지, 고액 결제 전 본인 확인 등에 사용해요.

결제와는 별개예요

본인인증은 돈이 오가는 결제가 아니라 신원 확인​​만 수행해요. 결제 직전 본인 확인이 필요하면 본인인증을 먼저 끝내고, 그 결과(CI/DI)를 결제·회원 흐름과 연결해요.

무엇을 받을 수 있나

인증이 완료되면 authenticate_data로 아래 값을 받아요.

필드 설명
name 인증된 실명
phone 인증에 사용한 휴대폰번호
birth 생년월일
gender 성별. Integer — 0 여성, 1 남성
foreigner 내외국인 여부. PG마다 타입이 달라요 — 다날은 PG 원본 문자열("0" 내국인 / "1" 외국인), KCP는 Integer(0 / 1)로 변환돼서 전달돼요
carrier 통신사. String — SKT / KT / LGT
unique CI — 사용자별 고유 식별값(연계정보). 같은 사람이면 어느 가맹점에서 인증해도 같은 값
di DI — 가맹점(사이트)별 고유 식별값(중복가입 확인정보). 같은 사람이라도 가맹점마다 다른 값
tid PG사 거래 고유 ID
CI와 DI를 어디에 쓰나
  • CI​​는 어느 서비스에서 인증해도 동일하므로, 같은 사람을 식별하거나 타 서비스와 연계할 때 사용해요. (88byte 고유값)
  • DI​​는 우리 서비스 안에서만 동일하므로, 중복 가입 방지​​에 사용해요.
  • 두 값 모두 개인정보이므로 암호화 저장​​하고, 외부에 노출하지 않아요.

두 가지 연동 방식

본인인증은 목적에 따라 두 가지로 연동해요.

방식 화면 구성 언제 쓰나 문서
SDK 본인인증 PG가 제공하는 인증창 UI를 그대로 사용 가장 일반적. 프론트에서 requestAuthentication()만 호출하면 통신사 선택·OTP 입력 화면까지 PG가 처리 SDK 본인인증
REST API 본인인증 인증 UI를 가맹점이 직접 구성 자체 디자인의 입력 폼이 필요하거나, 서버가 SMS/PASS 발송·검증을 직접 통제해야 할 때 REST API 본인인증
어떤 걸 골라야 하나

대부분은 SDK 본인인증​​으로 충분해요. 인증창 화면을 직접 만들고 OTP 발송·재전송·검증을 단계별로 제어해야 하는 경우에만 REST API 본인인증​​을 사용해요.

전체 흐름

본인인증 요청

SDK 방식은 프론트에서 requestAuthentication()을, REST 방식은 서버에서 POST /v2/request/authentication을 호출해요.

사용자 인증

사용자가 통신사 선택 → 정보 입력 → SMS OTP 또는 PASS 앱으로 인증을 완료해요.

결과 수신

SDK 방식은 done 이벤트로 receipt_id를 받고, REST 방식은 OTP 검증(confirm) 응답으로 authenticate_data를 받아요.

결과 검증 (필수)

SDK 방식에서 받은 결과는 위변조될 수 있으므로, 서버에서 GET /v2/certificate/{receipt_id}다시 조회​​해 authenticate_data를 확정해요.

결과는 서버에서 확인해요

결제 검증과 마찬가지로, 프론트엔드에서 받은 본인인증 결과만 믿고 회원 실명·성인 여부를 확정하면 안 돼요. 반드시 서버에서 receipt_id결과 조회 API를 호출해 확인해요.

본인인증 상태값

status 의미 설명
50 본인인증준비 인증 요청이 막 생성된 내부 초기 상태
51 본인인증승인전 SMS/PASS 발송 완료, OTP 검증(승인) 대기 상태
12 본인인증완료 인증이 완료되어 authenticate_data를 받을 수 있는 상태
-50 본인인증실패 인증 요청·발송 단계에서 실패한 상태
-12 본인인증승인오류 OTP 승인 단계에서 실패한 상태
상태값을 다룰 때 알아둘 점
  • 50은 요청 처리 중에만 잠깐 머무는 내부 초기 상태라, 요청 API 응답에서는 발송까지 끝난 51로 관측​​돼요.
  • 한글 상태 라벨은 12(본인인증완료)에만 정의돼 있어요. 50·51·-50·-12 상태에서는 status_locale 키 자체가 응답에서 빠져요​. 응답에 status_locale이 있다고 가정하고 파싱하면 안 돼요.

준비물

  • 본인인증 가능한 PG 계약 (예: 다날). 관리자 콘솔에서 본인인증 PG를 활성화해요.
  • 백엔드 연동키(Client Key / Secret Key). 결과 조회·REST 인증은 서버에서 Basic Auth로 호출해요.

다음 단계

  • 인증창 UI를 PG에 맡기는 일반 연동은 SDK 본인인증을 확인해요.
  • 인증 화면을 직접 만들고 OTP를 단계별로 제어하려면 REST API 본인인증을 확인해요.