PayControl Inform
PayControl Inform 2.0 (сокр. PC Inform) является модулем для платформы PayControl, обеспечивающим высокопроизводительную доставку push-уведомлений до клиентских устройств с обеспечением безопасности передаваемых через уведомление данных.
Конечному устройству информация может передаваться в двух вариантах:
- Только push-уведомление;
- Push-уведомление и полезная нагрузка (payload).
Содержание
Описание интерфейса взаимодействия с PC Inform
Интерфейс общения с сервером представляет собой HTTP RESTful интерфейс.
Отправка уведомления
Запрос
Отправка запроса производится на адрес http://<hostname>/api/notification/ с помощью HTTP POST запроса.
Данные для отправки уведомления передаются в формате JSON и содержат следующие параметры:
- message - payload, который отправляется на устройство через FCM/APNs;
- payload - (опционально) дополнительный пэйлоад;
- callback_url - (опционально) адрес, по которому будет осуществляться callback;
- time_to_live - время жизни уведомления в секундах (0 - сервер FCM/APNs не будет пытаться отправить повторно);
- priority - приоритет ("high" или "normal");
- collapse_key - значение параметра FCM collapse_key/ APNs apns-collapse-id;
Примеры отправки запроса при помощи утилиты cURL:
Android
curl \
-H "Content-Type: application/json" \
-X POST \
-d '{"device_token": "XXXXXXXXXX", "device_type": "google", "time_to_live": 3, "priority": "high", "collapse_key": "1234567890", "payload": "dGVzdA0KdGVzdCBQYXlDb250cm9sIEluZm9ybQ0KUGF5Q29udHJvbCBJbmZvcm0gdGVzdA0KdGVzdA==", "callback_url" : "http://<callbackhost>/callback.php", "message": {"notification":{"title": "Hello from Firebase", "body": "This is notification"}}}' \
http://127.0.0.1/api/notification/
iOS
curl \
-H "Content-Type: application/json" \
-X POST \
-d '{"device_token": "XXXXXXXX", "device_type": "apple", "time_to_live": 3, "priority": "high", "collapse_key": "1234567890","payload": "dGVzdA0KdGVzdCBQYXlDb250cm9sIEluZm9ybQ0KUGF5Q29udHJvbCBJbmZvcm0gdGVzdA0KdGVzdA==", "callback_url" : "http://<callbackhost>/callback.php", "message": {"aps": {"alert": "Hello from APNs", "badge": "1"}}}' \
http://127.0.0.1/api/notification/
Ответ
В ответ сервис выдает UUID-идентификатор созданного запроса на уведомление в сообщении вида:
{"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"}
Информация о доставке Push-уведомления
Запрос
Отправка запроса производится на адрес http://<hostname>/api/notification/<xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx> с помощью HTTP GET запроса, где <xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx> - идентификатор, который возвратил PC Inform при запросе на создание push-уведомления.
Пример отправки запроса при помощи утилиты cURL:
curl http://127.0.0.1/api/notification/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx
Ответ
Пример ответа:
{"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx", "device_token": "XXXXXXXXXX", "payload": "dGVzdA0KdGVzdCBQYXlDb250cm9sIEluZm9ybQ0KUGF5Q29udHJvbCBJbmZvcm0gdGVzdA0KdGVzdA==", "callback_url": null, "created_at": "2018-11-19 14:53:51.780572", "updated_at": "2018-11-19 14:53:52.344391", "status": "notification_sent"}
Получения пэйлоада
Запрос
Получения пэйлоада осуществляется с помощью отправки HTTP POST запроса на адрес http://<hostname>/api/payload/
Пример отправки запроса при помощи утилиты cURL:
curl -i \
-H "Content-Type: application/json" \
-X POST \
-d '{"auth_token": "XXXXXXXXXX", "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"}' \
http://127.0.0.1:8080/api/payload/
где:
- auth_token - авторизационный токен, вычисляемый как HMAC(sha256(`device_token`), `uuid`)
- uuid - uuid запроса на уведомление
Ответ
- Если токен невалидый, то сервис возвращает 401
- Если токен, валидный, но пэйлоада нет, то сервис возвращает 204
- Если токен валидный и пэйлоад есть, то сервис возвращает его с кодом 200. Пример:
{"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx", "payload": "dGVzdA0KdGVzdCBQYXlDb250cm9sIEluZm9ybQ0KUGF5Q29udHJvbCBJbmZvcm0gdGVzdA0KdGVzdA=="}
Callback
Callbacker с использованием callback-адреса, указанного при создании задачи, выполняет HTTP POST вызов в Прикладную систему для уведомления о статусе получения уведомления.
Обратный вызов прикладной системы выполняется при выполнении следующих условий.
- При создании транзакции указан адрес, на который будет отправляться callback;
- При создании запроса на отправку уведомления он был дополнен пэйлоадом.
Отправка callback'а происходит после получения пэйлоада.
Пример отправляемых в callback данных:
{"task_uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx", "status": 3}