PC Pusher 5.2

Материал из PayControl Wiki
Версия от 12:10, 13 октября 2022; D.bizyukov (обсуждение | вклад) (Настройка PC Pusher для 3.8)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
В работе
Уведомление. Данная статья также доступна тут


Что нового

  • С версии 5.2 для Pusher'а не требуется БД.
  • Поддержка отправки на устройства Huawei.

Аутентификационные данные и шаблоны пушей

Аутентификационные данные и шаблоны для отправки пушей на приложения PC зашиты в модуль сервера. Таким образом, для типового использования с приложением PC конфигурирование модуля не требуется.

Состояния отправленных пушей

Состояния отправленных пушей хранится в памяти модуля сервера. Размер кольцевого буфера для хранения статусов пушей равен 1000. Место пуша в очереди не меняется от момента создания.

Конфигурирование

В параметры конфигурации входит:

  • общие параметры модуля;
  • аутентификационные данные для приложения (дифференцируются по application/bundle id);
  • шаблоны для прикладных систем (дифференцируются по systemid).

Поиск параметров конфигурации осуществляются в следующих директориях последовательно, до нахождения первой из перечисленных:

  • /opt/wildfly/pc_pusher
  • /opt/pc/pc_pusher
  • C:\\pc\\pc_pusher
  • C:\\wildfly\\pc_pusher

либо в директории, заданной через переменные окружения, параметром -Dpcp_config=. Если путь к директории задан через переменные окружения задан, то поиск в директориях по-умолчанию не осуществляется.

Структура директории

.
├── apps
│   ├── com.example.corp.dev.json
│   ├── com.example.cort.json
│   ├── com.example.retail.dev.json
│   └── com.example.retail.json
├── systems
│   └── 3550fa38-5d17-4fbf-a660-506227a2ed0e.json
└── pusher.conf.json

Общие параметры

Общие параметры модуля задаются в корне конфигурационной директории в файле pusher.conf.json.

Свойство Описание
debug_info Включение вывода отладочной информации.
proxy Параметры для подключения через прокси.
notification_status_buffer_size Размер очереди для хранения статусов транзакций.
core_size Первоначальное количество воркеров.
queue_size Если до этого значения вырастает очередь, то количество воркеров увеличивается до max_core_size.
max_core_size Максимальное количество воркеров. Если очередь заполнилась максимально, то возвращается Exception "TASKS_QUEUE_IS_FULL" (HTTP 400, PC_Error 313).
performance_log При включении debug_info, то в этом случае запустится демон-процесс, который с периодом performance_log_period будет подсчитывать производительность пушера и выводить результаты в лог.

Пример конфигурационного файла

Приведённые значения установлены по умолчанию

{
  "debug_info": false,
  "notification_status_buffer_size": 1000,
  "proxy": {
    "host": null,
    "port": 3128,
    "username": null,
    "password": null
  },
  "push_tasks_pool": {
    "core_size": 5,
    "max_core_size": 50,
    "queue_size":500
  },
  "performance_log": false,
  "performance_log_period": 1000
}

Аутентификационные данные для приложений

Аутентификационные данные для отправки push-уведомлений в приложения задаются в файлах с именем %app_id%.json в директории apps (где %app_id% — application/bundle ID).

Для iOS достаточно только одного из перечисленных вариантов аутентификации (p8/p12/firebase).

Пример файла с аутентификационными данными:

{
	"android": {
		"google_api_key": "AAAAoZ7vyz4:APA91bFqLfNe... ...DbKBCGCXk"
	},
	"ios": {
		"apns_p8": {
			"use_dev_gate": false,
			"apns_key_id": "JVBQX52N5Z",
			"apns_team_id": "48HZH4RWJD",
			"apns_key": "-----BEGIN PRIVATE KEY-----\nMIGTAgEAMBMGByqGSM49AgE... ...tRHxUI6\n-----END PRIVATE KEY-----"
		},
		"apns_p12": {
			"use_dev_gate": false,
			"p12_file": "/opt/pc/apns_keyfile.p12",
			"p12_pass": "Pa$$w0rd"
		},
		"firebase": {
			"google_api_key": "AAAAoZ7vyz4:APA91bFqLfNe... ...DbKBCGCXk"
		}
	},
	"huawei": {
		"client_secret": "0a5be... ...f04bec3a",
		"client_id": "10... ...79"
	}
}

