본인인증 완료이후 획득한 **imp_uid**를 이용하여 고객 인증정보를 조회할 수 있습니다.
STEP 01. 인증정보(imp_uid) 서버단에서 획득하기
아래는 본인인증 앞단에서 넘어온 값을 서버단에서 수신받은 예제 입니다.
server-side
app.use(bodyParser.json());...// "/certifications"에 대한 POST 요청을 처리하는 controllerapp.post("/certifications",async (request, response) => {// request의 body에서 imp_uid 추출const { imp_uid } =request.body; })
server-side
app.use(bodyParser.json());...// "/certifications/redirect"에 대한 GET 요청을 처리하는 controllerapp.get("/certifications/redirect",async (request, response) => {const { imp_uid } =request.query; // request의 query에서 imp_uid 추출})
STEP 02. 인증 정보 조회하기
포트원 서버에서 인증 정보를 조회하기 위해서 먼저 REST API access token을 발급받습니다. 발급받은 액세스 토큰(access_token)과 인증번호(imp_uid)로 본인인증 결과조회 REST API 를 호출하여 인증 정보를 조회하는 예제입니다.
server-side
app.use(bodyParser.json());...// "/certifications"에 대한 POST 요청을 처리하는 controllerapp.post("/certifications",async (request, response) => {const { imp_uid } =request.body; // request의 body에서 imp_uid 추출try {// 인증 토큰 발급 받기constgetToken=awaitaxios({ url:"https://api.iamport.kr/users/getToken",// POST method method:"post",// "Content-Type": "application/json" headers: { "Content-Type":"application/json" }, data: { imp_key:"imp_apikey",// REST API키 imp_secret: "ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f" // REST API Secret
} });const { access_token } =getToken.data; // 인증 토큰...// imp_uid로 인증 정보 조회constgetCertifications=awaitaxios({// imp_uid 전달 url: \`https://api.iamport.kr/certifications/\${imp_uid}\`, // GET method method: "get", // 인증 토큰 Authorization header에 추가 headers: { "Authorization": access_token } }); const certificationsInfo = getCertifications.data; // 조회한 인증 정보 ... } catch(e) { console.error(e); } });
STEP 03. 인증 정보 활용하기
조회한 인증 정보에서 다음의 고객 정보를 추출하는 서비스 코드 예제입니다.
name: 이름
gender: 성별
birth: 생년월일
unique_key: CI 값과 동일. 온라인 주민번호와 같은 개인고유식별키
unique_in_site: DI 값과 동일. 상점아이디(사이트)별로 할당되는 식별키
unique_key와 unique_in_site
본인인증에 사용된 신용카드가 여러 장이어도 신용카드 소유자가 같다면 매번 unique_key 와 unique_in_site는 같은 값이 응답됩니다.
Node.js
// "/certifications"에 대한 POST 요청을 처리하는 controllerapp.post("/certifications",async (request, response) => {const { imp_uid } =request.body; // request의 body에서 imp_uid 추출try {// 인증 토큰 발급 받기/* ...중략... */// imp_uid로 인증 정보 조회/* ...중략... */constcertificationsInfo=getCertifications.data; // 조회한 인증 정보// unique_key: 개인식별 고유 키, unique_in_site: 사이트 별 개인식별 고유 키const { unique_key,unique_in_site,name,gender,birth } = certificationsInfo;...// 연령 제한 로직if (newDate(birth).getFullYear() <=1999) {// 연령 만족 } else {// 연령 미달 }...// 1인 1계정 허용 로직// DB에서 unique_key 조회 후 가입여부 검사Users.find({ certificationKey: unique_key }).then((user) => {if (!user) {// 신규 고객 } else {// 이미 가입된 고객 } }); } catch(e) {console.error(e); } });