API 설명서

저희의 개발자 API 를 사용하여 귀사만의 예약 인터페이스를 생성하세요. 귀사의 비즈니스 특성에 따라, 가장 간단한 위젯부터 다양한 기능의 솔루션까지, 귀하가 희망하시는 시스탬을 디자인하실 수 있습니다.

SimplyBook.me 용용 프로그램 인터페이스는 JSON-RPC 2.0 프로토콜 을 사용합니다.

API 기반 인터페이스의 예를 참고해보시고, 이 솔루션의 소스 코드 를 읽어보시기 바람니다.

승인

간단하게 API 메소드를 예약하려면 인증이 필요합니다. Simplybook API에서 권한을 부여하려면 액세스 키인 액세스 토큰을 받아야 합니다. 이 액세스 토큰을 얻으려면 개인 API 키를 전달하는 http://user-api.simplybook.me/login 서비스에서 JSON-RPC 메소드 getToken을 호출해야합니다. 관리자 인터페이스에서 API 키를 복사할 수 있습니다 : '플러그인' 링크로 이동하고 API 플러그인 '설정'을 선택합니다. 그리하여 SimplyBook.me 의 API에 대한 원격 액세스를 초기화 하여야 합니다. 귀하의 요청은 다음과 같은 머릿글을 포함해야합니다: 'X-회사-로그인', 'X-토큰'.

액세스 토큰을 얻는 것은 고객 측 모듈에서 도 가능 하나, 귀하의 서버에서 얻는것이 더 안전한 방법입니다.

귀사의 솔루션 개발을 위하여, 저희가 제시해드리는 견본들 중에 자바 스크립트 JSON-RPC-고객용 도서관 혹은 php JSON-RPC-고객용 도거관을 사용하실 수 있습니다.


Client API (Company public service) authorization

고객측의 코드에서 승인 받기

토큰-키 얻기


    var loginClient = new JSONRpcClient({
        'url': 'https://user-api.simplybook.me' + '/login',
        'onerror': function (error) {},
    });
    var token = loginClient.getToken( YOUR_COMPANY_LOGIN, YOUR_API_KEY);
    

JSON-RPC-고객 초기화


    this.client = new JSONRpcClient({
        'url': 'https://user-api.simplybook.me',
        'headers': {
            'X-Company-Login': YOUR_COMPANY_LOGIN,
            'X-Token': token
        },
        'onerror': function (error) {}
    });
    

서버 측 코드에서 권한 부여

토큰-키 얻기


    $loginClient = new JsonRpcClient('https://user-api.simplybook.me' . '/login/');
    $token = $loginClient->getToken(YOUR_COMPANY_LOGIN, YOUR_API_KEY);
    

JSON-RPC-고객 초기화


    $client = new JsonRpcClient( 'https://user-api.simplybook.me' . '/', array(
        'headers' => array(
            'X-Company-Login: ' .  YOUR_COMPANY_LOGIN,
            'X-Token: ' . $token
        )
    ));
    

사용자/어드민 API (회사 행정 서비스) 승인

고객측의 코드에서 승인 받기

토큰-키 얻기


    var loginClient = new JSONRpcClient({
        'url': {$api_url} + '/login',
        'onerror': function (error) {},
    });
    var token = loginClient.getUserToken( YOUR_COMPANY_LOGIN,  YOUR_USER_LOGIN,  YOUR_USER_PASSWORD);
    

JSON-RPC-고객 초기화


    this.client = new JSONRpcClient({
        'url': 'https://user-api.simplybook.me' + '/admin/',
        'headers': {
            'X-Company-Login': YOUR_COMPANY_LOGIN,
            'X-User-Token': token
        },
        'onerror': function (error) {}
    });
    

서버 측 코드에서 권한 부여

