Webhook для интеграции Worksman
с внешними системами

Отправка уведомлений на Ваш сервер
Журнал уведомлений

Worksman наводит порядок
в делах.

Экономит 50% времени менеджера.

Снижает зависимость работодателя от сотрудников.
Webhook в Worksman — это система автоматических оповещений о событиях происходящих с выплатами сотрудникам. Создана для интеграции Worksman с системами управленческого учета или другими CRM , например, 1С. На данный момент webhook работают только с Выплатами, в будущем мы планируем расширить возможности оповещения по другим событиям
Webhook для интеграции worksman с внешними системами

Как это работает ?

- Начислены деньги по заказу
- Выплачены деньги по заказу
- Отредактировано начисление
- Обнулено начисление
- Отменена выплата

Данные о событии
одним пакетом в
формате
json

Отправляются на Ваш сервер типа: https://company.ru

Ваш сервер возвращает
ответ об успешно обработанном событии

Информация сохраняеться
в журнале Worksman

На основании обработанных событий создаются или редактируются операции во внешних системах
(например 1С)

Инструкция для разработчика

Для обеспечения корректной работы данного функционала необходимо выполнить несколько простых шагов:
1. Указать Url, принимающий события
(внешний адрес, на который будут приходить данные).
Обязательно должен быть подключен https://

Url указывается на странице настроек администратором Worksman
Настройки/Веб-хуки

Пример url: https://example.com/foo/bar

2. Обеспечить правильную обработку входящих данных
на стороне сервиса, который принимает события.
Пример структуры входящих данных:

Array 
( 
   [0] => Array 
   ( 
         [payment_id] => 777 
         [operation_type] => payout 
         [performer_id] => 981 
         [performer_full_name] => Попов Александр 
         [vacancy_name] => Техник 
         [job_number] => 1 
         [job_title] => Монтаж Кондиционера 
         [total_sum] => 2700 
         [penalty_sum] => 0 
         [bonus_sum] => 0 
         [rate_sum] => 900 
         [comment_bonus] => 
         [comment_penalty] => 
         [datetime] => 2018-07-19 17:59:17 
         [item_id] => 64 
    ) 
) 
Описание полей передающихся webhook:

- "payment_id": id выплаты (применима ко всем статусам операции) (int). 
- "operation_type": тип операции (string). 
- "performer_id": id исполнителя (int). 
- "performer_full_name": фамилия и имя исполнителя (string). 
- "vacancy_name": название вакансии, на которую был назначен данный исполнитель (тоже, что и название специальности исполнителя) (string). 
- "job_number": номер заказа (string). 
- "job_title": название заказа (string). 
- "total_sum": окончательная сумма (float). 
- "penalty_sum": сумма штрафа (float). 
- "bonus_sum": сумма бонуса (float). 
- "rate_sum": сумма ставки (float). 
- "comment_bonus": комментарий по бонусу (string). 
- "comment_penalty": комментарий по штрафу (string). 
- "datetime": дата и время действия в формате (Y-m-d H:i:s) (string). 
- Формат ответа от внешнего сервиса - Json. 
- "item_id": обязательный параметр ответа, указывающий на конкретную операцию в полученном "пакете". 
- "status": обязательный параметр ответа, указывающий статус выполнения операции, может принимать формат "true" или "false" (тип данных: boolean) 
.
3. Обеспечить передачу соответствующего ответа*
*ответ должен быть в формате Json
Пример структуры ответа на событие:


Array 
( 
     [0] => Array 
      ( 
         [item_id] => 64 
         [status] => 1 
      ) 
) 

Наша система обеспечивает пакетную передачу данных, например при срабатывании события "массовой выплаты".
Таким образом, входящие данные могут быть в виде множественного массива, где у каждого элемента будет свой "item_id".

Ответ от внешней системы так же должен быть множественным массивом в формате Json, каждый элемент которого обязан содержать массив, с присутствующим "item_id" и "status", который подтверждает успех обработки данного "item". В случае какой-либо неудачи статус будет установлен в "false".
Журнал событий

В Worksman есть журнал событий, который отображает информацию по всем иницированным событиям. В данном журнале могут
присутствовать, как "успешные", так и "не успешные" события. "Не успешное" событие можно отправить повторно вручную, нажав на соответствующую кнопку.


Существенный акцент стоит сделать и на входящий массив данных. Так, у каждого элемента массива существует свой "operation_type", который указывает на тип операции (события).

В Worksman существует 5 вариантов статусов событий по выплатам:
1. accrual - начисление
2. change_accrual - изменение начисления
3. zeroing_accrual - обнуление начисления
4. payment - выплата
5. cancel_payment - отмена выплаты

Время соединения с внешним сервисом:
30 секунд
по истечении времени - статус пакета операций устанавливается в false
Время выполнения скрипта:
60 секунд
по истечении времени - статус пакета операций устанавливается в false