PayControl Inform — различия между версиями

Материал из PayControl Wiki
Перейти к: навигация, поиск
Строка 1: Строка 1:
{{В работе}}
 
 
'''PayControl Inform 2.0''' (сокр. PC Inform) является модулем для платформы PayControl, обеспечивающим высокопроизводительную доставку push-уведомлений до клиентских устройств с обеспечением безопасности передаваемых через уведомление данных.
 
'''PayControl Inform 2.0''' (сокр. PC Inform) является модулем для платформы PayControl, обеспечивающим высокопроизводительную доставку push-уведомлений до клиентских устройств с обеспечением безопасности передаваемых через уведомление данных.
  
Строка 41: Строка 40:
 
{"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"}
 
{"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"}
 
</syntaxhighlight>
 
</syntaxhighlight>
==Информация о доставке Push-уведомления==
+
==Информация о состоянии Push-уведомления==
 
===Запрос===
 
===Запрос===
 
Отправка запроса производится на адрес http://<hostname>/api/notification/<xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx> с помощью '''HTTP GET''' запроса, где <xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx> - идентификатор, который возвратил PC Inform при запросе на создание push-уведомления.
 
Отправка запроса производится на адрес http://<hostname>/api/notification/<xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx> с помощью '''HTTP GET''' запроса, где <xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx> - идентификатор, который возвратил PC Inform при запросе на создание push-уведомления.
Строка 54: Строка 53:
 
==Получения пэйлоада==
 
==Получения пэйлоада==
 
===Запрос===
 
===Запрос===
Получения пэйлоада осуществляется с помощью отправки '''HTTP POST''' запроса на адрес http://<hostname>/api/payload/
+
Получения пэйлоада осуществляется мобильным устройством с помощью отправки '''HTTP POST''' запроса на адрес http://<hostname>/api/payload/
  
 
Пример отправки запроса при помощи утилиты cURL:
 
Пример отправки запроса при помощи утилиты cURL:
Строка 74: Строка 73:
 
Callbacker с использованием callback-адреса, указанного при создании задачи, выполняет HTTP POST вызов в Прикладную систему для уведомления о статусе получения уведомления.
 
Callbacker с использованием callback-адреса, указанного при создании задачи, выполняет HTTP POST вызов в Прикладную систему для уведомления о статусе получения уведомления.
  
Обратный вызов прикладной системы выполняется при выполнении следующих условий.
+
Обратный вызов прикладной системы выполняется при условии, что при создании транзакции указан адрес, на который будет отправляться callback.
* При создании транзакции указан адрес, на который будет отправляться callback;
+
 
* При создании запроса на отправку уведомления он был дополнен пэйлоадом.
+
Отправка callback'а происходит после запроса на получение пэйлоада.
Отправка callback'а происходит после получения пэйлоада.
 
  
 
Пример отправляемых в callback данных:
 
Пример отправляемых в callback данных:

Версия 20:22, 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, который отправляется на устройство через 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}