Шаблоны push-уведомлений

Шаблоны push-уведомлений в приложения задаются в файлах с именем %systemid%.json, либо default.json в директории systems. Приоритет имеет файл с указанным SystemID. Пример файла с шаблонами:

{
  "android": {
    "templates": {
      "transaction": [
        {
          "to": "%DEVICE_TOKEN%",
          "notification": {
            "tag": "%USER_ID%",
            "title": "PayControl",
            "body": "Новая операция для подтверждения",
            "icon": "paycontrol_push",
            "sound": "default"
          },
          "data": {
            "type": "PayControl_v2"
          }
        },
        {
          "to": "%DEVICE_TOKEN%",
          "data": {
            "type": "PayControl_v2",
            "userid": "%USER_ID%",
            "transactionid": "%TRANSACTION_ID%"
          }
        }
      ]
    }
  },
  "ios": {
    "use_dev_gate": false,
    "templates": {
      "transaction": [
        {
          "aps": {
            "alert": "Новая операция для подтверждения",
            "sound": "default",
            "badge": 1,
            "mutable-content": 1,
            "category": "NEW_OPERATION"
          },
          "type": "PayControl",
          "userid": "%USER_ID%",
          "transactionid": "%TRANSACTION_ID%",
          "pc_notification_type": "alert",
          "pc_notification_priority": 10,
          "pc_notification_timeout": 600,
          "pc_collapse_id": "%USER_ID%"
        }
      ]
    }
  },
  "huawei": {
    "templates": {
      "transaction": [
        {
          "validate_only": false,
          "message": {
            "android": {
              "notification": {
                "tag": "%USER_ID%",
                "title": "PayControl",
                "body": "Новая операция для подтверждения",
                "icon": "paycontrol_push",
                "click_action": {
                  "type": 3
                }
              }
            },
            "token": [
              "%DEVICE_TOKEN%"
            ]
          }
        },
        {
          "validate_only": false,
          "message": {
            "android": {
              "collapse_key": -1,
              "urgency": "HIGH",
              "ttl": "86400",
              "data": "{\"type\": \"PayControl_v2\",\n\"userid\": \"%USER_ID%\",\"transactionid\": \"%TRANSACTION_ID%\"}"
            },
            "token": [
              "%DEVICE_TOKEN%"
            ]
          }
        }
      ]
    }
  }
}

Настройка PC Pusher для 3.8

Если для подтверждения транзакций используется приложение PayControl, то данная настройка не требуется.

По умолчанию, если app/bundle id для отправки пуш-уведомлений явно не указан для устройства, PCS 3.8 отправляет пуши в приложение PayControl Classic.

Для отправки пушей в другое приложения необходимо:

  1. Произвести настройки аутентификационных данных "другого" мобильного приложения
  2. Прописать app/bundle id необходимого приложения в БД PCS(после выполнения запроса необходимо перезапустить Wildfly):

Пример:

insert into pc_sys_property values (nextval('pc_setting_seq'), 'APP_ID_FOR_PUSHER', '{"Android":"com.example.mobile.app","iOS":"com.example.apple.app","Huawei":"com.example.apple.app"}');

Шаблоны:

  • PostgreSQL
    insert into pc_sys_property values (nextval('pc_setting_seq'), 'APP_ID_FOR_PUSHER', '{"Android":"your_appid","iOS":"your_appid","Huawei":"your_appid"}');
    
  • MS SQL
    insert into pc_sys_property values (NEXT VALUE FOR PC_SETTING_SEQ, 'APP_ID_FOR_PUSHER', '{"Android":"your_appid","iOS":"your_appid","Huawei":"your_appid"}');
    
  • Oracle
    insert into pc_sys_property values (PC_SETTING_SEQ.NEXTVAL, 'APP_ID_FOR_PUSHER', '{"Android":"your_appid","iOS":"your_appid","Huawei":"your_appid"}');