Обновление PayControl с версии 3 на версию 5

Материал из PayControl Wiki
Перейти к: навигация, поиск

Введение

Резервное копирование

Перед обновлением необходимо выполнить резервное копирование БД PCS и PCIS Internal.

Java

Для работы обновленных модулей PC требуется JDK 11.

Изменение названий серверов

В версии 5 изменены названия серверов:

  • PC Server (PCS) — без изменений;
  • PC Interaction Internal — PC Pusher (PCP);
  • PC Interaction External — PC External (PCE).

Обновление

Для PCIS версии ниже 3.7

Если версия PCS имеет версию 3.6, а серверы PCIS имеют версию ниже 3.7, то необходимо сначала произвести обновление до 3.7. Инструкция по обновлению доступна по ссылке.

Обновление компонентов серверов

Для обновления нужно остановить сервис Wildfly и заменить файл приложения сервера <WF_PATH>\standalone\deployments\ на новый:

  • на PCS - файл PayControl-services-module-<VERSION>.ear заменить на файл pc-server-<VERSION>.ear
  • на PCIS Internal(PC Pusher после обновления) - файл PayControl-interaction-module-<VERSION>.ear заменить на файл pc-pusher-<VERSION>.war
  • на PCIS External(PC External после обновления) - файл PayControl-interaction-rest-<VERSION>.war заменить на файл pc-external-<VERSION>.war

Настройка подключения к БД

В файле <WF_HOME>/standalone/configuration/standalone.xml нужно найти и заменить:

  • PayControlDS на PCServerDS
  • PayControlISDS на PCPusherDS

Корректировка (смена) адресов компонентов серверов PC

Изменение адреса PCS для подключения с PCE

На сервере PCE необходимо заменить часть строки с адресом сервера PCS (host и port заменить на реальные значения). Для этого:

  • на Linux в файле <WF_PATH>/bin/standalone.conf нужно заменить
    JAVA_OPTS="$JAVA_OPTS -Dpcservice.endpoint=http://<host>:<port>/ws/PayControlServiceV3?wsdl -Duser.language=ru -Dpaycontrol.locale=ru"
    
    на строку
    JAVA_OPTS="$JAVA_OPTS -Dpc_url=http://<host>:<port>/pc-api/ -Dpc_locale=ru"
    
  • на Windows в файле <WF_PATH>/bin/standalone.conf.bat нужно заменить
    set "JAVA_OPTS=%JAVA_OPTS% -Dpcservice.endpoint=http://<host>:<port>/ws/PayControlServiceV3?wsdl -Duser.language=ru -Dpaycontrol.locale=ru"
    
    выше метки :JAVA_OPTS_SET на строку
    set "JAVA_OPTS=%JAVA_OPTS% -Dpc_url=http://<host>:<port>/pc-api/ -Dpc_locale=ru"
    

Изменение адреса PCP для подключения с PCS

Для изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:

update pc_system set pc_is_internal_url = 'http[s]://<IP или DNS-имя>[:PORT]/pc-pusher-api/' where systemid='<SYSTEMID>';

Изменение адреса для внешних подключений (PCE) с мобильных устройств

Для изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:

update pc_system set pc_is_external_url = 'http[s]://<IP или DNS-имя>[:PORT]/pc-client-api/' where systemid='<SYSTEMID>';


Для работы старых ключей, обращающихся по эндпоинту /PayControl-intercation-rest/ нужно установить проксирование на эндпоинт /pc-client-api/, любым удобным способом.

Пример для nginx:

        location /PayControl-interaction-rest/ {
                proxy_pass http://o-example.loc:8080/pc-client-api/;
        }

Изменения в БД

Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:

Postgres

Правки структуры таблиц БД PC Server

alter table pc_delayedkeyinfo alter column is_deleted set not null;
alter table pc_delayedkeyinfo alter column is_deleted set default 0;
alter table pc_delayedkeyinfo drop column type;
alter table pc_delayedkeyinfo add column renew_challenge varchar(255);

alter table pc_device alter column is_deleted set not null;
alter table pc_device alter column is_deleted set default 0;
alter table pc_device add column app_id varchar(255);

alter table pc_event alter column is_deleted set not null;
alter table pc_event alter column is_deleted set default 0;
alter table pc_event alter column requester_ip type varchar(64);
alter table pc_event add column event_data text;
alter table pc_event drop column eventposturl;

alter table pc_keyinfo alter column is_deleted set not null;
alter table pc_keyinfo alter column is_deleted set default 0;
alter table pc_keyinfo drop column type;
alter table pc_keyinfo drop column key_container_id;
alter table pc_keyinfo add column external_approve_data_id varchar(255);

