연동매뉴얼

Java API

(Spring / SpringBoot / JSP)

kakaoCert SpringBoot 튜토리얼

Java - SpringBoot 개발환경에서 kakaoCert Java SDK를 추가하여 자동이체 출금동의 요청 기능을 구현하는 예시입니다.

1. Gradle을 이용한 kakaocert SpringBoot Starter 추가JDK v1.8SpringBoot v2.6.0

① kakaocert SpringBoot Starter 추가를 위해 SpringBoot 프로젝트 "build.gradle" 파일에 dependency 정보를 추가 후 Refresh 합니다.

※ kakaocert SpringBoot Starter는 SpringBoot v1.0 이상에서 사용 가능하며 kakaocert Java SDK AutoConfiguration을 지원합니다.

dependencies {
    implementation 'kr.co.linkhub:kakaocert-spring-boot-starter:1.2.0'
}

② SDK 설정을 위해 아래의 코드를 appllication.yml 파일에 추가합니다.

kakaocert:
  #링크허브에서 발급받은 파트너 링크아이디.
  linkId: TESTER
  #링크허브에서 발급받는 비밀키.
  secretKey: SwWxqU+0TErBXy/9TVjIPEnI0VTUMMSQZtJf3Ed8q3I=
  #이용기관코드, 파트너가 등록한 이용기관의 코드, (파트너 사이트에서 확인가능)
  clientCode: '020040000001'
  #인증토큰 발급 IP 제한 On/Off, true-사용, false-미사용, 기본값(true)
  isIpRestrictOnOff: true
  #카카오써트 API 서비스 고정 IP 사용여부, true-사용, false-미사용, 기본값(false)
  useStaticIp: false
  #로컬시스템 시간 사용여부 true-사용, false-미사용, 기본값(true)
  useLocalTimeYN: true

2. 자동이체 출금동의 요청 기능 구현

① 서비스 클래스 빈 객체 추가를 위해 @Autowired 어노테이션과 RequestCMS 함수 코드를 추가합니다.

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.kakaocert.api.KakaocertException;
import com.kakaocert.api.KakaocertService;
import com.kakaocert.api.cms.RequestCMS;
import com.kakaocert.api.cms.RequestCMS;

@Controller
public class KakaocertController {
  @Autowired
  private KakaocertService kakaocertService;
  
  // 이용기관코드
  // 파트너가 등록한 이용기관의 코드, (파트너 사이트에서 확인가능)
  @Value("${kakaocert.clientCode}")
  private String ClientCode;
  
  @RequestMapping(value = "/RequestCMS", method = RequestMethod.GET)
  public String RequestCMS(Model m) {
    try {
    
      // AppToApp 인증요청 여부
      // true - AppToApp 인증방식, false - Talk Message 인증방식
      boolean isAppUseYN = false;
      
       // 자동이체 출금동의 요청 정보 Object
      RequestCMS request = new RequestCMS();
      
      // 고객센터 전화번호  , 카카오톡 인증메시지 중 "고객센터" 항목에 표시
      request.setCallCenterNum("1600-9999");
      
      // 고객센터명  , 카카오톡 인증메시지 중 "고객센터명" 항목에 표시
      request.setCallCenterName("고객센터명");
      
      // 인증요청 만료시간(초), 최대값 : 1000  인증요청 만료시간(초) 내에 미인증시, 만료 상태로 처리됨 (권장 : 300)
      request.setExpires_in(300);
      
      // 수신자 생년월일, 형식 : YYYYMMDD
      request.setReceiverBirthDay("19700101");
      
      // 수신자 휴대폰번호  
      request.setReceiverHP("01012345117");
      
      // 수신자 성명 
      request.setReceiverName("테스트");
      
      // 예금주명
      request.setBankAccountName("예금주명");
      
      // 계좌번호, 이용기관은 사용자가 식별가능한 범위내에서 계좌번호의 일부를 마스킹 처리할 수 있음 예시) 371-02-6***85
      request.setBankAccountNum("9-4**4-1234-58");
      
      // 참가기관 코드 
      request.setBankCode("004");
      
      // 납부자 식별번호, 이용기관에서 부여한 고객식별번호
      request.setClientUserID("20200504-001");
      
      // 별칭코드, 이용기관이 생성한 별칭코드 (파트너 사이트에서 확인가능)
      // 카카오톡 인증메시지 중 "요청기관" 항목에 표시
      // 별칭코드 미 기재시 이용기관의 이용기관명이 "요청기관" 항목에 표시
      request.setSubClientID("");
      
      // 인증요청 메시지 제목, 카카오톡 인증메시지 중 "요청구분" 항목에 표시
      request.setTMSTitle("TMS Title");
      
      // 인증요청 메시지 부가내용, 카카오톡 인증메시지 중 상단에 표시
      request.setTMSMessage("부가메시지 내용");
      
      /*
       * 인증서 발급유형 선택
       *  true : 휴대폰 본인인증만을 이용해 인증서 발급
       *  false : 본인계좌 점유 인증을 이용해 인증서 발급
       * 
       * - 인증메시지를 수신한 사용자가 카카오인증 비회원일 경우,
       *   카카오인증 회원등록 절차를 거쳐 은행계좌 실명확인 절차이후 전자서명 가능
       */
      request.setAllowSimpleRegistYN(false);
      
      /*
      * 수신자 실명확인 여부  
      * true : 카카오페이가 본인인증을 통해 확보한 사용자 실명과 ReceiverName 값을 비교
      * false : 카카오페이가 본인인증을 통해 확보한 사용자 실명과 RecevierName 값을 비교하지 않음. 
      */
      request.setVerifyNameYN(true);
      
    
      // PayLoad, 이용기관이 API 요청마다 생성한 payload(메모) 값
      request.setPayLoad("memo Info");
      ResponseCMS receiptID = kakaocertService.requestCMS(ClientCode, request, isAppUseYN);
      
      m.addAttribute("receiptId", requestCMS.getReceiptId());
      m.addAttribute("tx_id", requestCMS.getTx_id());
    } catch(KakaocertException ke) {
      m.addAttribute("Exception", ke);
      return "exception";
    }
    return "RequestCMS";
  }
}

② 함수 호출결과 코드와 메시지를 매핑하는 "src/main/resources/templates/RequestCMS.html" 페이지를 추가합니다.

<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <link rel="stylesheet" type="text/css" href="/css/main.css" media="screen"/>
    <title>kakaocert SDK Springboot Example.</title>
</head>
<body>
<div id="content">
    <p class="heading1">Response</p>
    <br/>
    <fieldset class="fieldset1">
        <legend th:text="${#request?.requestURL}"></legend>
        <ul>
            <li>receiptId (접수아이디) : <span th:text="${receiptId}"></span></li>
            <li>tx_id (카카오톡 트랜잭션아이디[AppToApp 앱스킴 호출용]) : <span th:text="${tx_id}"></span></li>
        </ul>
    </fieldset>
</div>
</body>

③ 웹브라우저 페이지를 호출하여 함수호출 결과를 확인합니다.

requestCMS 응답 결과 예시 화면

기술지원센터

kakaoCert 기술지원은 유선, 메일, 원격지원 등 다양한 채널을 통해 제공됩니다.
T. 1600-9854E. code@linkhubcorp.com