연동매뉴얼

Node.js API

(Express)

kakaoCert Express 튜토리얼

Express 개발환경에서 NPM을 이용해 kakaoCert Node.js SDK를 추가한 후 자동이체 출금동의 요청 기능을 구현하는 예시입니다.

1. NPM을 이용한 kakaoCert Node.js SDK 추가Node.js v6.0.0 Express v4.16.1CentOS v7.7

① kakaoCert Node.js SDK를 추가하기 위해 Express 프로젝트 package.json 파일에 kakaoCert Node.js SDK 정보를 추가하고 npm install을 진행합니다.

{
  "name": "kakaocert-node",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "morgan": "~1.9.1",
    "ejs": "~2.5.5",
    "kakaocert": "2.1.1"
  }
}

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

① 프로젝트의 routes 폴더 하위에 kakaocert.js를 생성하고, 아래 코드를 참고하여 연동신청시 발급받은 링크아이디(LinkID)와 비밀키(Secretkey)를 입력하고 kakaocert 서비스 객체를 생성 합니다.

var express = require('express');
var router = express.Router();
var kakaocert = require('kakaocert');

kakaocert.config( {

    // 연동신청하여 발급받은 링크아이디, 비밀키
    LinkID :'TESTER',
    SecretKey : 'SwWxqU+0TErBXy/9TVjIPEnI0VTUMMSQZtJf3Ed8q3I=',

    // 인증토큰 IP제한기능 사용여부, 권장(true)
    IPRestrictOnOff: true,

    // 인증토큰정보 로컬서버 시간 사용여부
    UseLocalTimeYN: true,

    defaultErrorHandler: function (Error) {
        console.log('Error Occur : [' + Error.code + '] ' + Error.message);
    }

});

// Kakaocert 서비스 클래스 생성
var kakaocertService = kakaocert.KakaocertService();

// requestCMS 함수 호출 부분 입력 자리

module.exports = router;

② 아래 코드를 참고하여 ①에서 생성한 kakaocert.js 파일에 자동이체 출금동의 요청 함수(requestCMS) 호출 코드를 입력합니다.

// 생략..
/*
  * 자동이체 출금동의 인증을 요청합니다.
  * - 해당 서비스는 전자서명을 하는 당사자와 출금계좌의 예금주가 동일한 경우에만 사용이 가능합니다.
  * - 전자서명 당사자와 출금계좌의 예금주가 동일인임을 체크하는 의무는 이용기관에 있습니다.
  * - 금융결제원에 증빙자료(전자서명 데이터) 제출은 이용기관 측 에서 진행해야 합니다.
  */
router.get('/RequestCMS', function (req, res, next) {

  // kakaoCert 이용기관코드, kakaoCert 파트너 사이트에서 확인
  var clientCode = '020040000001';

  // 자동이체 출금동의 요청정보 객체
  var requestCMS = {

    // 고객센터 전화번호, 카카오톡 인증메시지 중 "고객센터" 항목에 표시
    CallCenterNum : '1600-9999',

    // 인증요청 만료시간(초), 최대값 : 1000  인증요청 만료시간(초) 내에 미인증시, 만료 상태로 처리됨 (권장 : 300)
    Expires_in : 300,

    // 수신자 생년월일, 형식 : YYYYMMDD
    ReceiverBirthDay : '19700101',

    // 수신자 휴대폰번호
    ReceiverHP : '01012341234',

    // 수신자 성명
    ReceiverName : '테스트',

    // 예금주명
    BankAccountName : '예금주명',

    // 참가기관 코드
    BankCode : '004',

    // 계좌번호, 사용자가 식별가능한 범위내에서 계좌번호의 일부를 마스킹 처리할 수 있음(예시) 371-02-6***85
    BankAccountNum : '9-4324-5**7-58',

    // 납부자 식별번호, 이용기관에서 부여한 고객식별번호
    ClientUserID : 'clientUserID-0423-01',

    // 별칭코드
    // 이용기관이 생성한 별칭코드 (파트너 사이트에서 확인가능)
    // 카카오톡 인증메시지 중 "요청기관" 항목에 표시
    // 별칭코드 미 기재시 이용기관의 이용기관명이 "요청기관" 항목에 표시
    SubClientID : '',

    // 인증요청 메시지 제목, 카카오톡 인증메시지 중 "요청구분" 항목에 표시
    TMSTitle : 'TMSTitle',

    // 인증요청 메시지 부가내용, 카카오톡 인증메시지 중 상단에 표시
    TMSMessage : 'TMSMessage',

    /*
    * 인증서 발급유형 선택
    * - true : 휴대폰 본인인증만을 이용해 인증서 발급
    * - false : 은행과제 실명확인 절차를 진행
    *
    * 카카오톡 인증메시지를 수신한 사용자가 카카오인증 비회원일 경우,
    * 카카오인증 회원등록 절차를 거쳐 은행계좌 실명확인 절차를 밟은 다음 전자서명 가능
    */
    isAllowSimpleRegistYN : false,

    /*
    * 수신자 실명확인 여부
    * true : 카카오페이가 본인인증을 통해 확보한 사용자 실명과 ReceiverName 값을 비교
    * false : 카카오페이가 본인인증을 통해 확보한 사용자 실명과 RecevierName 값을 비교하지 않음.
    */
    isVerifyNameYN : true,

    // 이용기관이 생성한 payload(메모) 값
    PayLoad : 'memo info',
  };

  kakaocertService.requestCMS(clientCode, requestCMS,
    function(result){
      res.render('requestCMS', {path: req.path, receiptId: result.receiptId});
    }, function(error){
      res.render('requestCMS', {path: req.path, code: error.code, message: error.message});
  });
});

// 생략..

③ 프로젝트 views 폴더 하위에 함수 호출 결과를 확인하기 위한 "requestCMS.ejs" 파일을 추가합니다.

<!DOCTYPE html>
<html>
<head>
  <title>kakaocert Node.js Express Example</title>
</head>
<body>
<div>
  <p>Response</p>
  <fieldset>
    <legend>자동이체 출금동의 요청</legend>
    <ul>
      <% if (typeof receiptId  != 'undefined') { %>
        <li>접수아이디 (receiptId) : <%= receiptId %></li>
      <% } else { %>
        <li>오류코드 : <%= code %></li>
        <li>오류메시지 : <%= message %></li>
      <% } %>
    </ul>
  </fieldset>
</div>
</body>
</html>

④ 아래 코드를 참고하여 프로젝트의 app.js 파일에 Router 부분을 입력합니다.

// 생략..

var kakaocertRouter = require('./routes/kakaocert');

var app = express();

// 생략..

app.use('/kakaocert', kakaocertRouter);

// 생략..

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

requestCMS 응답 결과 예시 화면

기술지원센터

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