alter table pc_publickey alter column is_deleted set not null;
alter table pc_publickey alter column is_deleted set default 0;
alter table pc_publickey add column autosign_public_key bytea;

alter table pc_system alter column is_deleted set not null;
alter table pc_system alter column is_deleted set default 0;
alter table pc_system add column callback_url varchar(255);

alter table pc_system_params alter column is_deleted set not null;
alter table pc_system_params alter column is_deleted set default 0;
alter table pc_system_params alter column license type varchar(4096);
alter table pc_system_params add column qr_url_scheme varchar(24);

alter table pc_transaction alter column is_deleted set not null;
alter table pc_transaction alter column is_deleted set default 0;
alter table pc_transaction add column autosign_enabled int2;
alter table pc_transaction add column ext_pulp bytea;
alter table pc_transaction add column extended_check int2;
alter table pc_transaction add column render_type int4;
alter table pc_transaction add column scoring_settings varchar(1023);
alter table pc_transaction add column transaction_type int4;

alter table pc_user alter column is_deleted set not null;
alter table pc_user alter column is_deleted set default 0;
alter table pc_user add column blocked int2;

alter table pc_confirm_attempt add column scoring_results varchar(512);
alter table pc_confirm_attempt add column scoring_settings varchar(512);

Правки для корректной отправки пушей

update pc_device set app_id ='org.example.app' where device_push_id not like '%####%' and app_id is null and type=1;
!!!Запрос выше для Android при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:
select appid from pc_split_pusher_credentials where os='Android';

update pc_device set app_id ='org.example.app' where device_push_id not like '%####%' and app_id is null and type=2;
!!!Запрос выше для iOS при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:
select appid from pc_split_pusher_credentials where os='iOS';

update pc_device set app_id = split_part(device_push_id,'####',2) where app_id is NULL;
update pc_device set device_push_id = split_part(device_push_id,'####',1) where app_id is not NULL;

Запрос на регистрацию и лицензия

Получение нового запроса и лицензии

Для получения нового запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.

Замена запроса в БД

В приведённых ниже запросах необходимо:

  • заменить %SYSTEMID% на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента нужно удалить;
  • заменить %REGISTERREQUEST% на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента нужно удалить;
    • пример нужных данных запроса eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==
update pc_system_params set register_request='%REGISTERREQUEST%'  where systemid='%SYSTEMID%';

Лицензия

Установите лицензию одним из приведённых в руководстве администратора PC способов.

Завершение обновления

После выполнения вышеизложенных пунктов нужно запустить wildfly.

Доступ к сервисам

Адреса конечных точек по умолчанию:

  • PC Server - http://<host>:8080/pc-api/
  • PC Pusher - http://<host>:8080/pc-pusher-api/
  • PC External - http://<host>:8080/pc-client-api/

Health Check

Адреса конечных точек health check:

  • PC Server - http://<host>:8080/pc-api/health_check
  • PC Pusher - http://<host>:8080/pc-pusher-api/health_check
  • PC External - http://<host>:8080/pc-client-api/health_check

Откат обновления в случае сбоя

Остановите Wildfly.

Восстановите БД PCS и PCIS Internal из бэкапа.

При возникновении проблем при обновлении необходимо удалить новый файл модуля сервера и заменить его старым файлом.

При замене файлов необходимо проверить, что в директории deployments отсутствуют файлы с расширением undeployed.

PCS. Настройка подключения с PCIS External

На сервере PCIS External необходимо заменить часть строки с адресом сервера PCS (host и port заменить на реальные значения). Для этого:

  • на Linux в файле <WF_PATH>/bin/standalone.conf нужно заменить
    JAVA_OPTS="$JAVA_OPTS -Dpc_url=http://<host>:<port>/pc-api/ -Dpc_locale=ru"
    
    на строку
    JAVA_OPTS="$JAVA_OPTS -Dpcservice.endpoint=http://<host>:<port>/ws/PayControlServiceV3?wsdl -Duser.language=ru -Dpaycontrol.locale=ru"
    
  • на Windows в файле <WF_PATH>/bin/standalone.conf.bat нужно заменить
    set "JAVA_OPTS=%JAVA_OPTS% -Dpc_url=http://<host>:<port>/pc-api/ -Dpc_locale=ru"
    
    выше метки :JAVA_OPTS_SET на строку
    set "JAVA_OPTS=%JAVA_OPTS% -Dpcservice.endpoint=http://<host>:<port>/ws/PayControlServiceV3?wsdl -Duser.language=ru -Dpaycontrol.locale=ru"