[최종 구현 서비스]
포트원을 이용한 본인 인증을 구현해보려고 한다.
해당 사이트에서 어떤 api 로 본인인증을 할 것인지 골라야 한다. 보통은 아래처럼 다날 서비스를 많이 이용하는데 다날은 한 건당 50원이 발생하여 포기... 테스트잖아 이것 드라.. 왜 돈 받는데 그래서 나는 kg이니시스 본인 인증으로 진행했다. 아직 가난한 취준생이니까..
[테스트 연동]
결제 api 를 진행했던 순서와 비슷하다. 똑같이 결제연동을 해주면 되고 kg이니시스의 본인인증 기능을 테스트 버전으로 등록한다.
혹시 결제 api 순서를 보고 싶으면 아래의 링크로!
[문서 읽기]
포트원에서 제공하는 KG이니시스 통합본인인증 문서를 읽어보자. 거의 결제구현과 비슷한 것 같다.
[통합인증 준비하기]
클라이언트 사이드 측에 이렇게 script에 작성해 준다.
<!-- 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.6.js"></script>
본인인증 페이지에 가맹점 식별코드를 이용하여 IMP 객체를 초기화한다.
var IMP = window.IMP; // 생략 가능
IMP.init("{가맹점 식별코드}");
[통합인증 요청하기]
요청 방식에는 팝업과 리다이렉트 방법이 있는데 나는 리다이렉트 방식을 택했다. 고객이 인출 버튼을 본인인증 팝업창이 나오게 될 메서드에 아래와 같이 작성해준다.
// IMP.certification(param, callback) 호출
IMP.certification({ // param
pg:'inicis_unified.{CPID}',//본인인증 설정이 2개이상 되어 있는 경우 필수
merchant_uid: "ORD20180131-0000011", // 주문 번호 개인적으로 설정 가능
m_redirect_url : "{리디렉션 될 URL}",
}, function (rsp) { // callback
if (rsp.success) {
...,
// 인증 성공 시 로직,
...
} else {
...,
// 인증 실패 시 로직,
...
}
});
[인증 완료 정보 전달하기]
인증이 완료 되면 반환되는 응답 객체의 인증 성공 여부에 따라 로직을 처리한다.
IMP.certification({
//아까 작성한 인증 요청 로직
}, function (rsp) { // callback
if (rsp.success) { // 인증 성공 시
$axios({
url: "{서버의 인증 정보를 받는 endpoint}",
method: "POST",
headers: { "Content-Type": "application/json" },
data: { imp_uid: rsp.imp_uid }
});
} else {
alert("인증에 실패하였습니다. 에러 내용: " + rsp.error_msg);
}
});
[인증 정보 조회 및 활용]
인증 정보를 조회하기 위해서 먼저 REST API access token을 발급받는다. 발급받은 액세스 토큰과 imp_uid로 본인인증 결과조회를 호출하여 인증 정보를 조회하면 된다. 인증 정보는 이름, 생년월일, 휴대폰번호등을 제공하고 있다. 원하는 걸 골라서 입맛에 맞게 사용하면 될 것 같당
@Service
public class CheckinfoService {
// 인증코드로 token요청하고 사용자 phone과 이름 빼내기
public HashMap getAccessToken(String impUid) {
HashMap map = new HashMap<>();
System.out.println("impUid");
String impKey = "본인키";
String impSecret = "본인시크릿코드";
String strUrl = "https://api.iamport.kr/users/getToken"; // 토큰 요청 보낼 주소
String access_token = " ";
String phone = "";
String name = "";
try {
URL url = new URL(strUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // url Http 연결 생성
// POST 요청
conn.setRequestMethod("POST");
conn.setDoOutput(true);// outputStreamm으로 post 데이터를 넘김
conn.setRequestProperty("content-Type", "application/json");
conn.setRequestProperty("Accept", "application/json");
// 파라미터 세팅
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream()));
JSONObject requestData = new JSONObject();
requestData.put("imp_key", impKey);
requestData.put("imp_secret", impSecret);
bw.write(requestData.toString());
bw.flush();
bw.close();
int resposeCode = conn.getResponseCode();
System.out.println("응답코드 =============" + resposeCode);
if (resposeCode == 200) {// 성공이면 빼낼 로직
}
}
'프로젝트 > Plan + tiful (플랜티플)' 카테고리의 다른 글
[Rest Api] 포트원 API를 이용한 본인인증 구현 (feat. vue.js) - (3) (0) | 2023.07.22 |
---|---|
[Rest Api] 포트원 API를 이용한 본인인증 구현 (feat. vue.js) - (2) (0) | 2023.07.21 |
[Rest Api] 아임포트를 이용한 KG이니시스 결제 구현하기 (feat. vue.js) - (2) (0) | 2023.07.16 |
[Rest Api] 아임포트를 이용한 KG이니시스 결제 구현하기 (feat. vue.js) - (1) (0) | 2023.07.15 |
vue.js 애니메이션 적용된 네비게이션 바 만들기 (0) | 2023.07.12 |