Обновление 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.