Обновление PayControl с 3.5 на 3.9 — различия между версиями
(→Удаление ненужных полей) |
|||
(не показано 7 промежуточных версий этого же участника) | |||
Строка 36: | Строка 36: | ||
* для Windows: | * для Windows: | ||
*: в файле C:\wildfly\bin\standalone.conf.bat удалить строку <syntaxhighlight lang="bat">set "JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.pcsVersion=3.5"</syntaxhighlight> | *: в файле C:\wildfly\bin\standalone.conf.bat удалить строку <syntaxhighlight lang="bat">set "JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.pcsVersion=3.5"</syntaxhighlight> | ||
− | |||
==Изменения в БД== | ==Изменения в БД== | ||
Строка 49: | Строка 48: | ||
update pc_keyinfo set key_flags=0 where need_to_use_fingerprint=0; | update pc_keyinfo set key_flags=0 where need_to_use_fingerprint=0; | ||
update pc_keyinfo set key_flags=1 where need_to_use_fingerprint=1; | update pc_keyinfo set key_flags=1 where need_to_use_fingerprint=1; | ||
+ | update pc_delayedkeyinfo set key_flags=0 where need_to_use_fingerprint=0; | ||
+ | update pc_delayedkeyinfo set key_flags=1 where need_to_use_fingerprint=1; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 151: | Строка 152: | ||
= Завершение обновления = | = Завершение обновления = | ||
После выполнения вышеизложенных пунктов нужно [[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|запустить wildfly]]. | После выполнения вышеизложенных пунктов нужно [[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|запустить wildfly]]. | ||
+ | |||
+ | ==Правка последовательностей MS SQL== | ||
+ | |||
+ | Данный пункт нужно выполнить в том случае, если в вашей БД нет последовательностей\сиквенсов, описанных ниже, а вместо них используются таблицы. | ||
+ | |||
+ | Пример: | ||
+ | * Мы хотим создать сиквенс PC_ATTEMPT_SEQ | ||
+ | * Для этого идем в таблицу PC_ATTEMPT_SEQ | ||
+ | * Берем оттуда последнее значение id | ||
+ | * Добавляем в запрос на создание сиквенса вместо знака вопроса | ||
+ | * Переименовываем старую таблицу PC_ATTEMPT_SEQ | ||
+ | * Создаем сиквенс | ||
+ | |||
+ | Перед добавлением сиквенсов переименуйте старые таблицы: | ||
+ | |||
+ | <syntaxhighlight lang="sql"> | ||
+ | sp_rename PC_ATTEMPT_SEQ, PC_ATTEMPT_SEQ_OLD; | ||
+ | sp_rename PC_DELAYEDKEYINFO_SEQ, PC_DELAYEDKEYINFO_SEQ_OLD; | ||
+ | sp_rename PC_DEVICE_SEQ, PC_DEVICE_SEQ_OLD; | ||
+ | sp_rename PC_KEYINFO_SEQ, PC_KEYINFO_SEQ_OLD; | ||
+ | sp_rename PC_PUBLICKEY_SEQ, PC_PUBLICKEY_SEQ_OLD; | ||
+ | sp_rename PC_SETTING_SEQ, PC_SETTING_SEQ_OLD; | ||
+ | sp_rename PC_EVENT_SEQ, PC_EVENT_SEQ_OLD; | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Теперь можно добавлять сиквенсы. | ||
+ | |||
+ | |||
+ | Список команд для добавления необходимых сиквенсов: | ||
+ | |||
+ | Знаки вопроса нужно заменить на последний id в таблице-сиквенсе с тем же названием. | ||
+ | |||
+ | <syntaxhighlight lang="sql"> | ||
+ | create sequence PC_ATTEMPT_SEQ start with ? increment by 1; | ||
+ | create sequence PC_DELAYEDKEYINFO_SEQ start with ? increment by 1; | ||
+ | create sequence PC_DEVICE_SEQ start with ? increment by 1; | ||
+ | create sequence PC_KEYINFO_SEQ start with ? increment by 1; | ||
+ | create sequence PC_PUBLICKEY_SEQ start with ? increment by 1; | ||
+ | create sequence PC_SETTING_SEQ start with ? increment by 1; | ||
+ | create sequence PC_EVENT_SEQ start with ? increment by 1; | ||
+ | </syntaxhighlight> | ||
+ | |||
== Удаление ненужных полей == | == Удаление ненужных полей == | ||
'''Если''' у вас всё обновилось и '''точно''' работает, можно удалить не нужные поля от предыдущей версии, они больше не нужны, или перенесены. | '''Если''' у вас всё обновилось и '''точно''' работает, можно удалить не нужные поля от предыдущей версии, они больше не нужны, или перенесены. | ||
− | Удалить не используемые столбцы можно с помощью | + | Удалить не используемые столбцы можно с помощью запросов: |
<syntaxhighlight lang="sql"> | <syntaxhighlight lang="sql"> | ||
ALTER TABLE pc_system | ALTER TABLE pc_system | ||
Строка 174: | Строка 217: | ||
DROP COLUMN IF EXISTS report_template_path, | DROP COLUMN IF EXISTS report_template_path, | ||
DROP COLUMN IF EXISTS user_keys_expiration_period; | DROP COLUMN IF EXISTS user_keys_expiration_period; | ||
+ | |||
+ | ALTER TABLE pc_keyinfo DROP COLUMN IF EXISTS need_to_use_fingerprint; | ||
+ | |||
+ | ALTER TABLE pc_delayedkeyinfo DROP COLUMN IF EXISTS need_to_use_fingerprint; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Текущая версия на 16:53, 25 июня 2024
В версии 3.8 реализовано взаимодействие с PC Pusher 5.x, который, в свою очередь, поддерживает отправку пуш-уведомлений на устройства Huawei. Обновлению с 3.5-3.7 подлежат модули PCS и PC External.
Предупреждение! Модуль PCIS Internal 3.5-3.7 подлежит замене на модуль PC Pusher 5.5. PCS с версии 3.8 не поддерживает работу с модулем PCIS Internal. |
В версии 3.9 добавлена функциональность формирования имитовставки, для соответствия п.5.1 Положения Банка России от 17 апреля 2019 года N 683-П:
В целях обеспечения целостности электронных сообщений и подтверждения их составления уполномоченным на это лицом кредитные организации должны обеспечивать реализацию мер по использованию усиленной квалифицированной электронной подписи, усиленной неквалифицированной электронной подписи или СКЗИ, реализующих функцию имитозащиты информации с аутентификацией отправителя сообщения.
Модули сервера доступны по ссылкам:
- PC Server (https://repo.paycontrol.org/server/maven/tech/paycon/server/PayControl-services-module/), версия 3.9.xxx;
- PC External (https://repo.paycontrol.org/server/maven/tech/paycon/server/PayControl-interaction-rest/), версия 3.9.xxx;
- PC Pusher (https://repo.paycontrol.org/server/maven/tech/paycon/server/pc-pusher/), версия 5.5.xxx.
Если при обновлении сервера также необходимо обновить Wildfly, то перед обновлением необходимо остановить службу, убрать её из автозапуска.
Содержание
[убрать]Обновление Java
Перед обновлением компонентов PC требуется обновить Java до версии 11. Версия 8 больше не поддерживается.
При установке Java новой версии, старая версия не удаляется, и Wildfly может продолжить работать на версии 8, что приведёт к ошибкам. Для того чтобы компоненты работали под Java 11, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:
sudo update-alternatives --config java
Обновление компонентов PCS
Для обновления нужно заменить файл приложения сервера <WF_PATH>\standalone\deployments\ на новый:
- на PCS - файл PayControl-services-module-<VERSION>.ear
Отключение поддержки совместимости с PCS 3.5
Для отключения в модуле PCIS External 3.7 режима совместимости с сервером версии 3.5 необходимо убрать из окружения Java параметр paycontrol.pcsVersion
со значением 3.5
. Это можно сделать следующим образом:
- для Linux:
- в файле /opt/wildfly/bin/standalone.conf удалить строку
JAVA_OPTS="$JAVA_OPTS -Dpaycontrol.pcsVersion=3.5"
- в файле /opt/wildfly/bin/standalone.conf удалить строку
- для Windows:
- в файле C:\wildfly\bin\standalone.conf.bat удалить строку
set "JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.pcsVersion=3.5"
- в файле C:\wildfly\bin\standalone.conf.bat удалить строку
Изменения в БД
- Для переноса параметров из pc_system в pc_system_params, что необходимо, при обновлении, нужно выполнить запрос:
INSERT INTO pc_system_params (systemid, created_at, is_deleted, updated_at, billed_date_request, billing_period, billed_date, billing_type, description, front_end_url, license, online_confirmation_url, register_request, report_template_path, user_keys_expiration_period)
SELECT systemid, created_at, is_deleted, updated_at, billed_date_request, billing_period, billed_date, billing_type, description, front_end_url, license, online_confirmation_url, register_request, report_template_path, user_keys_expiration_period
FROM pc_system;
- Чтобы поправить настройки пользователей нужно выполнить запрос:
update pc_keyinfo set key_flags=0 where need_to_use_fingerprint=0;
update pc_keyinfo set key_flags=1 where need_to_use_fingerprint=1;
update pc_delayedkeyinfo set key_flags=0 where need_to_use_fingerprint=0;
update pc_delayedkeyinfo set key_flags=1 where need_to_use_fingerprint=1;
Запрос на регистрацию
Получение нового запроса
Для получения нового запроса на регистрацию нужно выполнить запрос к БД PCS
select * from pc_system;
, и обратиться с результатами запроса в компанию Сэйфтек.
Замена запроса в БД
В приведённом ниже запросе необходимо:
- заменить
%SYSTEMID%
на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента нужно удалить; - заменить
%REGISTERREQUEST%
на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента нужно удалить;- пример нужных данных запроса
eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==
- пример нужных данных запроса
update pc_system_params set register_request='%REGISTERREQUEST%' where systemid='%SYSTEMID%';
Лицензия
Получение обновленной лицензии
Для получения обновленной лицензии нужно выполнить запрос к БД PCS
select * from pc_system;
, и обратиться с результатами запроса в компанию Сэйфтек.
Замена лицензии в БД
- На сервере PC Server, удалите файл(*.paycontrol.license) с лицензией, если такой есть.
- Выполните к БД PC Server запрос:
В приведённом ниже запросе необходимо:
- заменить
%SYSTEMID%
на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента нужно удалить; - заменить
%LICENSE%
на реальные данные лицензии(*.paycontrol.license), созданной для Вашей прикладной системы. Обратите внимание, что знаки процента нужно удалить;
- пример нужных данных лицензии
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><licenseInformationWithSignature xmlns="http://ws.safetech.ru/PayControl/services/ws/request/"><licenseInformation><systemId>48000c91-dd4a-47d5-9041-fd8d0a32c13b</systemId><validTo>2020-11-07T20:59:59.000Z</validTo><usersCount>100</usersCount></licenseInformation><signature>MEQCIDyHJwCnp7iLDSAllrcjVya+ukW6Ov1dJJiSXd8HIowBAiB8cEBnjhm3up1ui2pjp9oqx6GzxOfRCBG0EddiIqCIqA==</signature></licenseInformationWithSignature>
update pc_system_params set license='%LICENSE%' where systemid='%SYSTEMID%';
PCIS Internal и External
Для PCIS версии ниже, чем 3.7
Этот пункт следует выполнять только в случае, если основной сервер PCS имеет версию 3.5, а серверы PCIS имеют версию ниже 3.7 - Обновление PCIS до версии 3.7
Обновление PCIS External(PC External)
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.
Для обновления необходимо заменить на серверах файл модуля PC External в директории deployments сервера приложений Wildfly.
Он имеет название вида:
- PayControl-interaction-rest-3.x.x.war - PC External.
Перед заменой файлов остановите Wildfly. Файлы сервера предыдущей версии настоятельно рекомендуем сохранить для возможности отката на предыдущую версию.
После замены файла и развёртывания нового, в директории deployments будет создан файл с названием:
- *.undeployed, где вместо * будет указано название убранного из директории файла модуля сервера. Файл с расширением undeployed рекомендуется удалить.
- и с расширением *.deployed, где вместо * будут указаны названия новых модулей.
При появлении файлов с расширением *.failed, необходимо перезапустить Wildfly.
Переход с PCIS Internal на PC Pusher
Замена файлов модулей
Для обновления необходимо заменить на сервере файлы модуля PCIS Internal в директории deployments сервера приложений Wildfly. Файл имеют названия вида:
- PayControl-interaction-module-3.x.xxx.ear - PCIS Internal
Перед заменой файлов остановите Wildfly. Файлы сервера предыдущей версии настоятельно рекомендуем сохранить для возможности отката на предыдущую версию.
- Новый файл имеет название вида: pc-pusher-5.5.xxx.war
После замены файлов и развёртывания новых, в директории deployments будут созданы файлы с названиями:
- .undeployed, где вместо * будет указано название убранного из директории файла модуля сервера. Файлы с расширением undeployed рекомендуется удалить.
- и с расширением *.deployed, где вместо * будут указаны названия новых модулей.
При появлении файлов с расширением *.failed, необходимо перезапустить Wildfly.
Настройка PC Server для работы с PC Pusher
После замены PCIS Internal на PC Pusher необходимо заменить его адрес в БД PCS:
update pc_system set pc_is_internal_url='http[s]://pcphost:port/pc-pusher-api/';
Далее, необходимо предоставить доступ PC Pusher для отправки данных пушей в сервис HMS (Huawei Mobile Services). При отправке push-сообщений, запросы должны отправляются по адресу https://push-api.cloud.huawei.com/ ,порт 443.
Также, с сервера PC Pusher должен быть доступен адрес: https://oauth-login.cloud.huawei.com/oauth2/v3/token
В случае, если PC Pusher находится на одном сервере с PC External, то необходимо перенастроить правила URL-фильтрации.
Настройка PC Pusher
Если для подтверждения транзакций используется приложение PayControl, то данная настройка не требуется.
По умолчанию, если app/bundle id для отправки пуш-уведомлений явно не указан для устройства, PCS 3.9 отправляет пуши в приложение PayControl Classic.
Для отправки пушей в другое приложения необходимо:
- Произвести настройки аутентификационных данных "другого" мобильного приложения в соответствии с этой статьей
- Прописать 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"}');
Завершение обновления
После выполнения вышеизложенных пунктов нужно запустить wildfly.
Правка последовательностей MS SQL
Данный пункт нужно выполнить в том случае, если в вашей БД нет последовательностей\сиквенсов, описанных ниже, а вместо них используются таблицы.
Пример:
- Мы хотим создать сиквенс PC_ATTEMPT_SEQ
- Для этого идем в таблицу PC_ATTEMPT_SEQ
- Берем оттуда последнее значение id
- Добавляем в запрос на создание сиквенса вместо знака вопроса
- Переименовываем старую таблицу PC_ATTEMPT_SEQ
- Создаем сиквенс
Перед добавлением сиквенсов переименуйте старые таблицы:
sp_rename PC_ATTEMPT_SEQ, PC_ATTEMPT_SEQ_OLD;
sp_rename PC_DELAYEDKEYINFO_SEQ, PC_DELAYEDKEYINFO_SEQ_OLD;
sp_rename PC_DEVICE_SEQ, PC_DEVICE_SEQ_OLD;
sp_rename PC_KEYINFO_SEQ, PC_KEYINFO_SEQ_OLD;
sp_rename PC_PUBLICKEY_SEQ, PC_PUBLICKEY_SEQ_OLD;
sp_rename PC_SETTING_SEQ, PC_SETTING_SEQ_OLD;
sp_rename PC_EVENT_SEQ, PC_EVENT_SEQ_OLD;
Теперь можно добавлять сиквенсы.
Список команд для добавления необходимых сиквенсов:
Знаки вопроса нужно заменить на последний id в таблице-сиквенсе с тем же названием.
create sequence PC_ATTEMPT_SEQ start with ? increment by 1;
create sequence PC_DELAYEDKEYINFO_SEQ start with ? increment by 1;
create sequence PC_DEVICE_SEQ start with ? increment by 1;
create sequence PC_KEYINFO_SEQ start with ? increment by 1;
create sequence PC_PUBLICKEY_SEQ start with ? increment by 1;
create sequence PC_SETTING_SEQ start with ? increment by 1;
create sequence PC_EVENT_SEQ start with ? increment by 1;
Удаление ненужных полей
Если у вас всё обновилось и точно работает, можно удалить не нужные поля от предыдущей версии, они больше не нужны, или перенесены.
Удалить не используемые столбцы можно с помощью запросов:
ALTER TABLE pc_system
DROP COLUMN IF EXISTS internal_cert_fingerprint,
DROP COLUMN IF EXISTS key_container,
DROP COLUMN IF EXISTS key_password,
DROP COLUMN IF EXISTS additional_key_options,
DROP COLUMN IF EXISTS key_type,
DROP COLUMN IF EXISTS system_type,
DROP COLUMN IF EXISTS billed_date_request,
DROP COLUMN IF EXISTS billing_period,
DROP COLUMN IF EXISTS billed_date,
DROP COLUMN IF EXISTS billing_type,
DROP COLUMN IF EXISTS description,
DROP COLUMN IF EXISTS front_end_url,
DROP COLUMN IF EXISTS license,
DROP COLUMN IF EXISTS online_confirmation_url,
DROP COLUMN IF EXISTS register_request,
DROP COLUMN IF EXISTS report_template_path,
DROP COLUMN IF EXISTS user_keys_expiration_period;
ALTER TABLE pc_keyinfo DROP COLUMN IF EXISTS need_to_use_fingerprint;
ALTER TABLE pc_delayedkeyinfo DROP COLUMN IF EXISTS need_to_use_fingerprint;
Проверка доступности сервисов
Адреса конечных точек по умолчанию:
- PC Server:
http://<host>:8080/ws/PayControlServiceV3?wsdl
http://<host>:8080/ws/PayControlReportService?wsdl
- PC Pusher:
http://<host>:8080/pc-pusher-api/health_check
- PC External(при запросе на этот адрес должно возвратиться «Not Found»):
http[s]://<host>:8080/PayControl-interaction-rest/
Включение имитовставки
Способ включения выработки имитовставки описан в статье Включение формирования имитовставки.
Откат обновления в случае сбоя
При возникновении проблем при обновлении необходимо:
- Удалить новые файлы модулей серверов и заменить их старыми файлами.
- При замене файлов необходимо проверить, что в директории deployments отсутствуют файлы с расширением undeployed.
- Восстановить БД PCS и PCIS Internal из резервной копии.
- Также нужно вернуть параметр, отвечающий за работу PCS 3.5 с PCIS 3.7.