На вашому сайті має бути html-форма онлайнового запису до лікаря (заявки), яка надсилається на ваш сервер після заповнення її пацієнтом. На сервері вона перевіряється, її вміст підписується секретним ключем і відправляється на наш ендпоінт протоколом REST у форматі json. Якщо запит був успішним, у відповіді буде код 201, інакше буде код 400 та повідомлення про помилку в http-заголовку Error-Message.
Секретний ключ не повинен зберігатись на html-сторінці!
POST https://my.iclinic.ua/rest/api/v1/lead
, ендпоінт повинен викликатися виключно з вашого сервера та містити наступні http-заголовки:
Id та secret отримує власник облікового запису, звернувшись до нашої технічної підтримки.
Тіло запиту містить обʼєкт заявки у форматі json. Кодування даних – UTF8.
Обʼєкт заявки (payload) містить такі поля:
Назва | Макс. довжина | Обовʼязкове |
---|---|---|
name | 50 | Так |
phone | 20 | Так |
date | 10 | Ні |
time | 10 | Ні |
comments | 200 | Ні |
utm | 250 | Ні |
clinic | 10 | Ні |
Усі поля мають тип даних string без додаткового форматування. Поле clinic рекомендується використовувати тільки для облікових записів з кількома клініками, ідентифікатори клінік керівництво може отримати у технічної підтримки.
При надсиланні запиту потрібно включити до нього http-заголовок Sign, який формується за алгоритмом base64(sha256(secret + payload))
.
Використовуйте ці набори даних для перевірки своєї реалізації механізму підпису:
Testmessage
wfYBAbAh7XPPH7V1mmVSUEPCn+8zyoImeDglhf/T7jg=
DemoScrt{"name":"Пацієнт","date":"2020-01-15","time":"10:00","phone":"000000","comments":"Коментарі"}
PvvBzd7q7Nmqa+CZB6xqZFs0lWEtvQVjRDnELD+k0p0=
Запит можна протестувати утилітою cURL, підставивши потрібні значення в команду:
curl -X POST https://my.iclinic.ua/rest/api/v1/lead -H 'Content-Type: application/json;charset=utf-8' -H 'Id: IDENTIFIER' -H 'Sign: SIGNATURE' -d '{"name":"NAME","date":"DATE","time":"TIME","phone":"PHONE","comments":"COMMENTS"}'
Після отримання заявки вона відображається в інтерфейсі iClinic
Список отриманих заявок доступний на сторінці реєстратури під календарем виглядає так:
<?php
$id = ID;
$secret = 'SECRET';
$name = $_POST['name'];
$phone = $_POST['phone'];
$date = $_POST['date'];
$time = $_POST['time'];
$comments = $_POST['comments'];
if (empty($name) || strlen($name) > 50 || empty($phone) || strlen($phone) > 20 || !empty($date) && strlen($date) > 10 || !empty($time) && strlen($time) > 10 || !empty($comments) && strlen($comments) > 200) {
http_response_code(400);
}
$payload = "{\"name\":\"$name\",\"date\":\"$date\",\"time\":\"$time\",\"phone\":\"$phone\",\"comments\":\"$comments!\"}";
$signature = base64_encode(hash('sha256', $secret . $payload, true));
$url = 'https://my.iclinic.ua/rest/api/v1/lead';
$options = array(
'http' => array(
'header' => array(
"Id: $id",
"Sign: $signature",
"Content-Type: application/json; charset=utf-8"
),
'method' => 'POST',
'content' => $payload
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) { /* Handle error */ }
flush();
?>