연동매뉴얼

Ruby API

(Ruby on Rails)

kakaoCert Ruby on Rails 튜토리얼

Rails 프레임워크를 사용하는 환경에서 Ruby Gem을 이용해 kakaoCert Ruby SDK를 추가한 후 자동이체 출금동의 요청 기능을 구현하는 예시입니다.

1. kakaoCert SDK 추가Ruby v2.7.0Rails 6.0.3CentOS v7.7

① 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.0.0'

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

① 프로젝트에 자동이체 출금동의 요청 기능을 수행할 Controller를 생성합니다.

rails generate controller kakaocert

② ①의 명령어로 생성된 kakaocert_controller.rb에 kakaocert 클래스 객체 생성하고 연동신청하여 발급 받은 링크아이디(LinkID)와 비밀키(SecretKey) 값을 입력하고, 자동이체 출금동의 요청(requestCMS) 함수 호출 코드를 추가합니다.

require 'kakaocert'

class KakaocertController < ApplicationController

  # 링크아이디
  LinkID = "TESTER"

  # 비밀키
  SecretKey = "SwWxqU+0TErBXy/9TVjIPEnI0VTUMMSQZtJf3Ed8q3I="

  # kakaoCert 이용기관코드, kakaoCert 파트너 사이트에서 확인
  ClientCode = "020040000001";

  # KakaocertService Instance 초기화
  KCService = KakaocertService.instance(
      KakaocertController::LinkID,
      KakaocertController::SecretKey
  )
  
  # 자동이체 출금동의 전자서명을 요청합니다.
  #  - 해당 서비스는 전자서명을 하는 당사자와 출금계좌의 예금주가 동일한 경우에만 사용이 가능합니다.
  #  - 전자서명 당사자와 출금계좌의 예금주가 동일인임을 체크하는 의무는 이용기관에 있습니다.
  #  - 금융결제원에 증빙자료(전자서명 데이터) 제출은 이용기관 측 에서 진행해야 합니다.
  def requestCMS

    # 자동이체 출금동의 요청정보 객체
    requestInfo = {

      # 고객센터 전화번호, 카카오톡 인증메시지 중 "고객센터" 항목에 표시
      "CallCenterNum" => '1600-8536',

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

      # 수신자 생년월일, 형식 : YYYYMMDD
      "ReceiverBirthDay" => '19700101',

      # 수신자 휴대폰번호
      "ReceiverHP" => '01012345678',

      # 수신자 성명
      "ReceiverName" => '홍길동',

      # 참가기관 코드
      "BankCode" => '004',

      # 예금주명
      "BankAccountName" => '예금주명',

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

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

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

      # 인증요청 메시지 부가내용, 카카오톡 인증메시지 중 상단에 표시
      "TMSMessage" => 'TMSMessage',

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

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

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

      # PayLoad, 이용기관이 생성한 payload(메모) 값
      "PayLoad" => 'Payload123',
    }

    begin
      @value = KCService.requestCMS(
        KakaocertController::ClientCode,
        requestInfo,
      )
      render "kakaocert/requestCMS"
    rescue KakaocertException => pe
      @code = pe.code
      @message = pe.message
      render "kakaocert/requestCMS"
    end
  end
end

③ 프로젝트의 app\views\kakaocert 폴더에 함수 호출 결과를 출력하는 "requestCMS.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 %></li>
        <% end %>
      </ul>
    </fieldset>
  </div>
</body>
</html>

④ 라우팅을 위해 config\routes.rb에 다음 코드를 추가합니다.

Rails.application.routes.draw do
  # 생략
  # ..

  get "/requestCMS" => 'kakaocert#requestCMS', via: [:get]
end

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

requestCMS 응답 결과 예시 화면

기술지원센터

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