請注意:
我們依照歐盟的法律運作,雖然有時法條既愚蠢又不合理,我們因此必須告知您,我們使用Cookie來提升您在本網站的體驗。這些Cookie並不會用來識別您或您的瀏覽習慣,但是它們會幫您更快的登入我們的網站。祝您Cookie愉快!
 

試試我們免費又簡單的線上預約工具!!

牙醫、醫療服務、美髮與美容沙龍、維修服務、活動策劃者、租賃公司、教育服務、政府機關、學校輔導員、…等所設計的預約系統

  • facebook
  • google-adwords
  • google-calendar
  • zapier
  • wordpress
  • HIPAA Compliance
  • funding
  • paypal
  • skrill

開發人員的API來調整及創建預約系統

使用我們的開發人員API來創建您自己的預約介面。從最簡單的小工具到多功能的應用程式,您可以依據您特定的業務來客製任何的解決方案。

Simplybook應用程式介面(API)使用的是JSON-RPC 2.0 協定

看看以API架設的預約介面之範例,並且查看這個解決方案的程式碼

在您開始創建您的小工具以前,請先註冊一個新的Simplybook帳號。接著,在管裡介面中配置您的帳號。您可以添加更多的服務、員工、地點等。完成配置您的Simplybook帳號後,即可將之用於您的應用程式。


授權

使用Simplybook的API需要一個授權的動作。您必須取得一組存取金鑰——即授權碼,以在Simplybook API中授權。為了取得這個授權碼,您必須在http://user-api.simplybook.me/login服務上呼叫JSON-RPC方法getToken以提供您個人的API金鑰。您可以從管理介面上複製您的API金鑰:到「客製功能」的頁面並且選擇API客製功能的「設定」。 接著您必須將遠端存取初始化至Simplybook API。您的請求應包含下面標題:'X-Company-Login', 'X-Token'

授權碼的取得可由用戶端或由您的伺服器來執行,然而後者是兩者中較安全的解決方案。

您可使用我們的範例中的javascript JSON-RPC-用戶端程式庫php JSON-RPC-用戶端程式庫來開發您自己的解決方案。


Client API (Company public service) authorization

從用戶端授權之代碼

取得授權碼。


var loginClient = new JSONRpcClient({
	'url': 'http://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': 'http://user-api.simplybook.me',
	'headers': {
		'X-Company-Login': YOUR_COMPANY_LOGIN,
		'X-Token': token
	},
	'onerror': function (error) {}
});

從伺服器端授權之代碼

取得授權碼。


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

初始化客戶端JSON-RPC。


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

User/Admin API (Company administration service) authorization

從用戶端授權之代碼

取得授權碼。


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

初始化客戶端JSON-RPC。


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

從伺服器端授權之代碼

取得授權碼。


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

初始化客戶端JSON-RPC。


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

從Simplybook伺服器取得數據

預約頁面通常是一個讓客戶選擇他們所需的服務、員工,及服務時間的網頁,然後客戶會輸入一些聯絡資訊並確認預約。較複雜的解決方案可包含填入不同的額外欄位、做團體預約或多次預約等等。讓我們將創造的工作流程描述為最簡單的預約頁面,然後如果您需要為您的頁面添加一些額外的功能,則請至這裡參見Simplybook 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作為參數並回傳所選員工(預設則為任何員工)可做預約的下一天之日期。 欲顯示所選日期中的時段,您需要getWorkCalendargetStartTimeMatrix方法。第一個方法給您工作日的開始及結束時間以及休息日的資訊,第二個方法則回傳一個特定日期中可預約的時段之清單。

取得工作日資訊的範例代碼


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

取得開始時間矩陣的範例代碼


$dateFrom = '2015-03-03';
$dateTo = '2015-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 = '2015-03-03 09:00:00';
$serviceId = 1;
$performerId = 1;
$availableTime = $client->calculateEndTime($startDateTime, $serviceId, $performerId);
// returns '2015-03-03 10:00:00'

