[아임포트] 휴대폰 본인인증 API 연동

[아임포트] 휴대폰 본인인증 API 연동

728x90

반응형

개발 환경 : Laravel Framework, php

상세 API 정보는 아래를 참고 하길 바란다.

docs.iamport.kr/tech/mobile-authentication

1. 아임포트 라이브러리 추가하기

jQuery 기반이기 때문에 jQuery라이브러리를 추 가해줘야 한다.

2. 가맹점 식별코드 추가

let IMP = window.IMP; // <- 생략해도 무방함. IMP.init("본인가맹점고유번호");

init function 인자로 본인 가맹점 고유번호를 입력한다.

3. 인증창 호출

IMP.certification( //파라미터 생략시 빈 object는 입력해줘야한것 같음. 제거 시 모듈 동작 안함. {}, function (rsp) { //본인인증 성공 프로세스 if (rsp.success) { } //본인인증 실패 프로세스 else{ alert("인증에 실패하였습니다. 에러 내용: " + rsp.error_msg); } } );

추가 가능한 파라미터도 있으니 docs를 참고하여 필요한 파라미터가 있다면, 추가해 주면 된다.

파라미터 사용 안할 시 빈 object를 입력해줘야 할 것 같다. 제거 시 모듈 동작 안하는 현상 발생함.

4. 본인 웹서버에 imp_uid(고유번호) 전달하기

IMP.certification( function (rsp) { //인증 성공시 if (rsp.success) { // jQuery로 본인 웹서버로 요청 $.ajax({ type: 'POST', url: '인증정보 조회할 본인 웹서버 API 경로', dataType: 'json', data: {'imp_uid' : rsp.imp_uid}, }); }else{ alert("인증에 실패하였습니다. 에러 내용: " + rsp.error_msg); } }); //callback rsp 인자 값 { error_code: null error_msg: null imp_uid: "고유인증값" merchant_uid: "주문번호(신경안써도됌)" pg_provider: "danal" //PG사 pg_type: "certification" //PG타입(본인인증) success: true // 성공 }

5. 서버에서 인증 정보 조회하기

인증 정보를 조회할 route를 추가해 준다.

※본인 인증 후 정보 조회 시 휴대폰 번호 값을 response로 받을려면 아임포트 측에 별도로 신청을

해줘야 값을 가져올 수 있음!!

//web.php Route::post('/iamport/certificate', [Controller::class,'certificate']); //Controller function certificate(Request $request){ //아임포트 관리자 페이지의 시스템설정->내정보->REST API 키 값을 입력한다. $imp_key = "REST API 키"; //아임포트 관리자 페이지의 시스템설정->내정보->REST API Secret 값을 입력한다. $imp_secret = "REST API Secret"; //본인인증 모듈을 호출한 페이지에서 ajax로 넘겨받은 imp_uid값을 저장한다. $imp_uid = $request->input('imp_uid'); try{ $getToken = Http::withHeaders([ 'Content-Type' => 'application/json' ])->post('https://api.iamport.kr/users/getToken', [ 'imp_key' => $imp_key, 'imp_secret' => $imp_secret, ]); /** * 본인인증한 사람의 정보를 얻기 위해서는 아임포트 API 통신을해야 한다. * api access_key를 얻기위해 아임포트에서 제공되는 imp_key,imp_secret을 이용하여 * 아래 api로 token을 얻는다. * return 값이 json이므로 decode하여 원하는 값을 들고온다. */ $getTokenJson = json_decode($getToken, true); //API TOKEN $access_token = $getTokenJson['response']['access_token']; $getCertifications=Http::withHeaders([ 'Authorization' => $access_token ])->get('https://api.iamport.kr/certifications/'.$imp_uid); $getCertificationsJson = json_decode($getCertifications,true); $responseData = $getCertificationsJson['response']; $result = ['code'=>200, 'message'=>'success','data'=>$responseData]; }catch(Exception $e){ $result = [ 'code' => 410, 'message' => $e->getMessage() ]; } return response()->json($result); } //$responseData 상세 값 { "birth":, //무슨 표기법으로 표시한지 모르겠음. "birthday":"YYYY-MM-DD", "carrier":"SKT", //통신사 "certified":true, //인증 성공 여부 "certified_at":인증날짜, "foreigner":false, //외국인 여부 "gender":"male", // 성별 "imp_uid":"인증고유값", "merchant_uid":"신경안써도되는값", "name":"이름", "origin":"요청URL", "pg_provider":"danal", //PG사 "pg_tid":"요청일시", "phone":"휴대폰번호", "unique_in_site":"뭔지 모르겠음", "unique_key":"뭔지 모르겠음" }

위 값을 파싱하여 본인인증에 사용하던, 계정 중복을 체크하던 필요한 부분에 사용하면 될 것 같음.

본인은 웹뷰로 데이터를 넘겨주기만 하면 되기때문에 데이터 전체를 return 해줬음.

document에 상세히 적혀 있어서 연동하는 부분은 어렵지 않았다!

728x90

반응형

from http://wondongho.tistory.com/188 by ccl(A) rewrite - 2021-03-17 16:26:39