PC Pusher 5.2 — различия между версиями

Материал из PayControl Wiki
Перейти к: навигация, поиск
(Новая страница: «=Что нового= С версии 5.2 для Pusher'а не требуется БД. ==Аутентификационные данные и шаблоны п…»)
 
Строка 1: Строка 1:
 
=Что нового=
 
=Что нового=
С версии 5.2 для Pusher'а не требуется БД.
+
* С версии 5.2 для Pusher'а не требуется БД.
 +
* Поддержка отправки на устройства Huawei.
 
==Аутентификационные данные и шаблоны пушей==
 
==Аутентификационные данные и шаблоны пушей==
 
Аутентификационные данные и шаблоны для отправки пушей на приложения PC зашиты в модуль сервера. Таким образом, для типового использования с приложением PC конфигурирование модуля не требуется.
 
Аутентификационные данные и шаблоны для отправки пушей на приложения PC зашиты в модуль сервера. Таким образом, для типового использования с приложением PC конфигурирование модуля не требуется.
Строка 93: Строка 94:
 
"google_api_key": "AAAAoZ7vyz4:APA91bFqLfNe... ...DbKBCGCXk"
 
"google_api_key": "AAAAoZ7vyz4:APA91bFqLfNe... ...DbKBCGCXk"
 
}
 
}
 +
},
 +
"huawei": {
 +
"client_secret": "0a5be... ...f04bec3a",
 +
"client_id": "10... ...79"
 
}
 
}
 
}
 
}
Строка 146: Строка 151:
 
           "pc_notification_timeout": 600,
 
           "pc_notification_timeout": 600,
 
           "pc_collapse_id": "%USER_ID%"
 
           "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%"
 +
            ]
 +
          }
 
         }
 
         }
 
       ]
 
       ]

Версия 14:57, 26 октября 2020

Что нового

  • С версии 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/bundle id%.json в директории apps. Для iOS достаточно только одного из перечисленных вариантов аутентификации (p8/p12/firebase). Пример файла с аутентификационными данными:

{
	"android": {
		"google_api_key": "AAAAoZ7vyz4:APA91bFqLfNe... ...DbKBCGCXk"
	},
	"ios": {
		"apns_p8": {
			"use_dev_gate": false,
			"apns_expiration": 180,
			"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,
			"apns_expiration": 180,
			"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%"
            ]
          }
        }
      ]
    }
  }
}