토큰-키 얻기


    $loginClient = new JsonRpcClient('https://user-api.simplybook.me' . '/login/');
    $token = $loginClient->getUserToken({YOUR_COMPANY_LOGIN, YOUR_USER_LOGIN, YOUR_USER_PASSWORD);
    

JSON-RPC-고객 초기화


    $client = new JsonRpcClient('https://user-api.simplybook.me' . '/admin/', array(
        'headers' => array(
            'X-Company-Login: ' . YOUR_COMPANY_LOGIN,
            'X-User-Token: ' . $token
        )
    ));
    

SimplyBook.me 서버에서 데이터를 가져 오기

예약 페이지는 고객들이 필요한 서비스, 직원 및 미팅의 시간을 선택하는 곳입니다. 그 후 고객들은 고객정보를 입력하고 예약을 확인합니다. 다양한 추가 항목 입력, 그룹 또는 여러 예약들을 할 수 있습니다. 예약 페이지의 생성은 매우 단순합니다. 그 후 페이지에 추가 기능이 필요한 경우, 여기에서 SimplyBook.me API 방법 목록을 확인하십시오

우선 먼저 표시하실 사항은 귀사의 서비스 목록 및 서비스 제공자(직원) 목록 입니다. 이 데이터들은 getEventListgetUnitList 에서 가져옵니다. 이 데이퍼들은 각 항목에 자세한 정보와 목록들이 포함되어 있어, 귀하의 선택에 따라 여러 방법으로 서비스 및 직원을 표시할 수 있습니다. 또한 직원 여과 사용은 unit_map 서비스 목록 속성을 사용하세요. 선택된 서비스를 제공 할 수 있는 직원들에 대한 정보가 포함되어 있습니다.

서비스 목록을 가져 오는 코드 예제


    $services = $client->getEventList();
    // returns array(array(
    //     'id' => 1, - service id
    //     'name' => 'Service 1', - service's name
    //     'description' => 'Describe your service...', - service description
    //     'duration' => 60, - service duration
    //     'hide_duration' => 0, - Hide duration to clients flag,
    //     'picture' => null, - file name of picture or null
    //     'picture_path' => '/uploads/apidemo/event__picture/small/', - full path to picture,
    //     'position' => 1 - service position
    //     'is_active' => 1, - the service is activated
    //     'is_public' => 1, - the service is allowed to book by clients
    // ), ...)
    

직원 목록을 가져 오는 코드 예제


    $services = $client->getUnitList();
    // returns array(array(
    //    'id' => 1, - performer id
    //    'name' => 'Provider 1', - performer name
    //    'phone' => '111111111', - perfomer phone number
    //    'description' => 'Describe your performer...', - performer description
    //    'email' => 'test@gmail.com', - perfomer email,
    //    'is_active' => 1, - the performer is activated
    //    'is_visible' => 1, - the perfomer is visible for clients,
    //    'picture' => null, - file name of picture or null,
    //    'picure_path' => '/uploads/apidemo/unit_group__picture/small/', - full path to picture
    //    'position' => 1, - performer position
    //    'qty' => 1, performer quantity
    // ), ...)
    

고객의 다음 절차는 원하는 서비스의 예약 날짜와 시간을 선택하는 것입니다. 현재 저희는 API 사용량의 예 에서 Bootstrap 날짜 선택기를 사용하고 있고, 또한 이는 귀하께서 원하시는 달력으로 바꾸실 수 있습니다. 스케줄 달력을 이용하시려면 getFirstWorkingDay 기능을 사용하세요. 각 직원의 ID 를 매개 변수로 이용하여 선택된 직원이 (또는 기본적으로 회사의 모든 직원이) 예약 선택된 날짜에 서비스 제공이 가능한지를 파학하는 기능입니다.{""|t} 선택된 날짜상에서의 가능한 시간대를 보여주기 위하여 getWorkCalendargetStartTimeMatrix 기능을 사용합니다. 첫 번째 기능은 하루의 근무 시작 및 종료 시간, 또한 휴일에 대한 정보를 제공합니다. 그리고 두 번째 기능은 특정 날짜에 대한 예약 가능 시간들을 반환하는 기능입니다.

근무일 정보를 가져오는 코드 예제


    $year = 2020;
    $month = 3; // March
    $performerId = 1; // Can be null
    $workDaysInfo = $client->getWorkCalendar($year, $month, $performerId);
    // returns array(
    //     '2020-03-01' => array('from' => '09:00:00', 'to' => '18:00:00', 'is_day_off' => 0),
    //     '2020-03-02' => array('from' => '09:00:00', 'to' => '18:00:00', 'is_day_off' => 0),
    //     ...
    //);
    

시작 시간 행렬을 가져오는 코드 예제


    $dateFrom = '2020-03-03';
    $dateTo = '2020-03-04';
    $serviceId = 1;
    $performerId = 1;
    $qty = 1;
    $availableTime = $client->getStartTimeMatrix($dateFrom, $dateTo, $serviceId, $performerId, $qty);
    // returns array(
    //     '2015-03-03' => array('09:00:00', '09:30:00', '10:00:00', ....),
    //     '2015-03-04' => array('09:00:00', '09:30:00', '10:00:00', ....),
    //);
    

또다른 유용한 기능은 calculateEndTime 입니다. 각 서비스들에 대한 시간의 길이는 다 다르고, 각 직원들의 일일 스케줄들 또한 가자 다 다르기 때문에, 이 기능을 이용하여, 고객이 예약한 서비스 관련 예약 시간과 직원별 업무 시간들을 쉽게 파학할 수 있습니다.

예약 종료 시간을 계산하는 코드 예제


    $startDateTime = '2020-03-03 09:00:00';
    $serviceId = 1;
    $performerId = 1;
    $availableTime = $client->calculateEndTime($startDateTime, $serviceId, $performerId);
    // returns '2020-03-03 10:00:00'
    

고객이 '예약 확인' 버튼을 클릭시 book 기능을 호출해야 합니다. 이것은 모든 필요한 승인과 SimplyBook.me 시스템에서 새로운 예약을 등록하는 주요 기능입니다. 이름, 전화번호 등과 같은 고객 데이터를 필요로 합니다. API 기능 목록에서 이 방법의 모든 설명을 확인하십시오. book 기능은 새로운 예약의 유니크한 코드와 자세한 사항들, 혹은 문제 발생시의 오류 목록 을 담고 있습니다. 이 정보를 이용하여 편리하고 효율적인 방법으로 고객들에게 예약 결과를 전달할 수 있습니다.


API 암호 키의 사용

경우에 따라서 book 기능은 추가 정보를 요구할 수 있습니다. 예를 들면 고객의 지불을 수락하는 경우, 결제가 이미 확인 된 후에야 예약이 완료되는 경우입니다. SimplyBook.me API 의confirmBookng 기능은 예약 ID 와 보안 서명을 파라미터로 저장합니다. 보안 서명이 요구되는 또 다른 방법은 cancelBookng 입니다. 보안 서명 생성을 위하여 your secret API-key 이 사용되어야 합니다. 수행 할 수 있는 방법은 아래의 예 를 참조하십시오. '플러그인' 목록의 API 플러그인 '설정' 링크에서, 관리 인터페이스의 비밀 키를 찾을 수 있습니다.

비밀 API 키를 사용하여 서비스 예약 및 예약 확인의 코드 예제


    $additionalFields = array(
	'6740d3bce747107ddb9a789cbb78abf3' => 'value1',
	'b0657bafaec7a2c9800b923f959f8163' => 'value2'
    );

    $clientData = array(
        'name' => 'Client name',
        'email' => 'client@email.com',
        'phone' => '+13152108338'
    );

    $bookingsInfo = $client->book($eventId, $unitId, $date, $time, $clientData, $additionalFields);

    if ($bookingsInfo->require_confirm) {
       foreach ($bookingsInfo->bookings as $booking) {
           $sign = md5($booking->id . $booking->hash . YOUR_API_SECRET_KEY);
           $result = $client->confirmBooking($booking->id, $sign);
           echo '<br>Confirm result</b><br />';
           var_dump($result);
        }
    }
    

추가 필드를 가져오는 코드 예제


    $fields = $client->getAdditionalFields($eventId);
    // returns - array(array(
    //		'name' => 'b0657bafaec7a2c9800b923f959f8163', - field name
    //		'title' => 'Test digits', - field title
    //		'type' => 'digits', - field type
    //		'values' => null, - available values for select field type
    //		'default' => null, - default value for field
    //		'is_null' => null, - is filed nullable
    //		'on_main_page' => 1,
    //		'pos' => 1, - field position
    //		'value' => null
    // )), ...)
    

SimplyBook.me 플러그인

귀사의 특정 상 몇 가지 추가 기능을 필요로하는 경우, 저희의 추가 플러그인 일부를 활성화 할 수 있습니다. 전체 플러그인 목록은 상세한 설명과 함께 귀하의 관리 인터페이스의 '플러그인' 링크에서 참고하실 수 있습니다. 필요한 플러그인이 활성화되면 해당 API 기능들또한 역시 활성화 되고, 해당 코드를 이용하여 이들을 사용할 수 있습니다.

예약 기능 코드 흐름

loginClient.getToken(companyLogin, apiKey); 기능을 이용하여 SimplyBook.me API 승인.


서비스 카테고리 플러그인이 isPluginActivated('event_category')에 의해 활성화 되었는지 확인 확인되었을 경우 범주 목록 표시 getCategoriesList().


getEventList()getUnitList() 기능을 이용하여 서비스 (이벤트) 및 서비스 제공자 (단위)의 목록을 확인하십시오. 'unit_map' 배열이 가능한 서비스일 경우, 이 서비스는 주어진 서비스 제공자에 의해서만 제공될 수 있습니다.


모든 직원 선택 플러그인은 활성화된 isPluginActivated('any_unit')이며 'unit_map'에 정해진 서비스 제공자가 없으며, 사용자가 선택할 수 있습니다. 모든 서비스 제공자옵션 또는 서비스 제공자를 수동으로 선택할 수 있습니다. 그러나 서비스 제공자의 수동 선택은 getCompanyParam('any_unit__hide_other_units')인 경우 가능하지 않습니다.


정해진 날짜에 이용 가능한 타임 슬롯을 얻기 위해getStartTimeMatrix ($from as current date, $to as current date, $eventId, $unitId, $count as selected participants value )를 사용하세요. 모든 직원이 선택되어진 경우 $unitId가 무효여야 합니다.


이용가능한 $unitId를 얻기 위해 모든 직원 셀렉터가 활성화이고 모든 직원getAvailableUnits($eventId, $dateTime, $count)로 선택된 경우


추가 항목 플러그인이 활성화되어있고 isPluginActivated('event_field')getAdditionalFields($eventId) 기능이 고객 기입 목록을 얻기 위한 경우.


예약을 하기 위한 book($eventId, $unitId, $date, $time, $clientData, $additional, $count, $batchId).


왜 전세계의 수많은 비즈니스들이 저희 SimplyBook.me API (응용프로그램 인터페이스) 를 선택할까요?

명확하고 간단한 인터페이스. 최상의 방법으로 귀사만의 예약 서비스를 구축해 드립니다.

귀하께서 필요로하시는 모든 기능을 손쉽게 플러그인 할 수 있습니다.

실시간 스케줄링 – 귀하의 고객들은 24시간 언제든, 어디서건 귀하와 예약을 완료할 수 있습니다.

저희 앱은 여러분에게 또 다른 유용한 기능을 제공합니다. 앱의 기능에 대해 더 알아 보려면 여기를 클릭하세요.

개발자

고객들이 당신의 앱을 떠나지 않고 서비스를 예약할 수 있는 기능을 즐겨보세요!

귀하의 고객들과 그분들이 원하시는 가게/서비스를 연결시켜 주는 기능을 제공하여, 귀사의 웹사이트의 사업성과 수익성을 증가시켜보세요. 저희 SimplyBookMe의 API (응용프로그램 인터페이스)를 사용하시면, 귀하의 웹 페이지에 '직접 예약하기'버튼이 설치되어, 귀하의 고객들께서 원하시는 서비스를 직접 쉽고 간편하게 예약하실 수 있습니다.

저희의 API (응용프로그램 인터페이스)를 이용하시면, 귀사의 고객들이 귀사의 서비스를 예약할 때 필요한 모든 절차를 간편하게 해결할 수 있습니다.

고객들의 귀사의 비즈니스 스케줄과 직접 연결하여, 상거래의 완전히 새롭고 손쉬운 기능을 전달합니다. 귀하의 홈페이지, 혹은 앱 상에서 고객들이 직접 예약을 완료할 수 있으므로 고객 잠재력 뿐만 아니라, 더 향상된 토털 고객 만족 서비스를 구축하실 수 있습니다.