Rails 프레임워크를 사용하는 환경에서 Ruby Gem을 이용해 kakaoCert Ruby SDK를 추가한 후 전자서명 요청(Talk Message 방식) 기능을 구현하는 예시입니다.
① Rails 프로젝트의 Gemfile에 kakaoCert Ruby SDK 정보를 추가하고 bundle install 또는 bundle update를 진행합니다.
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby '2.7.0'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 6.0.3', '>= 6.0.3.2'
#생략
#...
# kakaoCert Ruby SDK
gem 'kakaocert', '2.50.0'
① 프로젝트에 전자서명 요청 기능을 수행할 Controller를 생성합니다.
rails generate controller kakaocert
② ①의 명령어로 생성된 kakaocert_controller.rb에 kakaocert 클래스 객체 생성하고 연동신청하여 발급 받은 링크아이디(LinkID)와 비밀키(SecretKey) 값을 입력하고, 전자서명 요청(requestESign) 함수 호출 코드를 추가합니다.
require 'kakaocert'
class KakaocertController < ApplicationController
# 링크아이디
LinkID = "TESTER"
# 비밀키
SecretKey = "SwWxqU+0TErBXy/9TVjIPEnI0VTUMMSQZtJf3Ed8q3I="
# kakaoCert 이용기관코드, kakaoCert 파트너 사이트에서 확인
ClientCode = "020040000001";
# KakaocertService Instance 초기화
KCService = KakaocertService.instance(
KakaocertController::LinkID,
KakaocertController::SecretKey
)
# 인증토큰 IP제한기능 사용여부, 권장(true)
KCService.setIpRestrictOnOff(true)
# 카카오써트 API 서비스 고정 IP 사용여부, true-사용, false-미사용, 기본값(false)
KCService.setUseStaticIP(false)
# 전자서명을 요청합니다.
def requestESign
# 전자서명 요청정보 객체
requestInfo = {
# App to App 방식 이용 여부
# true - AppToApp 인증, false - TalkMessage 인증
"isAppUseYN" => false,
# 고객센터 전화번호, 카카오톡 인증메시지 중 "고객센터" 항목에 표시
"CallCenterNum" => '1666-0044',
# 인증요청 만료시간(초), 최대값 : 1000 인증요청 만료시간(초) 내에 미인증시, 만료 상태로 처리됨 (권장 : 300)
"Expires_in" => 300,
# 수신자 생년월일, 형식 : YYYYMMDD
"ReceiverBirthDay" => '19700101',
# 수신자 휴대폰번호
"ReceiverHP" => '01012345678',
# 수신자 성명
"ReceiverName" => '홍길동',
# 별칭코드, 이용기관이 생성한 별칭코드 (파트너 사이트에서 확인가능)
# 카카오톡 인증메시지 중 "요청기관" 항목에 표시
# 별칭코드 미 기재시 이용기관의 이용기관명이 "요청기관" 항목에 표시
"SubClientID" => '',
# 인증요청 메시지 부가내용, 카카오톡 인증메시지 중 상단에 표시
"TMSMessage" => 'TMSMessage',
# 인증요청 메시지 제목, 카카오톡 인증메시지 중 "요청구분" 항목에 표시
"TMSTitle" => 'TMSTitle',
# 인증서 발급유형 선택
# true : 휴대폰 본인인증만을 이용해 인증서 발급
# false : 본인계좌 점유 인증을 이용해 인증서 발급
# 카카오톡 인증메시지를 수신한 사용자가 카카오인증 비회원일 경우, 카카오인증 회원등록 절차를 거쳐 은행계좌 실명확인 절차를 밟은 다음 전자서명 가능
"isAllowSimpleRegistYN" => false,
# 수신자 실명확인 여부
# true : 카카오페이가 본인인증을 통해 확보한 사용자 실명과 ReceiverName 값을 비교
# false : 카카오페이가 본인인증을 통해 확보한 사용자 실명과 RecevierName 값을 비교하지 않음.
"isVerifyNameYN" => true,
# 전자서명할 토큰 원문
"Token" => "token value",
# PayLoad, 이용기관이 생성한 payload(메모) 값
"PayLoad" => 'Payload123',
}
begin
@value = KCService.requestESign(
KakaocertController::ClientCode,
requestInfo,
)
render "kakaocert/requestESign"
rescue KakaocertException => pe
@code = pe.code
@message = pe.message
render "kakaocert/requestESign"
end
end
end
③ 프로젝트의 app\views\kakaocert 폴더에 함수 호출 결과를 출력하는 "requestESign.html.erb" 파일을 추가합니다.
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>kakaoCert Ruby Example</title>
</head>
<body>
<div>
<p>Response</p>
<fieldset>
<legend>전자서명 요청</legend>
<ul>
<% if @code %>
<li>오류 코드 : <%= @code %></li>
<li>오류 메시지 : <%= @message %></li>
<% else %>
<li>receiptId(접수아이디) : <%= @value['receiptId'] %></li>
<li>[AppToApp용] 카카오톡 트랜잭션아이디 (tx_id) : <%= @value['tx_id'] %></li>
<% end %>
</ul>
</fieldset>
</div>
</body>
</html>
④ 라우팅을 위해 프로젝트의 config\routes.rb에 다음 코드를 추가합니다.
Rails.application.routes.draw do
# 생략
# ..
get "/requestESign" => 'kakaocert#requestESign', via: [:get]
end
⑤ 웹브라우저 페이지를 호출하여 함수 호출 결과를 확인합니다.
기술지원센터
kakaoCert 기술지원은 유선, 메일, 원격지원 등 다양한 채널을 통해 제공됩니다.
T. 1600-9854E. code@linkhubcorp.com
Copyright (C) LinkHub. All Rights Reserved.