튜토리얼
PHP 개발환경에서 바로써트 SDK를 추가하여 출금동의 요청(requestCMS) 함수를 구현하는 예시입니다.
1. BaroCert SDK 추가
Barocert PHP SDK를 추가하기 위해 Laravel 프로젝트의 composer.json 파일의 require 필드 오브젝트에 kakaoCert SDK 정보를 추가후 composer update 커멘드를 실행하여 barocert 패키지를 설치합니다.
{
"name": "laravel/laravel",
"type": "project",
"description": "The Laravel Framework.",
"keywords": [
"framework",
"laravel"
],
"license": "MIT",
"require": {
"php": "^7.2.5",
"fideloper/proxy": "^4.2",
"fruitcake/laravel-cors": "^1.0",
"laravel/framework": "^7.30.3",
"laravel/tinker": "^2.0",
"linkhub/barocert": "^1.4.1"
},
// 생략 ...
}
2. BaroCert SDK 설정
SDK 설정을 위해 laravel 프로젝트 config 폴더에 barocert.php 파일을 추가합니다.
<?php
return [
// 링크아이디
'LinkID' => 'TESTER',
// 비밀키
'SecretKey' => 'SwWxqU+0TErBXy/9TVjIPEnI0VTUMMSQZtJf3Ed8q3I=',
// 통신방식 기본은 CURL , PHP curl 모듈 사용에 문제가 있을 경우 STREAM 기재가능.
// STREAM 사용시에는 php.ini의 allow_url_fopen = on 으로 설정해야함.
'LINKHUB_COMM_MODE' => 'CURL',
// 인증토큰 IP 검증 설정, ture-사용, false-미사용, (기본값:true)
'IPRestrictOnOff' => true,
// 통신 고정 IP, true-사용, false-미사용, (기본값:false)
'UseStaticIP' => false
];
3. RequestCMS 기능 구현
① Controller를 추가하고 클래스 생성자(__construct)에 바로써트 서비스 클래스 초기화 코드와 RequestCMS 함수를 추가합니다.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Linkhub\LinkhubException;
use Linkhub\Barocert\BarocertException;
use Linkhub\Barocert\KakaocertService;
use Linkhub\Barocert\Sign;
use Linkhub\Barocert\GetSignStatus;
use Linkhub\Barocert\Identity;
use Linkhub\Barocert\MultiSign;
use Linkhub\Barocert\GetCMSState;
use Linkhub\Barocert\MultiSignTokens;
use Linkhub\Barocert\CMS;
class KakaocertController extends Controller
{
public function __construct() {
// 통신방식 설정
define('LINKHUB_COMM_MODE', config('kakaocert.LINKHUB_COMM_MODE'));
// kakaocert 서비스 클래스 초기화
$this->KakaocertService = new KakaocertService(config('kakaocert.LinkID'), config('kakaocert.SecretKey'));
// 인증토큰 IP 검증 설정, ture-사용, false-미사용, (기본값:true)
$this->KakaocertService->IPRestrictOnOff(config('kakaocert.IPRestrictOnOff'));
// 통신 고정 IP, true-사용, false-미사용, (기본값:false)
$this->KakaocertService->UseStaticIP(config('kakaocert.UseStaticIP'));
}
// HTTP Get Request URI -> 함수 라우팅 처리 함수
public function RouteHandelerFunc(Request $request){
$APIName = $request->route('APIName');
return $this->$APIName();
}
/*
* 카카오톡 이용자에게 자동이체 출금동의를 요청합니다.
* https://developers.barocert.com/reference/kakao/php/cms/api#RequestCMS
*/
public function RequestCMS(){
// 이용기관코드 (파트너 사이트에서 확인가능)
$clientCode = '023040000001';
// 출금동의 요청 정보 객체
$KakaoCMS = new KakaoCMS();
// 수신자 휴대폰번호 - 11자 (하이픈 제외)
$KakaoCMS->receiverHP = $this->KakaocertService->encrypt('01012341234');
// 수신자 성명 - 80자
$KakaoCMS->receiverName = $this->KakaocertService->encrypt('홍길동');
// 수신자 생년월일 - 8자 (yyyyMMdd)
$KakaoCMS->receiverBirthday = $this->KakaocertService->encrypt('19700101');
// 인증요청 메시지 제목 - 최대 40자
$KakaoCMS->reqTitle = '출금동의 요청 메시지 제목';
// 커스텀 메시지 - 최대 500자
$KakaoCMS->extraMessage = $this->KakaocertService->encrypt('출금동의 커스텀 메시지');
// 인증요청 만료시간 - 최대 1,000(초)까지 입력 가능
$KakaoCMS->expireIn = 1000;
// 청구기관명 - 최대 100자
$KakaoCMS->requestCorp = $this->KakaocertService->encrypt('청구 기관명란');
// 출금은행명 - 최대 100자
$KakaoCMS->bankName = $this->KakaocertService->encrypt('출금은행명란');
// 출금계좌번호 - 최대 32자
$KakaoCMS->bankAccountNum = $this->KakaocertService->encrypt('9-4324-5117-58');
// 출금계좌 예금주명 - 최대 100자
$KakaoCMS->bankAccountName = $this->KakaocertService->encrypt('예금주명 입력란');
// 출금계좌 예금주 생년월일 - 8자
$KakaoCMS->bankAccountBirthday = $this->KakaocertService->encrypt('19700101');
// 출금유형
// KakaoCMS - 출금동의용, FIRM - 펌뱅킹, GIRO - 지로용
$KakaoCMS->bankServiceType = $this->KakaocertService->encrypt('CMS'); // CMS, FIRM, GIRO
// AppToApp 인증요청 여부
// true - AppToApp 인증방식, false - Talk Message 인증방식
$KakaoCMS->appUseYN = false;
try {
$result = $this->KakaocertService->requestCMS($clientCode, $KakaoCMS);
}
catch(BarocertException $re) {
$code = $re->getCode();
$message = $re->getMessage();
return view('Response', ['code' => $code, 'message' => $message]);
}
return view('KakaoCert/RequestCMS', ['result' => $result]);
}
}
② 호출 결과를 출력하는 페이지(RequestCMS.blade.php)를 resources/views/에 추가합니다.
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link rel="stylesheet" type="text/css" href="/css/example.css" media="screen"/>
<title>Barocert Laravel Example</title>
</head>
<body>
<div id="content">
<p class="heading1">Response</p>
<br/>
<fieldset class="fieldset1">
<legend>{{\Request::fullUrl()}}</legend>
<ul>
<li>접수아이디 (ReceiptID) : {{ $result->receiptID }}</li>
<li>앱스킴 (Scheme): {{ $result->scheme }}</li>
</ul>
</fieldset>
</div>
</body>
</html>
4. 결과 확인
함수 호출이 정상적으로 처리되면 "채널 메시지 인증" 방식은 접수아이디(32자리 숫자)가 반환되며, "앱투앱 인증" 방식은 접수아이디와 AppScheme 이 함께 반환됩니다. 실패인 경우 BarocertException으로 오류코드("-"로 시작하는 8자리 숫자값)와 오류메시지가 반환됩니다. [오류코드]