튜토리얼

Ruby 개발환경에서 바로써트 SDK를 추가하여 출금동의 요청(requestCMS) 함수를 구현하는 예시입니다.

1. BaroCert SDK 추가

바로써트 Ruby SDK를 추가하기 위해 Rails 프로젝트 "Gemfile" 파일에 바로써트 Ruby Gem SDK 정보를 추가하고 bundle install을 진행합니다.

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.3.0'

# Barocert API 추가.
gem 'barocert', '1.3.0'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.2.3'

# 생략 ..

2. BaroCert SDK 설정

프로젝트에 카카오써트 서비스 기능을 수행할 Controller를 생성합니다.

rails generate controller tutorial

Controller에 연동신청시 발급받은 API Key를 변수로 선언하고 아래의 코드를 참조하여 카카오써트 서비스 객체를 생성 합니다.

require 'barocert/kakaocert'

class KakaocertController < ApplicationController

	# 링크아이디
	LinkID = "TESTER"

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

	# 이용기관코드 (파트너 사이트에서 확인가능)
	ClientCode = "023040000001";

	# KakaocertService Instance 초기화
	KCService = KakaocertService.instance(
		KakaocertController::LinkID,
		KakaocertController::SecretKey
	)

	# 인증토큰 IP 검증 설정, ture-사용, false-미사용, (기본값:true)
	KCService.setIpRestrictOnOff(true)

	# 통신 고정 IP, true-사용, false-미사용, (기본값:false)
	KCService.setUseStaticIP(false)
end

3. RequestCMS 기능 구현

Controller 코드에 RequestCMS 함수 코드를 추가합니다.

# 카카오톡 이용자에게 자동이체 출금동의를 요청합니다.
# https://developers.barocert.com/reference/kakao/ruby/cms/api#RequestCMS
def requestCMS

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

		# 수신자 휴대폰번호 - 11자 (하이픈 제외)
		"receiverHP" => KCService._encrypt('01012341234'),
		# 수신자 성명 - 80자
		"receiverName" => KCService._encrypt('홍길동'),
		# 수신자 생년월일 - 8자 (yyyyMMdd)
		"receiverBirthday" => KCService._encrypt('19700101'),

		# 인증요청 메시지 제목 - 최대 40자
		"reqTitle" => '출금동의 요청 메시지 제목',
		# 커스텀 메시지 - 최대 500자
		"extraMessage" => KCService._encrypt('출금동의 커스텀 메시지'),
		# 인증요청 만료시간 - 최대 1,000(초)까지 입력 가능
		"expireIn" => 1000,
		# 청구기관명 - 최대 100자
		"requestCorp" => KCService._encrypt("링크허브"),
		# 출금은행명 - 최대 100자
		"bankName" => KCService._encrypt("국민은행"),
		# 출금계좌번호 - 최대 32자
		"bankAccountNum" => KCService._encrypt("19-321442-1231"),
		# 출금계좌 예금주명 - 최대 100자
		"bankAccountName" => KCService._encrypt("홍길동"),
		# 출금계좌 예금주 생년월일 - 8자
		"bankAccountBirthday" => KCService._encrypt("19700101"),
		# 출금유형
		# CMS - 출금동의용, FIRM - 펌뱅킹, GIRO - 지로용
		"bankServiceType" => KCService._encrypt("CMS"),
		# AppToApp 인증요청 여부
		# true - AppToApp 인증방식, false - Talk Message 인증방식
		"appUseYN" => false,
		# App to App 방식 이용시, 에러시 호출할 URL
		# "returnURL" => 'https://kakao.barocert.com'
		}

	begin
		@Response = KCService.requestCMS(ClientCode,cms)
		render "kakaocert/requestCMS"
	rescue BarocertException => pe
		@Response = pe
		render "home/exception"
	end
end

함수 호출결과 코드와 메시지를 출력하는 "/requestCMS.html.erb" 파일을 추가합니다.

<div id="content">
	<p class="heading1">Barocert Ruby On Rails Example</p>
	<br/>
	<fieldset class="fieldset1">
		<legend><%= request.env['PATH_INFO'] %></legend>
		<ul>
			<li>접수아이디 (ReceiptID) : <%= @Response['receiptID'] %></li>
			<li>앱스킴 (Scheme) : <%= @Response['scheme'] %></li>
		</ul>
	</fieldset>
</div>

4. 결과 확인

함수 호출이 정상적으로 처리되면 "채널 메시지 인증" 방식은 접수아이디(32자리 숫자)가 반환되며, "앱투앱 인증" 방식은 접수아이디와 AppScheme 이 함께 반환됩니다. 실패인 경우 BarocertException으로 오류코드("-"로 시작하는 8자리 숫자값)와 오류메시지가 반환됩니다. [오류코드]