Vinsamlegast athugið:
Við vinnum í samræmi við lög á evrópska efnahagssvæðinu og það jafnvel þótt við séum ekki alltaf sammála þeim! Þess vegna viljum við láta þig vita strax að við notum "kökur" til að bæta þjónustu Timapantanna.is Þessar "kökur" eru ekki notaðar til að fylgjast með hegðun þinni eða vafravenjum heldur til að hjálpa þér að skrá þinn með skjótari hætti.
 

Prófaðu tímapantanakerfið okkar, það er einfalt og ódýrt!!

Timapantanir.is er íslenska útgáfan af SimplyBook.me og er tímapöntunarkerfi fyrir tannlækna, heilbrigðisþjónustu, hárgreiðslu og snyrtistofur, viðgerðarþjónustur, skóla osfrv.

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

Hönnunar API vefþjónusta

Notaðu okkar API vefþjónustur (Application Programming Interface) til að búa til þitt eigin viðmót á bókunarsíðuna. Þú getur hannað hvaða viðmót sem er fyrir þína þjónustu eftir þínum þörfum.

Timapantanir.is API ( Application Programming Interface) notar JSON-RPC 2.0 protocol.

Sjá dæmi um API bókunarviðmót, og skoðaðu kóðann á þessari lausn.

Áður en þú byrjar að búa til smától (widget) vinsamlegast stofnaðu reikning hjá Tímapöntunum.is. Settu svo upp reikninginn í stjórnunarborðinu. Þar getur þú bætt við fleiri þjónustum, starfsmönnum, staðsetningum osfrv. Eftir að þú ert búin/n að setja upp reikninginn þá getur þú notað hann einnig fyrir appið.


Heimild

Til að nota API vefþjónustuna okkar þá þarftu að fá þitt einkenni og best er að fara eftir eftirfarandi enskum leiðbeiningum: You need to get an access key — access-token. In order to get this access-token you should call the JSON-RPC method getToken on http://user-api.simplybook.me/login service passing your personal API-key. You can copy your API-key at admin interface: go to the 'Plugins' link and select API plugin 'Settings'. Then you have to init remote access to Simplybook API. Your request should contain the following headers: 'X-Company-Login', 'X-Token'.

Getting the access-token can be implemented either from client side or from your server which is the more secure solution.

You may use javascript JSON-RPC-client library and php JSON-RPC-client library from our examples for your own solution development.


Client API (Company public service) authorization

Authorization from client side code

Getting the token-key.


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

Initialization JSON-RPC-client.


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

Authorization from server side code

Getting the token-key.


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

Initialization JSON-RPC-client.


$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

Authorization from client side code

Getting the token-key.


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);

Initialization JSON-RPC-client.


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) {}
});

Authorization from server side code

Getting the token-key.


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

Initialization JSON-RPC-client.


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

Getting data from Simplybook server

A booking page usually is a page where clients choose service they need, an employee and a time of their meeting. Then a client enters some contact info and confirms the booking. The more complex solutions may include filling different additional fields, making some group or multy-times booking and so on. Lets describe the workflow of creation the simpliest booking page. Then if you need to add some extra functionality to your page, see here the full list of Simplybook API methods.

So the first thing you should display is the list of services and the list of employes. Get this data by getEventList and getUnitList methods. They both return a list with complete information about each item in it, so you have many possibilities how to display services and employees at your page. To make employee filtration use unit_map property of the service list, it contains the info about employees who can provide the selected service.

Code example of getting services list


$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
// ), ...)

Code example of getting service performers list


$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
// ), ...)

The next step to a client is to pick a date and time of his service. We've used a Bootstrap date-picker in API-usage example, you can also use this or any other calendar. To set your calendar first date use getFirstWorkingDay method. It can take employee id as a parameter and returns the next date when the selected employee (or any employee in the company by default) is available for booking. To show time slots inside a selected date you need getWorkCalendar and getStartTimeMatrix methods. The first method give you an information about working day start and end time, and about day-offs. And the second one returns the list of time-slots which can be booked for a certain date.

Code example of getting work days info


$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),
//     ...
//);

Code example of getting start time matrix


$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', ....),
//);

Another usefull method you may need is calculateEndTime. Each service can have its own duration, also your company's employees possible have different work schedule form day to day. So using this method you can show to a client an end date and time of the service he've booked in a correct way.

Code example of calculating booking end time


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

When a client clicks confirm booking button you have to call book method. This is the main function which performs all necessary validations and registers a new booking in Simplybook system. It takes information about booking, client data like name and phone and some additional params. See all params descriptions of this method in API functions list. The book method responce contains an uniqe code and other details of the new booking or the list of errors if some problems occured, so you can use this information to show booking result to a client in convinient and intuitive way


Using of API secret key

In some cases the book method may require the confirmation, e.g. if your accept payments from clients you confirm booking only after the payment is already came. The Simplybook API confirmBookng method takes booking-id and secure signature as params (another method which requires secure signature is cancelBookng). For the secure signature generation your secret API-key should be used. See how it can be done in the example below. You can find the secret key at admin interface under 'Settings' link of API plugin in 'Plugins' list.

Code example of service booking and its confirmation using secret API key


$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); } }

Code example of getting intake form fields


$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 Plugins

If your company specific requires some additional functionality you can activate some of our additional plugins. The complete plugin list with detailed description is avaiable in your admin interface under the 'Plugins' link. After the necessary plugin is enabled the corresponding API methods will be activated so you can use them in your code.


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.


Niðurstöður ýmissa skoðanakannanna

  •  
    Leyfa viðskiptavini að prenta miða: 17%
  •  
    Sýna tungumála valmöguleika á bókunarsíðu: 12%
  •  
    Áminningar í appi fyrir viðskiptavini á handheldum tækjum: 15%
  •  
    Seldu vörur samhliða þjónustunni þinni: 13%
  •  
    Vikutafla sem sýnir lausa tíma m.t.t. þjónustuflokks eða starfsmanna: 20%
  •  
    Sjálfkrafa samkeyrsla með Outlook: 24%

Nýlegar bókanir

Manual Therapy var bókaður í Hamilton Ontario, Canada 2 mínútur síðan
Спортивный массаж. Подготовительный, тренировочный, восстановительный - 950 руб/сеанс (40-60 минут). var bókaður í Санкт-Петербург, Russia 2 mínútur síðan
Dress For A Mess var bókaður í Singapore, Singapore 2 mínútur síðan
Getting Ready for Growth Workshop var bókaður í London, United Kingdom 2 mínútur síðan
Sushi Making Workshop nearby Tsukiji Fish Market(Adult over 12) var bókaður í Chuo-ku, Tokyo, Japan 2 mínútur síðan
Sozo Session var bókaður í Margate, Kent,, United Kingdom 2 mínútur síðan
La bomba var bókaður í Bogotá, Colombia 2 mínútur síðan
One Day helper var bókaður í , Egypt 2 mínútur síðan
FREE Collection Service (Orders over £20) var bókaður í Bolton, United Kingdom 2 mínútur síðan
a colour service with or without cut var bókaður í Collingwood, Canada 2 mínútur síðan

Fyrirtæki sem hafa skráð sig nýlega:

Gujranwala, Pakistan
Jeff, United States of America
Dubai, United Arab Emirates
Singapore, Singapore
Guelph, Canada
Dhaka, Bangladesh
Johannesburg South, South Africa
Cambridge, United States of America
Cambridge, United States of America
Kolkata, India
Edmonton, Canada
Central, Hong_Kong
Lipa, Philippines
Singapore, Singapore
Cape Town, South Africa
Live help