PayControl Inform
PayControl Inform 2.0 (сокр. PC Inform) является модулем для платформы PayControl, обеспечивающим высокопроизводительную доставку push-уведомлений до клиентских устройств с обеспечением безопасности передаваемых через уведомление данных.
Содержание
Описание взаимодействия с PC Inform
Отправка уведомления на iOS
Запрос
Пример отправки запроса при помощи утилиты wikipedia:ru:curl
$ curl \
-H "Content-Type: application/json" \
-X POST \
-d '{"device_token": "XXXXXXXXXX", "device_type": "apple", "time_to_live": 3, "priority": "high", "collapse_key": "1234567890", "message": {"aps": {"alert": "Hello from APNs", "badge": "1"}}}' \
http://127.0.0.1/api/notification/
где:
- message - payload, который отправляется на устройство через APNs
- payload - дополнительный payload, который отправляется устройству по запросу к сервису `payloader`
- time_to_live - время жизни уведомления в секундах (0 - сервер APNs не будет пытаться отправить повторно)
- priority - приоритет ("high" или "normal")
- collapse_key - значение параметра apns-collapse-id, отправляемого в APNs
Ответ
В ответ сервис выдает UUID-идентификатор созданного запроса на уведомление в сообщении вида:
{"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"}
Отправка уведомления на 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", "message": {"title": "Hello from Firebase", "body": "This is notification"}}' \
http://127.0.0.1/api/notification/
где:
- message - payload, который отправляется на устройство через Firebase Cloud Messaging
- payload - дополнительный payload, который отправляется устройству по запросу к сервису `payloader`
- time_to_live - время жизни уведомления в секундах (0 - сервер FCM не будет пытаться отправить повторно)
- priority - приоритет ("high" или "normal")
- collapse_key - значение параметра collapse_key, отправляемого в FCM
Ответ
{"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"}
Информация о доставке Push-уведомления
Запрос
По данному uuid можно впоследствии получить информацию по доставке уведомления запросом:
$ curl http://127.0.0.1/api/notification/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx
Ответ
Пример ответа:
{"uuid": "4e813216-2deb-4846-87d9-5f21f2754ac8", "device_token": "cyd7Pj2uY2k:APA91bG1MMxsOjyEgUThqkuf55zExXKSPq1DBNyLKLjW-h-Hte3Alb9fXaOrgjC1CqubEGEp-80JCAp_59Qsdad4Xaez7ht4oJe8PGvtJmQxTEs2SWaMZyctxVjI_v-us18d2v-WEaNu", "payload": null, "callback_url": null, "created_at": "2018-11-19 11:04:30.880346", "updated_at": "2018-11-19 11:04:31.460938", "status": "notification_sent"}
Получения пэйлоада
- Опиание запроса на получения пэйлоада
Запрос
$ 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 не выполняется.