當一位客戶點擊確認預約的按鈕時,您必須呼叫book方法。 這是執行所有必要的確認並在Simplybook系統中登記一個新預約的主要功能,其會蒐集預約資訊、客戶數據(如姓名及電話),以及一些額外參數。欲知本方法所有參數的描述,請見API 功能清單。 此book方法的回應含有一組獨特的代碼以及這個新預約的其他細節,如果出現任何問題,亦會回傳錯誤的清單,所以您可使用這個資訊來以便利、直觀的方式將預約結果展示給客戶。


使用API密鑰

某些情況下,book方法可能會需要確認動作。例如,如果您接受客戶的付款,則您僅在收到款項後才確認該預約。 Simplybook API的confirmBookng方法蒐集預約ID以及安全簽名以作為參數。(cancelBookng是另一個需要安全簽名的方法。) 您必需使用您的API密鑰來產生安全簽名。欲知如何完成這個動作,請見下面的範例。您可開啟管裡介面的「客製功能」頁面,然後從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 '
Confirm result
'; 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客製功能

如果您的公司需要一些特定的額外功能,您可啟用一些我們的額外客製功能。您可於管理介面的「客製功能」頁面查看完整的客製功能清單及詳細描述。啟用所需的客製功能之後,相應的API方法亦會啟動,供您使用於您的代碼中。


Booking functionality codeflow

Authorize in Simplybook API using loginClient.getToken(companyLogin, apiKey); function


Check if Service categories plugin is activated by isPluginActivated('event_category') if yes then display list of categories getCategoriesList()


Get list of services (events) and performers (units) using getEventList() and geUnitList() functions. If 'unit_map' array is available for service it means this service can be provided by given performers only.


If Any Employee selector plugin is activated isPluginActivated('any_unit') and no special duration is set for service-performer pair in 'unit_map' array then user should be allowed to select Any provider option or choose provider manually. But manual selection of performers should not be possible if getCompanyParam('any_unit__hide_other_units') is enabled


Use getStartTimeMatrix ($from as current date, $to as current date , $eventId, $unitId, $count as selected participants value ) to get available timeslots for given date. $unitId should be null if Any employee option is selected.


If Any Employee selector is active and Any employee was selected call getAvailableUnits($eventId, $dateTime, $count) to get available $unitId


If Additional fields plugin is activated isPluginActivated('event_field') call getAdditionalFields($eventId) function to get list of fields for client to fill


Call book($eventId, $unitId, $date, $time, $clientData, $additional, $count, $batchId) to make a booking.


近期預約

Misc已在United States of America,Miami, FL預約 2 分鐘前
Visa/Migration Counselling已在Australia,Brisbane預約 2 分鐘前
Gary Walker Vocal Coach 已在Japan,Tokyo預約 2 分鐘前
Combined Holistic Therapy $120 已在Canada,Oakville預約 2 分鐘前
AFP - Sydney Seminar (October 2017)已在United Kingdom,預約 2 分鐘前
Follow Up已在United States of America,Irvine預約 2 分鐘前
Rehearsal 3 Hour Block已在Australia,Coffs Harbour預約 2 分鐘前
Tax Return已在Australia,Sydney預約 2 分鐘前
'Get Healthy at Work' Brief Health Check and Risk Assessment Tocal已在Australia,Orange預約 2 分鐘前
Personal Training Session已在Australia,Safety Bay預約 2 分鐘前

最新加入的公司:

Goldsboro, United States of America
Brighton, United Kingdom
Kaneohe, United States of America
McDonough, United States of America
Belton, United States of America
Aiken, United States of America
Melbourne, Australia
Kolkata, India
Longmont, United States of America
Sainte-Catherine-de-la-Jacques-Cartier, Canada
São Paulo, Brasil
Napa, United States of America
Capalaba, Australia
Columbus, United States of America
Arndell Park, Australia
線上支援