반응형
개발 환경 : Laravel Framework, php
상세 API 정보는 아래를 참고 하길 바란다.
docs.iamport.kr/tech/mobile-authentication
1. 아임포트 라이브러리 추가하기
jQuery 기반이기 때문에 jQuery라이브러리를 추 가해줘야 한다.
<!-- jQuery -->
<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js" ></script>
<!-- iamport.payment.js -->
<script type="text/javascript" src="https://cdn.iamport.kr/js/iamport.payment-1.1.5.js"></script>
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에 상세히 적혀 있어서 연동하는 부분은 어렵지 않았다!
반응형
'API' 카테고리의 다른 글
[아임포트] 일반 결제 API 연동 (1) | 2021.03.18 |
---|---|
[KakaoMapAPI] 좌표로 주소 알아내기 (0) | 2020.12.03 |
[KakaoMapAPI] 커스텀오버레이 표시 및 클릭 시 원을 그리는 이벤트 구성 (0) | 2020.12.03 |
[KakaoMapAPI] 지도에 마커 생성하기 (0) | 2020.12.03 |
[KakaoMapAPI] 웹 페이지에 지도 표시하기 (0) | 2020.12.03 |
댓글