PayControl Inform — различия между версиями
(Новая страница: «{{В работе}} '''PayControl Inform 2.0''' (сокр. PC Inform) является модулем для платформы PayControl, обеспечиваю…») |
|||
Строка 1: | Строка 1: | ||
{{В работе}} | {{В работе}} | ||
'''PayControl Inform 2.0''' (сокр. PC Inform) является модулем для платформы PayControl, обеспечивающим высокопроизводительную доставку push-уведомлений до клиентских устройств с обеспечением безопасности передаваемых через уведомление данных. | '''PayControl Inform 2.0''' (сокр. PC Inform) является модулем для платформы PayControl, обеспечивающим высокопроизводительную доставку push-уведомлений до клиентских устройств с обеспечением безопасности передаваемых через уведомление данных. | ||
− | =Описание взаимодействия с PC Inform= | + | |
− | ==Отправка уведомления | + | Конечному устройству информация может доставляться в двух вариантах: |
+ | * Только push-уведомление; | ||
+ | * Push-уведомление и полезная нагрузка (payload). | ||
+ | =Описание интерфейса взаимодействия с PC Inform= | ||
+ | Интерфейс общения с сервером представляет собой HTTP RESTful интерфейс. | ||
+ | ==Отправка уведомления== | ||
===Запрос=== | ===Запрос=== | ||
− | + | Отправка запроса производится на адрес http://<hostname>/api/notification/ с помощью '''HTTP POST''' запроса. | |
− | + | ||
− | + | Данные для отправки уведомления передаются в формате JSON и содержат следующие параметры: | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
* message - payload, который отправляется на устройство через APNs | * message - payload, который отправляется на устройство через APNs | ||
− | * payload - дополнительный | + | * payload - (опционально) дополнительный пэйлоад; |
* time_to_live - время жизни уведомления в секундах (0 - сервер APNs не будет пытаться отправить повторно) | * time_to_live - время жизни уведомления в секундах (0 - сервер APNs не будет пытаться отправить повторно) | ||
* priority - приоритет ("high" или "normal") | * priority - приоритет ("high" или "normal") | ||
* collapse_key - значение параметра apns-collapse-id, отправляемого в APNs | * collapse_key - значение параметра apns-collapse-id, отправляемого в APNs | ||
− | + | ||
− | + | Примеры отправки запроса при помощи утилиты [[wikipedia:ru:curl|cURL]]: | |
− | + | ====Android==== | |
− | |||
− | |||
− | == | ||
− | === | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | + | curl \ | |
-H "Content-Type: application/json" \ | -H "Content-Type: application/json" \ | ||
-X POST \ | -X POST \ | ||
− | -d '{"device_token": "XXXXXXXXXX", "device_type": "google", "time_to_live": 3, "priority": "high", "collapse_key": "1234567890", "message": {"title": "Hello from Firebase", "body": "This is notification"}}' \ | + | -d '{"device_token": "XXXXXXXXXX", "device_type": "google", "time_to_live": 3, "priority": "high", "collapse_key": "1234567890", "payload": "dGVzdA0KdGVzdCBQYXlDb250cm9sIEluZm9ybQ0KUGF5Q29udHJvbCBJbmZvcm0gdGVzdA0KdGVzdA==", "message": {"notification":{"title": "Hello from Firebase", "body": "This is notification"}}}' \ |
http://127.0.0.1/api/notification/ | http://127.0.0.1/api/notification/ | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | ====iOS==== | |
− | + | <syntaxhighlight lang="bash"> | |
− | + | 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==", "message": {"aps": {"alert": "Hello from APNs", "badge": "1"}}}' \ | |
+ | http://127.0.0.1/api/notification/ | ||
+ | </syntaxhighlight> | ||
===Ответ=== | ===Ответ=== | ||
+ | В ответ сервис выдает UUID-идентификатор созданного запроса на уведомление в сообщении вида: | ||
<syntaxhighlight lang="json"> | <syntaxhighlight lang="json"> | ||
{"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"} | {"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"} | ||
Строка 44: | Строка 42: | ||
==Информация о доставке Push-уведомления== | ==Информация о доставке Push-уведомления== | ||
===Запрос=== | ===Запрос=== | ||
− | + | Отправка запроса производится на адрес http://<hostname>/api/notification/<xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx> с помощью '''HTTP GET''' запроса, где <xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx> - идентификатор, который возвратил PC Inform при запросе на создание push-уведомления. | |
+ | |||
+ | Пример отправки запроса при помощи утилиты cURL: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | + | curl http://127.0.0.1/api/notification/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx | |
</syntaxhighlight> | </syntaxhighlight> | ||
===Ответ=== | ===Ответ=== | ||
Пример ответа: | Пример ответа: | ||
− | <syntaxhighlight lang="json">{"uuid": " | + | <syntaxhighlight lang="json">{"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"}</syntaxhighlight> |
==Получения пэйлоада== | ==Получения пэйлоада== | ||
− | |||
===Запрос=== | ===Запрос=== | ||
+ | Получения пэйлоада осуществляется с помощью отправки '''HTTP POST''' запроса на адрес http://<hostname>/api/payload/ | ||
+ | |||
+ | Пример отправки запроса при помощи утилиты cURL: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | + | 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/ | |
</syntaxhighlight> | </syntaxhighlight> | ||
где: | где: |
Версия 18:19, 19 ноября 2018
PayControl Inform 2.0 (сокр. PC Inform) является модулем для платформы PayControl, обеспечивающим высокопроизводительную доставку push-уведомлений до клиентских устройств с обеспечением безопасности передаваемых через уведомление данных.
Конечному устройству информация может доставляться в двух вариантах:
- Только push-уведомление;
- Push-уведомление и полезная нагрузка (payload).
Содержание
Описание интерфейса взаимодействия с PC Inform
Интерфейс общения с сервером представляет собой HTTP RESTful интерфейс.
Отправка уведомления
Запрос
Отправка запроса производится на адрес http://<hostname>/api/notification/ с помощью HTTP POST запроса.
Данные для отправки уведомления передаются в формате JSON и содержат следующие параметры:
- message - payload, который отправляется на устройство через APNs
- payload - (опционально) дополнительный пэйлоад;
- time_to_live - время жизни уведомления в секундах (0 - сервер APNs не будет пытаться отправить повторно)
- priority - приоритет ("high" или "normal")
- collapse_key - значение параметра apns-collapse-id, отправляемого в APNs
Примеры отправки запроса при помощи утилиты 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==", "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==", "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
Callback
Callbacker с использованием callback-адреса, указанного при создании задачи, выполняет HTTP-вызов в Прикладную систему для уведомления о статусе получения уведомления. После callback-вызова Callbacker вносит информацию в БД о статусе задачи «callback выполнен». Если в задаче не был указан callback-адрес, то callback не выполняется.