Обновление PCIS до версии 3.7 — различия между версиями
Строка 42: | Строка 42: | ||
Где значение поля setting_id будет установлено автоматически используя значение счётчика записей таблицы, а значение в поле setting_value будет установлено следующим образом: | Где значение поля setting_id будет установлено автоматически используя значение счётчика записей таблицы, а значение в поле setting_value будет установлено следующим образом: | ||
* 1 - данные из таблицы ''pc_push_credentials'' успешно перенесены в таблицу ''pc_split_pusher_credentials''. Для отправки будут использоваться данные из ''pc_split_pusher_credentials''. | * 1 - данные из таблицы ''pc_push_credentials'' успешно перенесены в таблицу ''pc_split_pusher_credentials''. Для отправки будут использоваться данные из ''pc_split_pusher_credentials''. | ||
− | * 0 - при переносе данных из таблицы ''pc_push_credentials'' возникли проблемы. Для отправки будут использоваться данные из ''pc_push_credentials''. | + | * 0 - при переносе данных из таблицы ''pc_push_credentials'' возникли проблемы. Для отправки будут использоваться данные из ''pc_push_credentials''. В этом случае можно добавить аутентификационные данные для отправки в новую таблицу [[#Перенос данных в новую таблицу вручную|вручную]]. |
Если такая запись не была создана, значит попытка отправки Push-уведомления не производилась. | Если такая запись не была создана, значит попытка отправки Push-уведомления не производилась. | ||
== Добавление записей для нового приложения == | == Добавление записей для нового приложения == | ||
Строка 107: | Строка 107: | ||
'%SYSTEMID%'); | '%SYSTEMID%'); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | == Перенос данных в новую таблицу вручную == | ||
+ | Если миграция не произошла автоматически, то можно внести данные в таблицу вручную. Для этого необходимо выполнить следующие запросы к БД PCIS, предварительно заменив %SYSTEMID% на корректное значение: | ||
+ | * PostgreSQL <syntaxhighlight lang="sql"> | ||
+ | INSERT INTO pc_split_pusher_credentials ( | ||
+ | id, | ||
+ | appid, | ||
+ | credentials, | ||
+ | is_default, | ||
+ | os, | ||
+ | systemid) | ||
+ | VALUES ( | ||
+ | nextval('pc_split_pusher_credentials_id_seq'), | ||
+ | 'ru.safe-tech.PayControl.v3', | ||
+ | '{"google_api_key":"AAAAZJTm6y0:APA91bF1OQYv9T2opZtIMJPZknA7tGLifzvTVB3PFSlQejBzPzyeYg4JFn-nud5mE_pZe920I2zR-8Lv-yabeaJ8PdduS96G3ESj_pfxAJAhaT1JistaXMchspMkPLL0e8tLxCmBzhda"}', | ||
+ | 1, | ||
+ | 'Android', | ||
+ | '%SYSTEMID%'); | ||
+ | INSERT INTO pc_split_pusher_credentials ( | ||
+ | id, | ||
+ | appid, | ||
+ | credentials, | ||
+ | is_default, | ||
+ | os, | ||
+ | systemid) | ||
+ | VALUES ( | ||
+ | nextval('pc_split_pusher_credentials_id_seq'), | ||
+ | 'ru.safe-tech.PayControl.v3', | ||
+ | '{"apns_key_file":"/opt/wildfly/safetech-apns-JVBQX52N5Z.p8","apns_key_id":"JVBQX52N5Z","apns_team_id":"48HZH4RWJD"}', | ||
+ | 1, | ||
+ | 'iOS', | ||
+ | '%SYSTEMID%'); | ||
+ | </syntaxhighlight> | ||
+ | * MS SQL <syntaxhighlight lang="sql"> | ||
+ | INSERT INTO pc_split_pusher_credentials ( | ||
+ | appid, | ||
+ | credentials, | ||
+ | is_default, | ||
+ | os, | ||
+ | systemid) | ||
+ | VALUES ( | ||
+ | 'ru.safe-tech.PayControl.v3', | ||
+ | '{"google_api_key":"AAAAZJTm6y0:APA91bF1OQYv9T2opZtIMJPZknA7tGLifzvTVB3PFSlQejBzPzyeYg4JFn-nud5mE_pZe920I2zR-8Lv-yabeaJ8PdduS96G3ESj_pfxAJAhaT1JistaXMchspMkPLL0e8tLxCmBzhda"}', | ||
+ | 1, | ||
+ | 'Android', | ||
+ | '%SYSTEMID%'); | ||
+ | |||
+ | INSERT INTO pc_split_pusher_credentials ( | ||
+ | appid, | ||
+ | credentials, | ||
+ | is_default, | ||
+ | os, | ||
+ | systemid) | ||
+ | VALUES ( | ||
+ | 'ru.safe-tech.PayControl.v3', | ||
+ | '{"apns_key_file":"/opt/wildfly/safetech-apns-JVBQX52N5Z.p8","apns_key_id":"JVBQX52N5Z","apns_team_id":"48HZH4RWJD"}', | ||
+ | 1, | ||
+ | 'iOS', | ||
+ | '%SYSTEMID%'); | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Затем скорректировать значение, указывающее на то, что миграция прошла: | ||
+ | <syntaxhighlight lang="sql"> | ||
+ | update pc_sys_property set setting_value = '1' where setting_name='USE_SPLIT_PUSHER'; | ||
+ | </syntaxhighlight> | ||
+ | и [[Руководство_администратора_PayControl#Запуск и остановка служб сервера PayControl|перезапустить wildfly]]. | ||
= Описание процесса отката изменений = | = Описание процесса отката изменений = | ||
При возникновении проблем при обновлении необходимо удалить новый файл модуля сервера и заменить его старым файлом. При замене файлов необходимо проверить, что в директории ''deployments'' отсутствуют файлы с расширением undeployed. | При возникновении проблем при обновлении необходимо удалить новый файл модуля сервера и заменить его старым файлом. При замене файлов необходимо проверить, что в директории ''deployments'' отсутствуют файлы с расширением undeployed. |
Версия 13:19, 23 сентября 2019
В связи с подготовкой выхода новой версии мобильного приложения PayControl было подготовлено обновление сервера с целью обеспечения:
- поддержки тем оформления одновременно для нового и классического приложения;
- поддержки возможности отправки Push-уведомлений в разные приложения, в зависимости от того, какое установлено у пользователя.
Описание
Обновляемые компоненты
Обновление необходимо только для компонентов PCIS Internal и PCIS External. Это компоненты, обеспечивающие взаимодействие с мобильным приложением.
Обновление PCIS Internal и PCIS External можно проводить как поочерёдно, так и одновременно – между собой модули непосредственно не связаны.
Основной компонент PC Sever (PCS), содержащий информацию о пользователях и выполняющий основные функции PayControl, обновления не требует.
Совместимость
PCIS Internal 3.7 и PCIS External 3.7 совместимы с PCS версий 3.5-3.7.
PCIS Internal
В зависимости от того, какое мобильное приложение пользователь зарегистрировал на сервере – Push-уведомления будут предаваться в соответствуюее. До версии 3.7 для каждой прикладной системы можно было настроить только одно приложение для отправки уведомлений.
PCIS External
После обновления модуля сервера появляется возможность публикации файлов тем для классического и нового мобильного приложения:
- Для классического приложения, как и раньше, необходимо опубликовать файл оформления в <WILDFLY_PATH>/paycontrol_skins/<SYSTEMID>.zip (если по этому пути уже опубликован файл оформления, то ничего не изменится, он будет публиковаться как и раньше).
- Для новых версий мобильного приложения необходимо в директорию <WILDFLY_PATH>/pc_themes/<НОМЕР ВЕРСИИ МОБИЛЬНОГО ПРИЛОЖЕНИЯ>/ разместить новый файл оформления с именем в формате "<SYSTEMID>.zip".
Кроме того, для новых версий приложения появился механизм обновления оформления, даже в случае, если файл оформления уже был скачан на мобильное устройство - приложение будет делать это автоматически при размещении на сервере обновлённого файла темы оформления.
Процесс обновления
Для обновления необходимо заменить на серверах файлы модулей PCIS Internal и PCIS External в директории deployments сервера приложений Wildfly. Они имеют названия вида:
- PayControl-interaction-module-3.6.359.ear - PCIS Internal;
- PayControl-interaction-rest-3.6.360.war - PCIS External.
Файлы сервера предыдущей версии настоятельно рекомендуем сохранить для возможности отката на предыдущую версию.
После замены файлов и развёртывания новых, в директории deployments будут созданы файлы с названиями:
- *.undeployed, где вместо * будет указано название убранного из директории файла модуля сервера. Файлы с расширением undeployed рекомендуется удалить.
- и с расширением *.deployed, где вместо * будут указаны названия новых модулей.
При появлении файлов с расширением *.failed, необходимо перезапустить Wildfly.
Изменения в БД PCIS
После отправки первого первого Push-уведомления в БД PCIS будет создана таблица pc_split_pusher_credentials в которую будут скопированы аутентификационные данные APNS и Firebase для отправки Push-уведомлений. Таблица pc_push_credentials в дальнейшем использоваться не будет. В таблице pc_sys_property будет добавлена запись:
setting_id | setting_name | setting_value |
---|---|---|
... | USE_SPLIT_PUSHER | 1/0 |
Где значение поля setting_id будет установлено автоматически используя значение счётчика записей таблицы, а значение в поле setting_value будет установлено следующим образом:
- 1 - данные из таблицы pc_push_credentials успешно перенесены в таблицу pc_split_pusher_credentials. Для отправки будут использоваться данные из pc_split_pusher_credentials.
- 0 - при переносе данных из таблицы pc_push_credentials возникли проблемы. Для отправки будут использоваться данные из pc_push_credentials. В этом случае можно добавить аутентификационные данные для отправки в новую таблицу вручную.
Если такая запись не была создана, значит попытка отправки Push-уведомления не производилась.
Добавление записей для нового приложения
В приведённых ниже запросах необходимо:
- заменить
%SYSTEMID%
на реальное значение systemid зарегистрированное для Вашей прикладной системы; - проверить, и при необходимости скорректировать путь к файлу-ключу для аутентификации на серверах APNS для отправки Push-уведомлений на iOS.
После выполнения запросов необходимо перезапустить Wildfly сервера PCIS Internal.
PostgreSQL
Android
INSERT INTO pc_split_pusher_credentials (
id,
appid,
credentials,
os,
systemid)
VALUES (
nextval('pc_split_pusher_credentials_id_seq'),
'org.paycontrol.app',
'{"google_api_key":"AAAAoZ7vyz4:APA91bFqLfNegQCs_GfHGFeOmS68PHWWSzWpeZaYKfnLul9iHufIQJiNIAjgAykeWrTxiDDs9qQzullXww3o5XR0VS9tlBEpuhTMlz4CyHdmN2EhntJBBUlSQa-8--Rw_UzDbKBCGCXk"}',
'Android',
'%SYSTEMID%');
iOS
INSERT INTO pc_split_pusher_credentials (
id,
appid,
credentials,
os,
systemid)
VALUES (
nextval('pc_split_pusher_credentials_id_seq'),
'org.paycontrol.app',
'{"apns_key_file":"/opt/wildfly/safetech-apns-JVBQX52N5Z.p8","apns_key_id":"JVBQX52N5Z","apns_team_id":"48HZH4RWJD"}',
'iOS',
'%SYSTEMID%');
MS SQL
Android
INSERT INTO pc_split_pusher_credentials (
appid,
credentials,
os,
systemid)
VALUES (
'org.paycontrol.app',
'{"google_api_key":"AAAAoZ7vyz4:APA91bFqLfNegQCs_GfHGFeOmS68PHWWSzWpeZaYKfnLul9iHufIQJiNIAjgAykeWrTxiDDs9qQzullXww3o5XR0VS9tlBEpuhTMlz4CyHdmN2EhntJBBUlSQa-8--Rw_UzDbKBCGCXk"}',
'Android',
'%SYSTEMID%');
iOS
INSERT INTO pc_split_pusher_credentials (
appid,
credentials,
os,
systemid)
VALUES (
'org.paycontrol.app',
'{"apns_key_file":"/opt/wildfly/safetech-apns-JVBQX52N5Z.p8","apns_key_id":"JVBQX52N5Z","apns_team_id":"48HZH4RWJD"}',
'iOS',
'%SYSTEMID%');
Перенос данных в новую таблицу вручную
Если миграция не произошла автоматически, то можно внести данные в таблицу вручную. Для этого необходимо выполнить следующие запросы к БД PCIS, предварительно заменив %SYSTEMID% на корректное значение:
- PostgreSQL
INSERT INTO pc_split_pusher_credentials ( id, appid, credentials, is_default, os, systemid) VALUES ( nextval('pc_split_pusher_credentials_id_seq'), 'ru.safe-tech.PayControl.v3', '{"google_api_key":"AAAAZJTm6y0:APA91bF1OQYv9T2opZtIMJPZknA7tGLifzvTVB3PFSlQejBzPzyeYg4JFn-nud5mE_pZe920I2zR-8Lv-yabeaJ8PdduS96G3ESj_pfxAJAhaT1JistaXMchspMkPLL0e8tLxCmBzhda"}', 1, 'Android', '%SYSTEMID%'); INSERT INTO pc_split_pusher_credentials ( id, appid, credentials, is_default, os, systemid) VALUES ( nextval('pc_split_pusher_credentials_id_seq'), 'ru.safe-tech.PayControl.v3', '{"apns_key_file":"/opt/wildfly/safetech-apns-JVBQX52N5Z.p8","apns_key_id":"JVBQX52N5Z","apns_team_id":"48HZH4RWJD"}', 1, 'iOS', '%SYSTEMID%');
- MS SQL
INSERT INTO pc_split_pusher_credentials ( appid, credentials, is_default, os, systemid) VALUES ( 'ru.safe-tech.PayControl.v3', '{"google_api_key":"AAAAZJTm6y0:APA91bF1OQYv9T2opZtIMJPZknA7tGLifzvTVB3PFSlQejBzPzyeYg4JFn-nud5mE_pZe920I2zR-8Lv-yabeaJ8PdduS96G3ESj_pfxAJAhaT1JistaXMchspMkPLL0e8tLxCmBzhda"}', 1, 'Android', '%SYSTEMID%'); INSERT INTO pc_split_pusher_credentials ( appid, credentials, is_default, os, systemid) VALUES ( 'ru.safe-tech.PayControl.v3', '{"apns_key_file":"/opt/wildfly/safetech-apns-JVBQX52N5Z.p8","apns_key_id":"JVBQX52N5Z","apns_team_id":"48HZH4RWJD"}', 1, 'iOS', '%SYSTEMID%');
Затем скорректировать значение, указывающее на то, что миграция прошла:
update pc_sys_property set setting_value = '1' where setting_name='USE_SPLIT_PUSHER';
Описание процесса отката изменений
При возникновении проблем при обновлении необходимо удалить новый файл модуля сервера и заменить его старым файлом. При замене файлов необходимо проверить, что в директории deployments отсутствуют файлы с расширением undeployed.