<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://repo.paycontrol.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=D.bizyukov</id>
	<title>PayControl Wiki - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://repo.paycontrol.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=D.bizyukov"/>
	<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/D.bizyukov"/>
	<updated>2026-08-03T23:38:05Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=911</id>
		<title>Обновление PayControl с версии 3 на версию 6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=911"/>
		<updated>2026-07-16T14:36:07Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Изменение адреса для внешних подключений (PCE) с мобильных устройств */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Введение =&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Перед обновлением необходимо выполнить резервное копирование БД PCS.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC &#039;&#039;&#039;требуется&#039;&#039;&#039; остановить Wildfly и обновить Java до версии 17. Версия 11 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и PC может продолжить работать на версии 11, что приведёт к ошибкам. &lt;br /&gt;
&lt;br /&gt;
Для того чтобы компоненты работали под Java 17, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 6 изменены названия серверов:&lt;br /&gt;
&lt;br /&gt;
* PC Server (PCS) — без изменений;&lt;br /&gt;
* PC Interaction Internal — PC Pusher (PCP);&lt;br /&gt;
* PC Interaction External — PC External (PCE).&lt;br /&gt;
&lt;br /&gt;
= Изменения в БД =&lt;br /&gt;
&lt;br /&gt;
== Правки структуры таблиц БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== Postgre ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_delayedkeyinfo drop column type;&lt;br /&gt;
alter table pc_delayedkeyinfo add column renew_challenge varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_device alter column is_deleted set not null;&lt;br /&gt;
alter table pc_device alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_device add column app_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_event alter column is_deleted set not null;&lt;br /&gt;
alter table pc_event alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_event alter column requester_ip type varchar(64);&lt;br /&gt;
alter table pc_event add column event_data text;&lt;br /&gt;
alter table pc_event drop column eventposturl;&lt;br /&gt;
&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_keyinfo drop column type;&lt;br /&gt;
alter table pc_keyinfo drop column key_container_id;&lt;br /&gt;
alter table pc_keyinfo add column external_approve_data_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_publickey alter column is_deleted set not null;&lt;br /&gt;
alter table pc_publickey alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_publickey add column autosign_public_key bytea;&lt;br /&gt;
&lt;br /&gt;
alter table pc_system alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system add column callback_url varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_system_params alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system_params alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system_params alter column license type varchar(4096);&lt;br /&gt;
alter table pc_system_params add column qr_url_scheme varchar(24);&lt;br /&gt;
&lt;br /&gt;
alter table pc_transaction alter column is_deleted set not null;&lt;br /&gt;
alter table pc_transaction alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_transaction add column autosign_enabled int2;&lt;br /&gt;
alter table pc_transaction add column ext_pulp bytea;&lt;br /&gt;
alter table pc_transaction add column extended_check int2;&lt;br /&gt;
alter table pc_transaction add column render_type int4;&lt;br /&gt;
alter table pc_transaction add column scoring_settings varchar(1023);&lt;br /&gt;
alter table pc_transaction add column transaction_type int4;&lt;br /&gt;
&lt;br /&gt;
alter table pc_user alter column is_deleted set not null;&lt;br /&gt;
alter table pc_user alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_user add column blocked int2;&lt;br /&gt;
&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_results varchar(512);&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_settings varchar(512);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MS SQL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;transaction_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        transaction_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_SYSTEM]&#039;)&lt;br /&gt;
          AND name = &#039;callback_url&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_SYSTEM&lt;br /&gt;
    ADD&lt;br /&gt;
        callback_url character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_USER]&#039;)&lt;br /&gt;
          AND name = &#039;blocked&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_USER&lt;br /&gt;
    ADD&lt;br /&gt;
        blocked smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;external_approve_data_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        external_approve_data_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_PUBLICKEY]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_public_key&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_public_key varbinary(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;renew_challenge&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        renew_challenge character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DEVICE]&#039;)&lt;br /&gt;
          AND name = &#039;app_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DEVICE&lt;br /&gt;
    ADD&lt;br /&gt;
        app_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_enabled&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_enabled smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;ext_pulp&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        ext_pulp character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;extended_check&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        extended_check smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;render_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        render_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(1023);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_results&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_results character varying(512);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(512);&lt;br /&gt;
		&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_EVENT]&#039;)&lt;br /&gt;
          AND name = &#039;event_data&#039;&lt;br /&gt;
    )&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ADD&lt;br /&gt;
            event_data VARCHAR(MAX);&lt;br /&gt;
ELSE&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ALTER COLUMN event_data VARCHAR(MAX);&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE PC_EVENT ALTER COLUMN requester_ip varchar(64);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oracle ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo DROP COLUMN type;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo ADD renew_challenge VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_device MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_device MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_device ADD app_id VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_event MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_event MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_event MODIFY requester_ip VARCHAR2(64);&lt;br /&gt;
ALTER TABLE pc_event ADD event_data CLOB;&lt;br /&gt;
ALTER TABLE pc_event DROP COLUMN eventposturl;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_keyinfo MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_keyinfo MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_keyinfo DROP COLUMN type;&lt;br /&gt;
ALTER TABLE pc_keyinfo DROP COLUMN key_container_id;&lt;br /&gt;
ALTER TABLE pc_keyinfo ADD external_approve_data_id VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_publickey MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_publickey MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_publickey ADD autosign_public_key BLOB;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_system MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_system MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_system ADD callback_url VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY license VARCHAR2(4000);&lt;br /&gt;
ALTER TABLE pc_system_params ADD qr_url_scheme VARCHAR2(24);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_transaction MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_transaction MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_transaction ADD autosign_enabled NUMBER(5);&lt;br /&gt;
ALTER TABLE pc_transaction ADD ext_pulp BLOB;&lt;br /&gt;
ALTER TABLE pc_transaction ADD extended_check NUMBER(5);&lt;br /&gt;
ALTER TABLE pc_transaction ADD render_type NUMBER(10);&lt;br /&gt;
ALTER TABLE pc_transaction ADD scoring_settings VARCHAR2(1023);&lt;br /&gt;
ALTER TABLE pc_transaction ADD transaction_type NUMBER(10);&lt;br /&gt;
ALTER TABLE pc_transaction ADD snipped_text VARCHAR2(1023);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_user MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_user MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_user ADD blocked NUMBER(5);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_confirm_attempt ADD scoring_results VARCHAR2(512);&lt;br /&gt;
ALTER TABLE pc_confirm_attempt ADD scoring_settings VARCHAR2(512);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_sys_property MODIFY SETTING_VALUE VARCHAR2(1023);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запрос на регистрацию и лицензия ==&lt;br /&gt;
&lt;br /&gt;
=== Получение нового запроса и лицензии ===&lt;br /&gt;
&lt;br /&gt;
Для получения обновленного запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
=== Замена запроса в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%REGISTERREQUEST%&amp;lt;/code&amp;gt; на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%REGISTERREQUEST%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замена лицензии(при наличии) в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%LICENSE%&amp;lt;/code&amp;gt; на реальные данные лицензии, созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;{&amp;quot;request&amp;quot;:{&amp;quot;systemId&amp;quot;:&amp;quot;99000000-e00e-0ad0-00ab-f00f0000a0b0&amp;quot;,&amp;quot;dateTime&amp;quot;:1700000000000,&amp;quot;usersCount&amp;quot;:100,&amp;quot;licenseID&amp;quot;:&amp;quot;0000e000-0000-0000-b0ec-c0f0000000f0&amp;quot;,&amp;quot;type&amp;quot;:2,&amp;quot;features&amp;quot;:{&amp;quot;gost_crypto&amp;quot;:false,&amp;quot;pki&amp;quot;:{&amp;quot;openssl&amp;quot;:false},&amp;quot;binary_data&amp;quot;:{&amp;quot;raw&amp;quot;:true,&amp;quot;pdf&amp;quot;:true},&amp;quot;server_signer&amp;quot;:false,&amp;quot;rks&amp;quot;:false}},&amp;quot;signature&amp;quot;:&amp;quot;MEYCIQDy7OUT6iiligbiugYcpK9fjkU/GDRIUiJtB+UcHppVwIhAKzS+EcktxyRikvqEThPyo1jHlPuAfgxW+EEo5gioW7Y&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set license=&#039;%LICENSE%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Обновление модулей PC =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для установки PC 6-й версии воспользуйтесь инструкцией по ссылке - https://repo.paycontrol.org/server/doc/latest/pc-install-guide/ru/#перед-установкой&lt;br /&gt;
&lt;br /&gt;
После обновления &#039;&#039;&#039;необходимо&#039;&#039;&#039; отключить автозапуск Wildfly и выполнить запрос к БД:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_keyinfo set is_activated=1;&lt;br /&gt;
update pc_transaction set transaction_type=0;&lt;br /&gt;
update pc_transaction set render_type=0;&lt;br /&gt;
update pc_transaction set status=6 where status=4;&lt;br /&gt;
update pc_transaction set status=7 where status=5;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректировка (смена) адресов компонентов серверов PC ==&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCP для подключения с PCS ===&lt;br /&gt;
&lt;br /&gt;
Для изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;:8082/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса для внешних подключений (PCE) с мобильных устройств ===&lt;br /&gt;
&lt;br /&gt;
Для изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-client-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Только для версии 6.9.0 и ниже&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Для работы старых ключей, обращающихся по эндпоинту &amp;lt;code&amp;gt;/PayControl-interaction-rest/&amp;lt;/code&amp;gt; нужно установить проксирование на эндпоинт &amp;lt;code&amp;gt;/pc-client-api/&amp;lt;/code&amp;gt;, любым удобным способом.&lt;br /&gt;
&lt;br /&gt;
Пример для nginx:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
        location /PayControl-interaction-rest/ {&lt;br /&gt;
                proxy_pass http://o-pc-ext-example.com:8081/pc-client-api/;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Правки для корректной отправки пушей ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=1;&lt;br /&gt;
!!!Запрос выше для Android при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;Android&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=2;&lt;br /&gt;
!!!Запрос выше для iOS при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;iOS&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PostgreSQL&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oracle&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
create or replace function split_part(pString varchar2, pDelimiter varchar2, pPartNumber integer) return varchar2 deterministic is&lt;br /&gt;
  vStart number; &lt;br /&gt;
  vEnd   number;&lt;br /&gt;
begin&lt;br /&gt;
  if pPartNumber &amp;lt;&amp;gt; 0 and pDelimiter is not null then&lt;br /&gt;
    vStart := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber));&lt;br /&gt;
    vEnd   := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber) + 1);&lt;br /&gt;
  end if;&lt;br /&gt;
  return case         &lt;br /&gt;
           when pDelimiter is null and abs(pPartNumber) = 1 then pString&lt;br /&gt;
           when pPartNumber &amp;gt; 0 then substr(pString, vStart, vEnd - vStart - length(pDelimiter))                       &lt;br /&gt;
           when pPartNumber &amp;lt; 0 then substr(pString, vEnd, vStart - vEnd - length(pDelimiter))          &lt;br /&gt;
           else null&lt;br /&gt;
         end;&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MS SQL&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CREATE OR ALTER FUNCTION dbo.split_part&lt;br /&gt;
(&lt;br /&gt;
    @str   NVARCHAR(MAX),&lt;br /&gt;
    @delim NVARCHAR(100),&lt;br /&gt;
    @idx   INT&lt;br /&gt;
)&lt;br /&gt;
RETURNS NVARCHAR(MAX)&lt;br /&gt;
AS&lt;br /&gt;
BEGIN&lt;br /&gt;
&lt;br /&gt;
    IF @str IS NULL RETURN NULL;&lt;br /&gt;
    IF @idx IS NULL OR @idx &amp;lt;= 0 RETURN NULL;&lt;br /&gt;
    IF @delim IS NULL OR LEN(@delim) = 0 RETURN NULL;&lt;br /&gt;
&lt;br /&gt;
    DECLARE @dlen INT = LEN(@delim);&lt;br /&gt;
&lt;br /&gt;
    DECLARE @start INT = 1;&lt;br /&gt;
    DECLARE @pos   INT;&lt;br /&gt;
    DECLARE @cur   INT = 1;&lt;br /&gt;
&lt;br /&gt;
    WHILE 1 = 1&lt;br /&gt;
    BEGIN&lt;br /&gt;
        SET @pos = CHARINDEX(@delim, @str, @start);&lt;br /&gt;
&lt;br /&gt;
        IF @pos = 0&lt;br /&gt;
        BEGIN&lt;br /&gt;
            IF @cur = @idx&lt;br /&gt;
                RETURN SUBSTRING(@str, @start, LEN(@str) - @start + 1);&lt;br /&gt;
            RETURN NULL;&lt;br /&gt;
        END&lt;br /&gt;
&lt;br /&gt;
        IF @cur = @idx&lt;br /&gt;
            RETURN SUBSTRING(@str, @start, @pos - @start);&lt;br /&gt;
&lt;br /&gt;
        SET @start = @pos + @dlen;&lt;br /&gt;
        SET @cur += 1;&lt;br /&gt;
    END&lt;br /&gt;
&lt;br /&gt;
    RETURN NULL;&lt;br /&gt;
END;&lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
UPDATE pc_device SET app_id = dbo.split_part(device_push_id, &#039;####&#039;, 2) WHERE app_id IS NULL;&lt;br /&gt;
UPDATE pc_device SET device_push_id = dbo.split_part(device_push_id, &#039;####&#039;, 1) WHERE app_id IS NOT NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
* Вся документация - https://repo.paycontrol.org/&lt;br /&gt;
&lt;br /&gt;
* Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
&lt;br /&gt;
* Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
&lt;br /&gt;
== Доступ к сервисам ==&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/&lt;br /&gt;
&lt;br /&gt;
=== Health Check ===&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек health check:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/health_check&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите сервисы PC.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
Переключитесь на Java 11.&lt;br /&gt;
&lt;br /&gt;
Запустите wildfly и включите автозапуск.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_PayControl_v3.9_Linux&amp;diff=910</id>
		<title>Установка PayControl v3.9 Linux</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_PayControl_v3.9_Linux&amp;diff=910"/>
		<updated>2026-07-11T14:27:29Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Учёт изменения адреса сервера PC Pusher */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Статья описывает установку с помощью инсталляционного скрипта.&lt;br /&gt;
=Справка скрипта инсталляции=&lt;br /&gt;
&amp;lt;pre&amp;gt;Execution modes:&lt;br /&gt;
  -i  Install. Set it for process installation. &lt;br /&gt;
  -h  Help. Will show this help.&lt;br /&gt;
&lt;br /&gt;
Installation options:&lt;br /&gt;
  -r  Register system (only on PCS, matters with -i option). Optional. For registration you must put you register system request file to &amp;quot;customer&amp;quot; directory before. Contact you supplier for obtain this request file.&lt;br /&gt;
&lt;br /&gt;
 PC roles (must selected at least one of them):&lt;br /&gt;
  -S  PC Server&lt;br /&gt;
  -P  PC Pusher&lt;br /&gt;
  -E  External / PCIS External&lt;br /&gt;
  -G  PC Server Signer (only for version 5.2 and above)&lt;br /&gt;
&lt;br /&gt;
Install wildfly database driver (mandatory for PCS and PCSS modules):&lt;br /&gt;
  -p  PostgreSQL&lt;br /&gt;
  -o  Oracle&lt;br /&gt;
    Need to set up parameter - jdbc version:&lt;br /&gt;
    8  JDBCv8. Certified with JDK8 and JDK11. Supports Oracle Database versions - 21c, 19c, 18c, and 12.2&lt;br /&gt;
    0  JDBCv10. Implements JDBC 4.3 spec and certified with JDK11. Supports Oracle Database versions - 21c, 19c, 18c, and 12.2&lt;br /&gt;
    1  JDBCv11. Implements JDBC 4.3 spec and certified with JDK11 and JDK17. Supports Oracle Database versions - 21c, 19c, 18c, and 12.2&lt;br /&gt;
  -m  MS SQL&lt;br /&gt;
&lt;br /&gt;
Examples&lt;br /&gt;
  install.sh -i -SPEG -r -o8&lt;br /&gt;
  also like&lt;br /&gt;
  install.sh -iSPEGro8&lt;br /&gt;
    will install PCS, PCP, PCE, PCSS, Oracle JDBC8 Driver and execute register system request&lt;br /&gt;
&lt;br /&gt;
  install.sh -i -Sp&lt;br /&gt;
  also like&lt;br /&gt;
  install.sh -Sp&lt;br /&gt;
    will install PCS with Postgres drivers&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Перед установкой PayControl =&lt;br /&gt;
&lt;br /&gt;
Установить последнюю версию JDK 11.&lt;br /&gt;
&lt;br /&gt;
= Конфигурирование =&lt;br /&gt;
&lt;br /&gt;
Конфигурирование производится путём редактирования раздела &amp;lt;code&amp;gt;CUSTOMER Config&amp;lt;/code&amp;gt; файла &amp;lt;code&amp;gt;install.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Подключение к БД для PCS==&lt;br /&gt;
&lt;br /&gt;
Необходимо установить корректные значения адресов и портов СУБД, имена пользователей и пароли.&lt;br /&gt;
&lt;br /&gt;
=== СУБД Oracle ===&lt;br /&gt;
&lt;br /&gt;
При использовании СУБД Oracle необходимо указать, каким образом происходит выбор необходимой БД - с помощью SID или Service Name.&lt;br /&gt;
&lt;br /&gt;
Также &#039;&#039;&#039;необходимо&#039;&#039;&#039; следуя высланной инструкции &#039;&#039;&#039;Oracle. Создание пользователя, табличного пространства и таблиц&#039;&#039;&#039; выполнить ее 3-й пункт.&lt;br /&gt;
&lt;br /&gt;
== Настройка PCE для подключения к PCS ==&lt;br /&gt;
&lt;br /&gt;
Для соединения PCE с PCS необходимо указать правильный адрес сервера PCS по которому он сможет получить к нему доступ.&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;###################################################&lt;br /&gt;
#&lt;br /&gt;
# CUSTOMER Config&lt;br /&gt;
#&lt;br /&gt;
###################################################&lt;br /&gt;
&lt;br /&gt;
PC_PATH=&#039;/opt/pc&#039;&lt;br /&gt;
PC_PRODUCT=&#039;PayControl&#039;&lt;br /&gt;
&lt;br /&gt;
#	PC Servers Settings&lt;br /&gt;
##	PCS&lt;br /&gt;
### DB&lt;br /&gt;
PCSDB_HOST=&#039;hostname:port&#039;&lt;br /&gt;
PCSDB=&#039;DB&#039;&lt;br /&gt;
PCSDB_USER=&#039;user&#039;&lt;br /&gt;
PCSDB_PASSWD=&#039;password&#039;&lt;br /&gt;
&lt;br /&gt;
# Oracle connection string delimiters:&lt;br /&gt;
# - use &#039;:&#039;, if PCSDB contains SID&lt;br /&gt;
# - use &#039;/&#039;, if PCSDB contains Service Name &lt;br /&gt;
PCSDB_Oracle_delimiter=&#039;:&#039; &lt;br /&gt;
&lt;br /&gt;
###	PCE&lt;br /&gt;
&lt;br /&gt;
PCS_HOSTNAME_PORT=&#039;localhost:8080&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Установка =&lt;br /&gt;
&lt;br /&gt;
У пользователя, осуществляющего установку должны быть права на выполнение действий с уровнем привилегий root, либо возможность использовать учётную запись root.&lt;br /&gt;
# Скопировать файлы дистрибутива на сервер, например в домашнюю папку пользователя.&lt;br /&gt;
# Перейти в директорию с дистрибутивом.&lt;br /&gt;
# Запустить установочный скрипт с привилегиями root, с необходимыми параметрами.&lt;br /&gt;
&lt;br /&gt;
== PC Pusher ==&lt;br /&gt;
&lt;br /&gt;
Установка PC Pusher на сервере вместе с другим уже установленным модулем PC выполняется следующим образом:&lt;br /&gt;
&lt;br /&gt;
* Скопировать файл приложения сервера в &#039;&#039;WF_PATH\standalone\deployments\&#039;&#039;:&lt;br /&gt;
** на PC Pusher - файл &#039;&#039;pc-pusher-&amp;lt;VERSION&amp;gt;.war&#039;&#039;&lt;br /&gt;
* Дождаться старта WF, проверить, что нет ошибок запуска.&lt;br /&gt;
* После развёртывания новых файлов, в директории deployments будут созданы файлы:&lt;br /&gt;
** с расширением *.deployed, где вместо * будут указаны названия новых модулей.&lt;br /&gt;
** После того, как появятся файлы *.deployed, рекомендуется перезапустить Wildfly&lt;br /&gt;
** При появлении файлов с расширением *.failed, необходимо перезапустить Wildfly.&lt;br /&gt;
&lt;br /&gt;
= Результат выполнения инсталляционного скрипта =&lt;br /&gt;
&lt;br /&gt;
Результат выполнения инсталляционного скрипта является:&lt;br /&gt;
&lt;br /&gt;
* установка службы wildflу (директория /opt);&lt;br /&gt;
* включение автозапуска службы wildfly;&lt;br /&gt;
* добавление драйверов СУБД (опционально);&lt;br /&gt;
* добавление источников данных (только для PCS);&lt;br /&gt;
* развёртывание файлов сервера в wildfly;&lt;br /&gt;
* регистрация прикладной системы в PayControl (при установленном параметре &amp;quot;&#039;&#039;&#039;r&#039;&#039;&#039;&amp;quot;). Результат регистрации - вывод на экран идентификатора системы в конце журнала работы инсталляционного скрипта (systemid). Пример:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;soap:Envelope xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&amp;lt;soap:Body&amp;gt;&amp;lt;ns3:registerSystemResponse xmlns:ns2=&amp;quot;http://ws.safetech.ru/PayControl/services/ws/common/&amp;quot; xmlns:ns3=&amp;quot;http://ws.safetech.ru/PayControlV3/&amp;quot;&amp;gt;&amp;lt;systemId&amp;gt;e64a67c9-73e9-462c-9c27-2d0195a2bd23&amp;lt;/systemId&amp;gt;&amp;lt;/ns3:registerSystemResponse&amp;gt;&amp;lt;/soap:Body&amp;gt;&amp;lt;/soap:Envelope&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; В приведённом примере идентификатором зарегистрированной прикладной системы является &#039;&#039;e64a67c9-73e9-462c-9c27-2d0195a2bd23&#039;&#039;. В дальнейшем этот идентификатор понадобится при настройке прикладной системы на работу с PayControl. Если значение идентификатора прикладной системы утеряно, свяжитесь с компанией СэйфТек для его уточнения.&lt;br /&gt;
&lt;br /&gt;
== Примеры параметров запуска ==&lt;br /&gt;
&lt;br /&gt;
Примеры ниже приведены для установки PayControl с драйвером PostgreSQL (параметр &amp;quot;&#039;&#039;&#039;p&#039;&#039;&#039;&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Всё на одном сервере ===&lt;br /&gt;
&lt;br /&gt;
==== Без регистрации прикладной системы ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo ./install.sh -ipSE&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== С регистрацией прикладной системы ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo ./install.sh -ipSEr&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PCS ===&lt;br /&gt;
&lt;br /&gt;
==== Без регистрации прикладной системы ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo ./install.sh -ipS&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== С регистрацией прикладной системы ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo ./install.sh -ipSr&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PCE ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo ./install.sh -iE&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Контроль =&lt;br /&gt;
&lt;br /&gt;
== Вывод журнала в консоль в реальном времени ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;tail -n 300 -f /opt/wildfly/standalone/log/server.log&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Просмотр успешности развёртывания компонентов сервера ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;ls -la /opt/pc/deployments/&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если компонент сервера развёрнут успешно, рядом с файлом компонента сервера создаётся файл с аналогичным именем файлу сервера с расширением &amp;quot;&#039;&#039;&#039;.deployed&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Проверка доступности сервисов ==&lt;br /&gt;
&lt;br /&gt;
=== PCS ===&lt;br /&gt;
&lt;br /&gt;
Сервисы доступны по ссылкам (при запросе на эти адреса должна возвратиться WSDL-схема):&lt;br /&gt;
&amp;lt;pre&amp;gt;http://&amp;lt;IP или имя сервера PCS&amp;gt;:8080/ws/PayControlServiceV3?wsdl&lt;br /&gt;
http://&amp;lt;IP или имя сервера PCS&amp;gt;:8080/ws/PayControlReportService?wsdl&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PCP ===&lt;br /&gt;
&lt;br /&gt;
Сервис доступен по адресу:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://&amp;lt;IP или имя сервера PC Pusher&amp;gt;:8080/pc-pusher-api/health_check&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PCE ===&lt;br /&gt;
&lt;br /&gt;
Сервис доступен по адресу&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://&amp;lt;IP или имя сервера PCIS External&amp;gt;:8080/PayControl-interaction-rest/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запросе на этот адрес должно возвратиться текст «Not Found» с HTTP-кодом 404. В Internet Explorer будет выведена своя страница браузера, сообщающая о том, что страница не найдена.&lt;br /&gt;
&lt;br /&gt;
= Внесение изменений в БД =&lt;br /&gt;
&lt;br /&gt;
== Создание индексов БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для создания индексов необходимо выполнить следующие запросы к БД PCS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE INDEX pc_keyinfo1_idx ON PC_KEYINFO (userID, expiration_date, is_deleted);&lt;br /&gt;
CREATE INDEX pc_delayedkeyinfo1_idx ON PC_DELAYEDKEYINFO (userID, is_deleted);&lt;br /&gt;
CREATE INDEX pc_device1_idx ON PC_DEVICE (userID, is_deleted); &lt;br /&gt;
CREATE INDEX pc_transaction1_idx ON PC_TRANSACTION (userID, status);&lt;br /&gt;
CREATE INDEX pc_device2_idx ON PC_DEVICE (userID); &lt;br /&gt;
CREATE INDEX pc_keyinfo2_idx ON PC_KEYINFO (userID); &lt;br /&gt;
CREATE INDEX pc_transaction2_idx ON PC_TRANSACTION (userID); &lt;br /&gt;
CREATE INDEX pc_user1_idx ON PC_USER (systemID);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректировка типов данных для MS SQL ==&lt;br /&gt;
&lt;br /&gt;
Для корректировки типов данных необходимо выполнить следующий запрос к БД PCS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;ALTER TABLE PC_TRANSACTION ALTER COLUMN DATA_BINARY image;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Настройка PC Pusher для отправки пушей в другое приложение (при необходимости) =&lt;br /&gt;
Необходимо выполнить пункты описанные по ссылке [[Обновление_с_3.6_до_3.8#Настройка PC Pusher|&amp;quot;Настройка PCS и PC Pusher&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
= Корректировка (смена) адресов серверов PayControl (при необходимости) =&lt;br /&gt;
&lt;br /&gt;
{{Предупреждение|Не рекомендуется дополнительно указывать номер порта, в случаях, если для HTTP используется порт 80, или для HTTPS используется порт 443}}&lt;br /&gt;
&lt;br /&gt;
== Учёт изменения адреса сервера PCS ==&lt;br /&gt;
&lt;br /&gt;
Для учёта изменения адреса сервера PCS необходимо произвести изменения в настройках PCE. В файле /opt/wildfly/bin/standalone.conf, в следующей строке, указав правильный адрес и при необходимости порт сервера PCS, а также уточнив протокол подключения (HTTP/HTTPS):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpcservice.endpoint=http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/ws/PayControlServiceV3?wsdl -Duser.language=ru -Dpaycontrol.locale=ru&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После установки нового значения необходимо перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
== Учёт изменения адреса сервера PC Pusher ==&lt;br /&gt;
&lt;br /&gt;
Для учёта изменения адреса сервера PC Pusher, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Учёт изменения внешнего адреса сервера PCE ==&lt;br /&gt;
&lt;br /&gt;
{{Предупреждение|Если система была переведена в промышленную эксплуатацию, при смене адреса для доступа мобильных устройств, не рекомендуется выводить из действия предыдущий адрес на протяжении всего срока действия выпущенных ключей пользователя. Иначе мобильное приложение потеряет доступ к серверу PayControl и для восстановления будет необходимо перевыпустить ключ и заново добавить его в приложение пользователя.}}&lt;br /&gt;
Для учёта изменения внешнего адреса сервера PayControl, по которому связываются мобильное приложение с сервером PayControl, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/PayControl-interaction-rest/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_PayControl_v3.9_Linux&amp;diff=909</id>
		<title>Установка PayControl v3.9 Linux</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_PayControl_v3.9_Linux&amp;diff=909"/>
		<updated>2026-07-11T14:26:56Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Создание индексов БД PCS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Статья описывает установку с помощью инсталляционного скрипта.&lt;br /&gt;
=Справка скрипта инсталляции=&lt;br /&gt;
&amp;lt;pre&amp;gt;Execution modes:&lt;br /&gt;
  -i  Install. Set it for process installation. &lt;br /&gt;
  -h  Help. Will show this help.&lt;br /&gt;
&lt;br /&gt;
Installation options:&lt;br /&gt;
  -r  Register system (only on PCS, matters with -i option). Optional. For registration you must put you register system request file to &amp;quot;customer&amp;quot; directory before. Contact you supplier for obtain this request file.&lt;br /&gt;
&lt;br /&gt;
 PC roles (must selected at least one of them):&lt;br /&gt;
  -S  PC Server&lt;br /&gt;
  -P  PC Pusher&lt;br /&gt;
  -E  External / PCIS External&lt;br /&gt;
  -G  PC Server Signer (only for version 5.2 and above)&lt;br /&gt;
&lt;br /&gt;
Install wildfly database driver (mandatory for PCS and PCSS modules):&lt;br /&gt;
  -p  PostgreSQL&lt;br /&gt;
  -o  Oracle&lt;br /&gt;
    Need to set up parameter - jdbc version:&lt;br /&gt;
    8  JDBCv8. Certified with JDK8 and JDK11. Supports Oracle Database versions - 21c, 19c, 18c, and 12.2&lt;br /&gt;
    0  JDBCv10. Implements JDBC 4.3 spec and certified with JDK11. Supports Oracle Database versions - 21c, 19c, 18c, and 12.2&lt;br /&gt;
    1  JDBCv11. Implements JDBC 4.3 spec and certified with JDK11 and JDK17. Supports Oracle Database versions - 21c, 19c, 18c, and 12.2&lt;br /&gt;
  -m  MS SQL&lt;br /&gt;
&lt;br /&gt;
Examples&lt;br /&gt;
  install.sh -i -SPEG -r -o8&lt;br /&gt;
  also like&lt;br /&gt;
  install.sh -iSPEGro8&lt;br /&gt;
    will install PCS, PCP, PCE, PCSS, Oracle JDBC8 Driver and execute register system request&lt;br /&gt;
&lt;br /&gt;
  install.sh -i -Sp&lt;br /&gt;
  also like&lt;br /&gt;
  install.sh -Sp&lt;br /&gt;
    will install PCS with Postgres drivers&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Перед установкой PayControl =&lt;br /&gt;
&lt;br /&gt;
Установить последнюю версию JDK 11.&lt;br /&gt;
&lt;br /&gt;
= Конфигурирование =&lt;br /&gt;
&lt;br /&gt;
Конфигурирование производится путём редактирования раздела &amp;lt;code&amp;gt;CUSTOMER Config&amp;lt;/code&amp;gt; файла &amp;lt;code&amp;gt;install.conf&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Подключение к БД для PCS==&lt;br /&gt;
&lt;br /&gt;
Необходимо установить корректные значения адресов и портов СУБД, имена пользователей и пароли.&lt;br /&gt;
&lt;br /&gt;
=== СУБД Oracle ===&lt;br /&gt;
&lt;br /&gt;
При использовании СУБД Oracle необходимо указать, каким образом происходит выбор необходимой БД - с помощью SID или Service Name.&lt;br /&gt;
&lt;br /&gt;
Также &#039;&#039;&#039;необходимо&#039;&#039;&#039; следуя высланной инструкции &#039;&#039;&#039;Oracle. Создание пользователя, табличного пространства и таблиц&#039;&#039;&#039; выполнить ее 3-й пункт.&lt;br /&gt;
&lt;br /&gt;
== Настройка PCE для подключения к PCS ==&lt;br /&gt;
&lt;br /&gt;
Для соединения PCE с PCS необходимо указать правильный адрес сервера PCS по которому он сможет получить к нему доступ.&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;###################################################&lt;br /&gt;
#&lt;br /&gt;
# CUSTOMER Config&lt;br /&gt;
#&lt;br /&gt;
###################################################&lt;br /&gt;
&lt;br /&gt;
PC_PATH=&#039;/opt/pc&#039;&lt;br /&gt;
PC_PRODUCT=&#039;PayControl&#039;&lt;br /&gt;
&lt;br /&gt;
#	PC Servers Settings&lt;br /&gt;
##	PCS&lt;br /&gt;
### DB&lt;br /&gt;
PCSDB_HOST=&#039;hostname:port&#039;&lt;br /&gt;
PCSDB=&#039;DB&#039;&lt;br /&gt;
PCSDB_USER=&#039;user&#039;&lt;br /&gt;
PCSDB_PASSWD=&#039;password&#039;&lt;br /&gt;
&lt;br /&gt;
# Oracle connection string delimiters:&lt;br /&gt;
# - use &#039;:&#039;, if PCSDB contains SID&lt;br /&gt;
# - use &#039;/&#039;, if PCSDB contains Service Name &lt;br /&gt;
PCSDB_Oracle_delimiter=&#039;:&#039; &lt;br /&gt;
&lt;br /&gt;
###	PCE&lt;br /&gt;
&lt;br /&gt;
PCS_HOSTNAME_PORT=&#039;localhost:8080&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Установка =&lt;br /&gt;
&lt;br /&gt;
У пользователя, осуществляющего установку должны быть права на выполнение действий с уровнем привилегий root, либо возможность использовать учётную запись root.&lt;br /&gt;
# Скопировать файлы дистрибутива на сервер, например в домашнюю папку пользователя.&lt;br /&gt;
# Перейти в директорию с дистрибутивом.&lt;br /&gt;
# Запустить установочный скрипт с привилегиями root, с необходимыми параметрами.&lt;br /&gt;
&lt;br /&gt;
== PC Pusher ==&lt;br /&gt;
&lt;br /&gt;
Установка PC Pusher на сервере вместе с другим уже установленным модулем PC выполняется следующим образом:&lt;br /&gt;
&lt;br /&gt;
* Скопировать файл приложения сервера в &#039;&#039;WF_PATH\standalone\deployments\&#039;&#039;:&lt;br /&gt;
** на PC Pusher - файл &#039;&#039;pc-pusher-&amp;lt;VERSION&amp;gt;.war&#039;&#039;&lt;br /&gt;
* Дождаться старта WF, проверить, что нет ошибок запуска.&lt;br /&gt;
* После развёртывания новых файлов, в директории deployments будут созданы файлы:&lt;br /&gt;
** с расширением *.deployed, где вместо * будут указаны названия новых модулей.&lt;br /&gt;
** После того, как появятся файлы *.deployed, рекомендуется перезапустить Wildfly&lt;br /&gt;
** При появлении файлов с расширением *.failed, необходимо перезапустить Wildfly.&lt;br /&gt;
&lt;br /&gt;
= Результат выполнения инсталляционного скрипта =&lt;br /&gt;
&lt;br /&gt;
Результат выполнения инсталляционного скрипта является:&lt;br /&gt;
&lt;br /&gt;
* установка службы wildflу (директория /opt);&lt;br /&gt;
* включение автозапуска службы wildfly;&lt;br /&gt;
* добавление драйверов СУБД (опционально);&lt;br /&gt;
* добавление источников данных (только для PCS);&lt;br /&gt;
* развёртывание файлов сервера в wildfly;&lt;br /&gt;
* регистрация прикладной системы в PayControl (при установленном параметре &amp;quot;&#039;&#039;&#039;r&#039;&#039;&#039;&amp;quot;). Результат регистрации - вывод на экран идентификатора системы в конце журнала работы инсталляционного скрипта (systemid). Пример:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;soap:Envelope xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&amp;lt;soap:Body&amp;gt;&amp;lt;ns3:registerSystemResponse xmlns:ns2=&amp;quot;http://ws.safetech.ru/PayControl/services/ws/common/&amp;quot; xmlns:ns3=&amp;quot;http://ws.safetech.ru/PayControlV3/&amp;quot;&amp;gt;&amp;lt;systemId&amp;gt;e64a67c9-73e9-462c-9c27-2d0195a2bd23&amp;lt;/systemId&amp;gt;&amp;lt;/ns3:registerSystemResponse&amp;gt;&amp;lt;/soap:Body&amp;gt;&amp;lt;/soap:Envelope&amp;gt;&amp;lt;/syntaxhighlight&amp;gt; В приведённом примере идентификатором зарегистрированной прикладной системы является &#039;&#039;e64a67c9-73e9-462c-9c27-2d0195a2bd23&#039;&#039;. В дальнейшем этот идентификатор понадобится при настройке прикладной системы на работу с PayControl. Если значение идентификатора прикладной системы утеряно, свяжитесь с компанией СэйфТек для его уточнения.&lt;br /&gt;
&lt;br /&gt;
== Примеры параметров запуска ==&lt;br /&gt;
&lt;br /&gt;
Примеры ниже приведены для установки PayControl с драйвером PostgreSQL (параметр &amp;quot;&#039;&#039;&#039;p&#039;&#039;&#039;&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Всё на одном сервере ===&lt;br /&gt;
&lt;br /&gt;
==== Без регистрации прикладной системы ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo ./install.sh -ipSE&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== С регистрацией прикладной системы ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo ./install.sh -ipSEr&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PCS ===&lt;br /&gt;
&lt;br /&gt;
==== Без регистрации прикладной системы ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo ./install.sh -ipS&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== С регистрацией прикладной системы ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo ./install.sh -ipSr&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PCE ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo ./install.sh -iE&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Контроль =&lt;br /&gt;
&lt;br /&gt;
== Вывод журнала в консоль в реальном времени ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;tail -n 300 -f /opt/wildfly/standalone/log/server.log&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Просмотр успешности развёртывания компонентов сервера ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;ls -la /opt/pc/deployments/&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если компонент сервера развёрнут успешно, рядом с файлом компонента сервера создаётся файл с аналогичным именем файлу сервера с расширением &amp;quot;&#039;&#039;&#039;.deployed&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Проверка доступности сервисов ==&lt;br /&gt;
&lt;br /&gt;
=== PCS ===&lt;br /&gt;
&lt;br /&gt;
Сервисы доступны по ссылкам (при запросе на эти адреса должна возвратиться WSDL-схема):&lt;br /&gt;
&amp;lt;pre&amp;gt;http://&amp;lt;IP или имя сервера PCS&amp;gt;:8080/ws/PayControlServiceV3?wsdl&lt;br /&gt;
http://&amp;lt;IP или имя сервера PCS&amp;gt;:8080/ws/PayControlReportService?wsdl&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PCP ===&lt;br /&gt;
&lt;br /&gt;
Сервис доступен по адресу:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://&amp;lt;IP или имя сервера PC Pusher&amp;gt;:8080/pc-pusher-api/health_check&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PCE ===&lt;br /&gt;
&lt;br /&gt;
Сервис доступен по адресу&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;http://&amp;lt;IP или имя сервера PCIS External&amp;gt;:8080/PayControl-interaction-rest/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запросе на этот адрес должно возвратиться текст «Not Found» с HTTP-кодом 404. В Internet Explorer будет выведена своя страница браузера, сообщающая о том, что страница не найдена.&lt;br /&gt;
&lt;br /&gt;
= Внесение изменений в БД =&lt;br /&gt;
&lt;br /&gt;
== Создание индексов БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для создания индексов необходимо выполнить следующие запросы к БД PCS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE INDEX pc_keyinfo1_idx ON PC_KEYINFO (userID, expiration_date, is_deleted);&lt;br /&gt;
CREATE INDEX pc_delayedkeyinfo1_idx ON PC_DELAYEDKEYINFO (userID, is_deleted);&lt;br /&gt;
CREATE INDEX pc_device1_idx ON PC_DEVICE (userID, is_deleted); &lt;br /&gt;
CREATE INDEX pc_transaction1_idx ON PC_TRANSACTION (userID, status);&lt;br /&gt;
CREATE INDEX pc_device2_idx ON PC_DEVICE (userID); &lt;br /&gt;
CREATE INDEX pc_keyinfo2_idx ON PC_KEYINFO (userID); &lt;br /&gt;
CREATE INDEX pc_transaction2_idx ON PC_TRANSACTION (userID); &lt;br /&gt;
CREATE INDEX pc_user1_idx ON PC_USER (systemID);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректировка типов данных для MS SQL ==&lt;br /&gt;
&lt;br /&gt;
Для корректировки типов данных необходимо выполнить следующий запрос к БД PCS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;ALTER TABLE PC_TRANSACTION ALTER COLUMN DATA_BINARY image;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Настройка PC Pusher для отправки пушей в другое приложение (при необходимости) =&lt;br /&gt;
Необходимо выполнить пункты описанные по ссылке [[Обновление_с_3.6_до_3.8#Настройка PC Pusher|&amp;quot;Настройка PCS и PC Pusher&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
= Корректировка (смена) адресов серверов PayControl (при необходимости) =&lt;br /&gt;
&lt;br /&gt;
{{Предупреждение|Не рекомендуется дополнительно указывать номер порта, в случаях, если для HTTP используется порт 80, или для HTTPS используется порт 443}}&lt;br /&gt;
&lt;br /&gt;
== Учёт изменения адреса сервера PCS ==&lt;br /&gt;
&lt;br /&gt;
Для учёта изменения адреса сервера PCS необходимо произвести изменения в настройках PCE. В файле /opt/wildfly/bin/standalone.conf, в следующей строке, указав правильный адрес и при необходимости порт сервера PCS, а также уточнив протокол подключения (HTTP/HTTPS):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpcservice.endpoint=http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/ws/PayControlServiceV3?wsdl -Duser.language=ru -Dpaycontrol.locale=ru&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После установки нового значения необходимо перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
== Учёт изменения адреса сервера PC Pusher ==&lt;br /&gt;
&lt;br /&gt;
Для учёта изменения адреса сервера PC Pusher, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Учёт изменения внешнего адреса сервера PCE ==&lt;br /&gt;
&lt;br /&gt;
{{Предупреждение|Если система была переведена в промышленную эксплуатацию, при смене адреса для доступа мобильных устройств, не рекомендуется выводить из действия предыдущий адрес на протяжении всего срока действия выпущенных ключей пользователя. Иначе мобильное приложение потеряет доступ к серверу PayControl и для восстановления будет необходимо перевыпустить ключ и заново добавить его в приложение пользователя.}}&lt;br /&gt;
Для учёта изменения внешнего адреса сервера PayControl, по которому связываются мобильное приложение с сервером PayControl, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/PayControl-interaction-rest/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=908</id>
		<title>Руководство администратора PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=908"/>
		<updated>2026-07-07T18:58:50Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Изменение записи */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Назначение документа =&lt;br /&gt;
Настоящее руководство предназначено для администраторов, выполняющих задачи по обслуживанию серверов PayControl: запуск и остановку служб, журналирование, установку лицензии, обновление и регламентные работы.&lt;br /&gt;
 &lt;br /&gt;
= О продукте =&lt;br /&gt;
PayControl — программный комплекс для подтверждения пользователем операций в системах дистанционного банковского обслуживания и электронного документооборота. По сравнению с SMS, одноразовыми паролями (OTP), скретч-картами и MAC-токенами PayControl обеспечивает более высокий уровень удобства и информационной безопасности.&lt;br /&gt;
&lt;br /&gt;
= Общее описание =&lt;br /&gt;
Сервер PayControl работает на базе сервера приложений [[Wildfly]] в среде Java 11 и состоит из трёх компонентов:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Компонент !! Назначение !! Расположение и требования&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PayControl Server (PCS)&#039;&#039;&#039; || Основной сервер. Взаимодействует с прикладной системой, хранит данные в БД PCS. Отправляет данные на PCIS Internal, получает данные с PCIS External. || Локальная сеть.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PCIS Internal&#039;&#039;&#039; (PayControl Interaction Server Internal) || Отправляет Push-уведомления о появлении неподтверждённой транзакции (без сведений о самой транзакции). || Как правило, DMZ-зона, с доступом в Интернет - требуется доступ к серверам Google и Apple. Может размещаться на одном сервере с PCS или PCIS External - в зависимости от требований ИБ и возможностей ИТ-инфраструктуры банка.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PCIS External&#039;&#039;&#039; (PayControl Interaction Server External) || Взаимодействует с мобильными приложениями: передаёт данные платежа, принимает результаты подтверждения транзакций. || DMZ-зона с доступом извне; внешний фиксированный IP-адрес. Для TLS - доменное имя и сертификат внешнего УЦ.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Запуск и остановка служб =&lt;br /&gt;
== Linux ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start wildfly.service     # запуск&lt;br /&gt;
systemctl stop wildfly.service      # остановка&lt;br /&gt;
systemctl restart wildfly.service   # перезапуск&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Windows ==&lt;br /&gt;
Через консоль управления службами (&#039;&#039;services.msc&#039;&#039;) либо из командной строки:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net start wildfly&lt;br /&gt;
net stop wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Журналирование =&lt;br /&gt;
== Расположение журналов ==&lt;br /&gt;
События работы сервера PayControl записываются в общий журнал [[Wildfly]]. По умолчанию фиксируются только ошибки PayControl.&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ОС !! Путь к журналу за текущий день&lt;br /&gt;
|-&lt;br /&gt;
| Linux || &amp;lt;code&amp;gt;/opt/wildfly/standalone/log/server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Windows || &amp;lt;code&amp;gt;C:\wildfly\standalone\log\server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Журналы за прошлые дни имеют суффикс с датой: &amp;lt;code&amp;gt;server.log.YYYY-MM-DD&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Включение вывода информационных данных работы PayControl ==&lt;br /&gt;
В некоторых случаях может потребоваться вывод отладочной информации PayControl. Порядок её включения описан ниже для разных компонентов сервера PayControl.&lt;br /&gt;
=== Для PCS и PCIS Internal ===&lt;br /&gt;
==== Вывод отладочной информации ====&lt;br /&gt;
Для включения вывода отладочной информации необходимо:&lt;br /&gt;
# В БД PCS или БД PCIS соответственно для нужного сервера, добавить/изменить запись в таблице pc_sys_property, установив следующие значения:&lt;br /&gt;
#* setting_name=&#039;DEBUG_INFO&#039;&lt;br /&gt;
#* setting_value = &#039;1&#039;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Примеры SQL-запросов добавления записи для разных СУБД:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! СУБД !! Запрос&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Oracle || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (PC_SETTING_SEQ.NEXTVAL, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| MS SQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (NEXT VALUE FOR PC_SETTING_SEQ, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Изменение записи =====&lt;br /&gt;
Пример SQL-запроса для изменения записи (для всех перечисленных СУБД):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_sys_property set setting_value = &#039;1&#039; where setting_name=&#039;DEBUG_INFO&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Вывод содержимого SOAP-запросов и ответов ====&lt;br /&gt;
{{Предупреждение|Опция не работает в [[Wildfly]] версии 13.0.0-Final.}}&lt;br /&gt;
Для включения вывода содержимого SOAP-запросов и ответов службой wildfly необходимо:&lt;br /&gt;
# Добавить после блока &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;extensions&amp;gt; ... &amp;lt;/extensions&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; в файл&lt;br /&gt;
#* Linux: &amp;lt;code&amp;gt;/opt/wildfly/standalone/configuration/standalone.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
#* Windows: &amp;lt;code&amp;gt;C:\wildfly\standalone\configuration\standalone.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
#: следующий блок:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;system-properties&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;org.apache.cxf.logging.enabled&amp;quot; value=&amp;quot;pretty&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/system-properties&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
=== PCIS External (с версии 3.6) ===&lt;br /&gt;
Начиная с версии 3.6 PCIS External может журналировать запросы к &amp;lt;code&amp;gt;/jsonrequest_v2&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Для включения добавьте в опции Java-машины параметр &amp;lt;code&amp;gt;paycontrol.logRequests=yes&amp;lt;/code&amp;gt;:&lt;br /&gt;
 &lt;br /&gt;
* Linux — в файл &amp;lt;code&amp;gt;/opt/wildfly/bin/standalone.conf&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Windows — в файл &amp;lt;code&amp;gt;C:\wildfly\bin\standalone.conf.bat&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Затем перезапустите службу wildfly.&lt;br /&gt;
&lt;br /&gt;
= Отправка информации о событиях =&lt;br /&gt;
Адрес для отправки информации об устройстве и о событиях взаимодействия мобильного приложения (SDK) с сервером PayControl задаётся в БД PCS: таблица &amp;lt;code&amp;gt;pc_system&amp;lt;/code&amp;gt;, поле &amp;lt;code&amp;gt;events_post_url&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system set events_post_url = &#039;http://example.com/pc_events_reciever&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
После изменения перезапустите WildFly PCS.&lt;br /&gt;
 &lt;br /&gt;
{{Предупреждение|Для сбора информации о событиях при создании ключа должен быть установлен флаг сбора информации о событиях, а для передачи данных об устройстве — дополнительно флаг сбора информации об устройстве. Подробнее — в описании API сервера.}}&lt;br /&gt;
&lt;br /&gt;
= Установка лицензии =&lt;br /&gt;
Без лицензионного файла сервер работает в демонстрационном режиме: можно завести не более 20 активных пользователей PayControl. &lt;br /&gt;
&lt;br /&gt;
При включённой отладочной информации в журнал выводятся сообщения вида:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.utils.licenseManager.LicenseManager] (default task-2)    --- no license found in database&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- Error load License, cheking if free users count exceeded&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- ATTENTION! LICENSE NOT FOUND! You are using unlicensed demo-only version of the service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запросом к БД ==&lt;br /&gt;
Поместите содержимое файла лицензии в SQL-запрос к БД PCS, указав идентификатор системы:&lt;br /&gt;
* до версии 3.5 включительно:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* с версии 3.6:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system_params set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Добавлением файла лицензии ==&lt;br /&gt;
Скопируйте файл лицензии на сервер PCS:&lt;br /&gt;
* Linux — в &amp;lt;code&amp;gt;/opt/wildfly/&amp;lt;/code&amp;gt;;&lt;br /&gt;
* Windows — в &amp;lt;code&amp;gt;C:\wildfly\&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;C:\PayControl\&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Процесс обновления в рамках одной версии =&lt;br /&gt;
Обновление выполняется заменой файлов модулей в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]:&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Модуль !! Пример имени файла&lt;br /&gt;
|-&lt;br /&gt;
| PC Server || &amp;lt;code&amp;gt;PayControl-services-module-3.9.452.ear&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC Pusher || &amp;lt;code&amp;gt;pc-pusher-5.5.348.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC External || &amp;lt;code&amp;gt;PayControl-interaction-rest-3.9.452.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Порядок действий:&lt;br /&gt;
# Сохраните файлы модулей текущей версии — они понадобятся для отката.&lt;br /&gt;
# Замените файлы модулей в директории &#039;&#039;deployments&#039;&#039; на новые.&lt;br /&gt;
# Дождитесь развёртывания. В директории появятся файлы-маркеры:&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.undeployed&amp;lt;/code&amp;gt; — для убранных модулей; такие файлы рекомендуется удалить;&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.deployed&amp;lt;/code&amp;gt; — для успешно развёрнутых новых модулей.&lt;br /&gt;
# Если появились файлы &amp;lt;code&amp;gt;*.failed&amp;lt;/code&amp;gt; — [[#Запуск и остановка служб|перезапустите Wildfly]].&lt;br /&gt;
&lt;br /&gt;
= Регламентное обслуживание =&lt;br /&gt;
Администратору PayControl необходимо в плановом режиме:&lt;br /&gt;
* контролировать достаточность свободного места на серверах PayControl;&lt;br /&gt;
* контролировать достаточность дискового пространства, выделенного базам данных (БД PCS и БД PCIS);&lt;br /&gt;
* своевременно заменять сертификат HTTPS сервера PCIS External;&lt;br /&gt;
* своевременно заменять сертификаты HTTPS серверов PCS и PCIS Internal (при их наличии).&lt;br /&gt;
[[Категория:Руководства]]&lt;br /&gt;
[[Категория:Серверная часть]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=907</id>
		<title>Руководство администратора PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=907"/>
		<updated>2026-07-07T18:58:32Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Вывод отладочной информации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Назначение документа =&lt;br /&gt;
Настоящее руководство предназначено для администраторов, выполняющих задачи по обслуживанию серверов PayControl: запуск и остановку служб, журналирование, установку лицензии, обновление и регламентные работы.&lt;br /&gt;
 &lt;br /&gt;
= О продукте =&lt;br /&gt;
PayControl — программный комплекс для подтверждения пользователем операций в системах дистанционного банковского обслуживания и электронного документооборота. По сравнению с SMS, одноразовыми паролями (OTP), скретч-картами и MAC-токенами PayControl обеспечивает более высокий уровень удобства и информационной безопасности.&lt;br /&gt;
&lt;br /&gt;
= Общее описание =&lt;br /&gt;
Сервер PayControl работает на базе сервера приложений [[Wildfly]] в среде Java 11 и состоит из трёх компонентов:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Компонент !! Назначение !! Расположение и требования&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PayControl Server (PCS)&#039;&#039;&#039; || Основной сервер. Взаимодействует с прикладной системой, хранит данные в БД PCS. Отправляет данные на PCIS Internal, получает данные с PCIS External. || Локальная сеть.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PCIS Internal&#039;&#039;&#039; (PayControl Interaction Server Internal) || Отправляет Push-уведомления о появлении неподтверждённой транзакции (без сведений о самой транзакции). || Как правило, DMZ-зона, с доступом в Интернет - требуется доступ к серверам Google и Apple. Может размещаться на одном сервере с PCS или PCIS External - в зависимости от требований ИБ и возможностей ИТ-инфраструктуры банка.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PCIS External&#039;&#039;&#039; (PayControl Interaction Server External) || Взаимодействует с мобильными приложениями: передаёт данные платежа, принимает результаты подтверждения транзакций. || DMZ-зона с доступом извне; внешний фиксированный IP-адрес. Для TLS - доменное имя и сертификат внешнего УЦ.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Запуск и остановка служб =&lt;br /&gt;
== Linux ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start wildfly.service     # запуск&lt;br /&gt;
systemctl stop wildfly.service      # остановка&lt;br /&gt;
systemctl restart wildfly.service   # перезапуск&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Windows ==&lt;br /&gt;
Через консоль управления службами (&#039;&#039;services.msc&#039;&#039;) либо из командной строки:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net start wildfly&lt;br /&gt;
net stop wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Журналирование =&lt;br /&gt;
== Расположение журналов ==&lt;br /&gt;
События работы сервера PayControl записываются в общий журнал [[Wildfly]]. По умолчанию фиксируются только ошибки PayControl.&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ОС !! Путь к журналу за текущий день&lt;br /&gt;
|-&lt;br /&gt;
| Linux || &amp;lt;code&amp;gt;/opt/wildfly/standalone/log/server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Windows || &amp;lt;code&amp;gt;C:\wildfly\standalone\log\server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Журналы за прошлые дни имеют суффикс с датой: &amp;lt;code&amp;gt;server.log.YYYY-MM-DD&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Включение вывода информационных данных работы PayControl ==&lt;br /&gt;
В некоторых случаях может потребоваться вывод отладочной информации PayControl. Порядок её включения описан ниже для разных компонентов сервера PayControl.&lt;br /&gt;
=== Для PCS и PCIS Internal ===&lt;br /&gt;
==== Вывод отладочной информации ====&lt;br /&gt;
Для включения вывода отладочной информации необходимо:&lt;br /&gt;
# В БД PCS или БД PCIS соответственно для нужного сервера, добавить/изменить запись в таблице pc_sys_property, установив следующие значения:&lt;br /&gt;
#* setting_name=&#039;DEBUG_INFO&#039;&lt;br /&gt;
#* setting_value = &#039;1&#039;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Примеры SQL-запросов добавления записи для разных СУБД:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! СУБД !! Запрос&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Oracle || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (PC_SETTING_SEQ.NEXTVAL, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| MS SQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (NEXT VALUE FOR PC_SETTING_SEQ, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Изменение записи =====&lt;br /&gt;
Пример SQL запроса для изменения записи (для всех перечисленных СУБД):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_sys_property set setting_value = &#039;1&#039; where setting_name=&#039;DEBUG_INFO&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Вывод содержимого SOAP-запросов и ответов ====&lt;br /&gt;
{{Предупреждение|Опция не работает в [[Wildfly]] версии 13.0.0-Final.}}&lt;br /&gt;
Для включения вывода содержимого SOAP-запросов и ответов службой wildfly необходимо:&lt;br /&gt;
# Добавить после блока &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;extensions&amp;gt; ... &amp;lt;/extensions&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; в файл&lt;br /&gt;
#* Linux: &amp;lt;code&amp;gt;/opt/wildfly/standalone/configuration/standalone.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
#* Windows: &amp;lt;code&amp;gt;C:\wildfly\standalone\configuration\standalone.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
#: следующий блок:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;system-properties&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;org.apache.cxf.logging.enabled&amp;quot; value=&amp;quot;pretty&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/system-properties&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
=== PCIS External (с версии 3.6) ===&lt;br /&gt;
Начиная с версии 3.6 PCIS External может журналировать запросы к &amp;lt;code&amp;gt;/jsonrequest_v2&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Для включения добавьте в опции Java-машины параметр &amp;lt;code&amp;gt;paycontrol.logRequests=yes&amp;lt;/code&amp;gt;:&lt;br /&gt;
 &lt;br /&gt;
* Linux — в файл &amp;lt;code&amp;gt;/opt/wildfly/bin/standalone.conf&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Windows — в файл &amp;lt;code&amp;gt;C:\wildfly\bin\standalone.conf.bat&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Затем перезапустите службу wildfly.&lt;br /&gt;
&lt;br /&gt;
= Отправка информации о событиях =&lt;br /&gt;
Адрес для отправки информации об устройстве и о событиях взаимодействия мобильного приложения (SDK) с сервером PayControl задаётся в БД PCS: таблица &amp;lt;code&amp;gt;pc_system&amp;lt;/code&amp;gt;, поле &amp;lt;code&amp;gt;events_post_url&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system set events_post_url = &#039;http://example.com/pc_events_reciever&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
После изменения перезапустите WildFly PCS.&lt;br /&gt;
 &lt;br /&gt;
{{Предупреждение|Для сбора информации о событиях при создании ключа должен быть установлен флаг сбора информации о событиях, а для передачи данных об устройстве — дополнительно флаг сбора информации об устройстве. Подробнее — в описании API сервера.}}&lt;br /&gt;
&lt;br /&gt;
= Установка лицензии =&lt;br /&gt;
Без лицензионного файла сервер работает в демонстрационном режиме: можно завести не более 20 активных пользователей PayControl. &lt;br /&gt;
&lt;br /&gt;
При включённой отладочной информации в журнал выводятся сообщения вида:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.utils.licenseManager.LicenseManager] (default task-2)    --- no license found in database&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- Error load License, cheking if free users count exceeded&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- ATTENTION! LICENSE NOT FOUND! You are using unlicensed demo-only version of the service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запросом к БД ==&lt;br /&gt;
Поместите содержимое файла лицензии в SQL-запрос к БД PCS, указав идентификатор системы:&lt;br /&gt;
* до версии 3.5 включительно:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* с версии 3.6:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system_params set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Добавлением файла лицензии ==&lt;br /&gt;
Скопируйте файл лицензии на сервер PCS:&lt;br /&gt;
* Linux — в &amp;lt;code&amp;gt;/opt/wildfly/&amp;lt;/code&amp;gt;;&lt;br /&gt;
* Windows — в &amp;lt;code&amp;gt;C:\wildfly\&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;C:\PayControl\&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Процесс обновления в рамках одной версии =&lt;br /&gt;
Обновление выполняется заменой файлов модулей в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]:&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Модуль !! Пример имени файла&lt;br /&gt;
|-&lt;br /&gt;
| PC Server || &amp;lt;code&amp;gt;PayControl-services-module-3.9.452.ear&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC Pusher || &amp;lt;code&amp;gt;pc-pusher-5.5.348.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC External || &amp;lt;code&amp;gt;PayControl-interaction-rest-3.9.452.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Порядок действий:&lt;br /&gt;
# Сохраните файлы модулей текущей версии — они понадобятся для отката.&lt;br /&gt;
# Замените файлы модулей в директории &#039;&#039;deployments&#039;&#039; на новые.&lt;br /&gt;
# Дождитесь развёртывания. В директории появятся файлы-маркеры:&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.undeployed&amp;lt;/code&amp;gt; — для убранных модулей; такие файлы рекомендуется удалить;&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.deployed&amp;lt;/code&amp;gt; — для успешно развёрнутых новых модулей.&lt;br /&gt;
# Если появились файлы &amp;lt;code&amp;gt;*.failed&amp;lt;/code&amp;gt; — [[#Запуск и остановка служб|перезапустите Wildfly]].&lt;br /&gt;
&lt;br /&gt;
= Регламентное обслуживание =&lt;br /&gt;
Администратору PayControl необходимо в плановом режиме:&lt;br /&gt;
* контролировать достаточность свободного места на серверах PayControl;&lt;br /&gt;
* контролировать достаточность дискового пространства, выделенного базам данных (БД PCS и БД PCIS);&lt;br /&gt;
* своевременно заменять сертификат HTTPS сервера PCIS External;&lt;br /&gt;
* своевременно заменять сертификаты HTTPS серверов PCS и PCIS Internal (при их наличии).&lt;br /&gt;
[[Категория:Руководства]]&lt;br /&gt;
[[Категория:Серверная часть]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=906</id>
		<title>Руководство администратора PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=906"/>
		<updated>2026-07-07T18:56:41Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Вывод содержимого SOAP-запросов и ответов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Назначение документа =&lt;br /&gt;
Настоящее руководство предназначено для администраторов, выполняющих задачи по обслуживанию серверов PayControl: запуск и остановку служб, журналирование, установку лицензии, обновление и регламентные работы.&lt;br /&gt;
 &lt;br /&gt;
= О продукте =&lt;br /&gt;
PayControl — программный комплекс для подтверждения пользователем операций в системах дистанционного банковского обслуживания и электронного документооборота. По сравнению с SMS, одноразовыми паролями (OTP), скретч-картами и MAC-токенами PayControl обеспечивает более высокий уровень удобства и информационной безопасности.&lt;br /&gt;
&lt;br /&gt;
= Общее описание =&lt;br /&gt;
Сервер PayControl работает на базе сервера приложений [[Wildfly]] в среде Java 11 и состоит из трёх компонентов:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Компонент !! Назначение !! Расположение и требования&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PayControl Server (PCS)&#039;&#039;&#039; || Основной сервер. Взаимодействует с прикладной системой, хранит данные в БД PCS. Отправляет данные на PCIS Internal, получает данные с PCIS External. || Локальная сеть.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PCIS Internal&#039;&#039;&#039; (PayControl Interaction Server Internal) || Отправляет Push-уведомления о появлении неподтверждённой транзакции (без сведений о самой транзакции). || Как правило, DMZ-зона, с доступом в Интернет - требуется доступ к серверам Google и Apple. Может размещаться на одном сервере с PCS или PCIS External - в зависимости от требований ИБ и возможностей ИТ-инфраструктуры банка.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PCIS External&#039;&#039;&#039; (PayControl Interaction Server External) || Взаимодействует с мобильными приложениями: передаёт данные платежа, принимает результаты подтверждения транзакций. || DMZ-зона с доступом извне; внешний фиксированный IP-адрес. Для TLS - доменное имя и сертификат внешнего УЦ.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Запуск и остановка служб =&lt;br /&gt;
== Linux ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start wildfly.service     # запуск&lt;br /&gt;
systemctl stop wildfly.service      # остановка&lt;br /&gt;
systemctl restart wildfly.service   # перезапуск&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Windows ==&lt;br /&gt;
Через консоль управления службами (&#039;&#039;services.msc&#039;&#039;) либо из командной строки:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net start wildfly&lt;br /&gt;
net stop wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Журналирование =&lt;br /&gt;
== Расположение журналов ==&lt;br /&gt;
События работы сервера PayControl записываются в общий журнал [[Wildfly]]. По умолчанию фиксируются только ошибки PayControl.&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ОС !! Путь к журналу за текущий день&lt;br /&gt;
|-&lt;br /&gt;
| Linux || &amp;lt;code&amp;gt;/opt/wildfly/standalone/log/server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Windows || &amp;lt;code&amp;gt;C:\wildfly\standalone\log\server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Журналы за прошлые дни имеют суффикс с датой: &amp;lt;code&amp;gt;server.log.YYYY-MM-DD&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Включение вывода информационных данных работы PayControl ==&lt;br /&gt;
В некоторых случаях может потребоваться вывод отладочной информации PayControl. Порядок её включения описан ниже для разных компонентов сервера PayControl.&lt;br /&gt;
=== Для PCS и PCIS Internal ===&lt;br /&gt;
==== Вывод отладочной информации ====&lt;br /&gt;
Для включения вывода отладочной информации необходимо:&lt;br /&gt;
# В БД PCS или БД PCIS соответственно для нужного сервера, добавить/изменить запись в таблице pc_sys_property, установив следующие значения:&lt;br /&gt;
#* setting_name=&#039;DEBUG_INFO&#039;&lt;br /&gt;
#* setting_value = &#039;1&#039;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Примеры SQL запросов добавления записи для разных СУБД:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! СУБД !! Запрос&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Oracle || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (PC_SETTING_SEQ.NEXTVAL, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| MS SQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (NEXT VALUE FOR PC_SETTING_SEQ, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Изменение записи =====&lt;br /&gt;
Пример SQL запроса для изменения записи (для всех перечисленных СУБД):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_sys_property set setting_value = &#039;1&#039; where setting_name=&#039;DEBUG_INFO&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Вывод содержимого SOAP-запросов и ответов ====&lt;br /&gt;
{{Предупреждение|Опция не работает в [[Wildfly]] версии 13.0.0-Final.}}&lt;br /&gt;
Для включения вывода содержимого SOAP-запросов и ответов службой wildfly необходимо:&lt;br /&gt;
# Добавить после блока &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;extensions&amp;gt; ... &amp;lt;/extensions&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; в файл&lt;br /&gt;
#* Linux: &amp;lt;code&amp;gt;/opt/wildfly/standalone/configuration/standalone.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
#* Windows: &amp;lt;code&amp;gt;C:\wildfly\standalone\configuration\standalone.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
#: следующий блок:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;system-properties&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;org.apache.cxf.logging.enabled&amp;quot; value=&amp;quot;pretty&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/system-properties&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
=== PCIS External (с версии 3.6) ===&lt;br /&gt;
Начиная с версии 3.6 PCIS External может журналировать запросы к &amp;lt;code&amp;gt;/jsonrequest_v2&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Для включения добавьте в опции Java-машины параметр &amp;lt;code&amp;gt;paycontrol.logRequests=yes&amp;lt;/code&amp;gt;:&lt;br /&gt;
 &lt;br /&gt;
* Linux — в файл &amp;lt;code&amp;gt;/opt/wildfly/bin/standalone.conf&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Windows — в файл &amp;lt;code&amp;gt;C:\wildfly\bin\standalone.conf.bat&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Затем перезапустите службу wildfly.&lt;br /&gt;
&lt;br /&gt;
= Отправка информации о событиях =&lt;br /&gt;
Адрес для отправки информации об устройстве и о событиях взаимодействия мобильного приложения (SDK) с сервером PayControl задаётся в БД PCS: таблица &amp;lt;code&amp;gt;pc_system&amp;lt;/code&amp;gt;, поле &amp;lt;code&amp;gt;events_post_url&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system set events_post_url = &#039;http://example.com/pc_events_reciever&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
После изменения перезапустите WildFly PCS.&lt;br /&gt;
 &lt;br /&gt;
{{Предупреждение|Для сбора информации о событиях при создании ключа должен быть установлен флаг сбора информации о событиях, а для передачи данных об устройстве — дополнительно флаг сбора информации об устройстве. Подробнее — в описании API сервера.}}&lt;br /&gt;
&lt;br /&gt;
= Установка лицензии =&lt;br /&gt;
Без лицензионного файла сервер работает в демонстрационном режиме: можно завести не более 20 активных пользователей PayControl. &lt;br /&gt;
&lt;br /&gt;
При включённой отладочной информации в журнал выводятся сообщения вида:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.utils.licenseManager.LicenseManager] (default task-2)    --- no license found in database&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- Error load License, cheking if free users count exceeded&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- ATTENTION! LICENSE NOT FOUND! You are using unlicensed demo-only version of the service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запросом к БД ==&lt;br /&gt;
Поместите содержимое файла лицензии в SQL-запрос к БД PCS, указав идентификатор системы:&lt;br /&gt;
* до версии 3.5 включительно:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* с версии 3.6:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system_params set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Добавлением файла лицензии ==&lt;br /&gt;
Скопируйте файл лицензии на сервер PCS:&lt;br /&gt;
* Linux — в &amp;lt;code&amp;gt;/opt/wildfly/&amp;lt;/code&amp;gt;;&lt;br /&gt;
* Windows — в &amp;lt;code&amp;gt;C:\wildfly\&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;C:\PayControl\&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Процесс обновления в рамках одной версии =&lt;br /&gt;
Обновление выполняется заменой файлов модулей в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]:&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Модуль !! Пример имени файла&lt;br /&gt;
|-&lt;br /&gt;
| PC Server || &amp;lt;code&amp;gt;PayControl-services-module-3.9.452.ear&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC Pusher || &amp;lt;code&amp;gt;pc-pusher-5.5.348.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC External || &amp;lt;code&amp;gt;PayControl-interaction-rest-3.9.452.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Порядок действий:&lt;br /&gt;
# Сохраните файлы модулей текущей версии — они понадобятся для отката.&lt;br /&gt;
# Замените файлы модулей в директории &#039;&#039;deployments&#039;&#039; на новые.&lt;br /&gt;
# Дождитесь развёртывания. В директории появятся файлы-маркеры:&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.undeployed&amp;lt;/code&amp;gt; — для убранных модулей; такие файлы рекомендуется удалить;&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.deployed&amp;lt;/code&amp;gt; — для успешно развёрнутых новых модулей.&lt;br /&gt;
# Если появились файлы &amp;lt;code&amp;gt;*.failed&amp;lt;/code&amp;gt; — [[#Запуск и остановка служб|перезапустите Wildfly]].&lt;br /&gt;
&lt;br /&gt;
= Регламентное обслуживание =&lt;br /&gt;
Администратору PayControl необходимо в плановом режиме:&lt;br /&gt;
* контролировать достаточность свободного места на серверах PayControl;&lt;br /&gt;
* контролировать достаточность дискового пространства, выделенного базам данных (БД PCS и БД PCIS);&lt;br /&gt;
* своевременно заменять сертификат HTTPS сервера PCIS External;&lt;br /&gt;
* своевременно заменять сертификаты HTTPS серверов PCS и PCIS Internal (при их наличии).&lt;br /&gt;
[[Категория:Руководства]]&lt;br /&gt;
[[Категория:Серверная часть]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=905</id>
		<title>Руководство администратора PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=905"/>
		<updated>2026-07-07T18:55:34Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Включение вывода информационных данных работы PayControl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Назначение документа =&lt;br /&gt;
Настоящее руководство предназначено для администраторов, выполняющих задачи по обслуживанию серверов PayControl: запуск и остановку служб, журналирование, установку лицензии, обновление и регламентные работы.&lt;br /&gt;
 &lt;br /&gt;
= О продукте =&lt;br /&gt;
PayControl — программный комплекс для подтверждения пользователем операций в системах дистанционного банковского обслуживания и электронного документооборота. По сравнению с SMS, одноразовыми паролями (OTP), скретч-картами и MAC-токенами PayControl обеспечивает более высокий уровень удобства и информационной безопасности.&lt;br /&gt;
&lt;br /&gt;
= Общее описание =&lt;br /&gt;
Сервер PayControl работает на базе сервера приложений [[Wildfly]] в среде Java 11 и состоит из трёх компонентов:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Компонент !! Назначение !! Расположение и требования&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PayControl Server (PCS)&#039;&#039;&#039; || Основной сервер. Взаимодействует с прикладной системой, хранит данные в БД PCS. Отправляет данные на PCIS Internal, получает данные с PCIS External. || Локальная сеть.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PCIS Internal&#039;&#039;&#039; (PayControl Interaction Server Internal) || Отправляет Push-уведомления о появлении неподтверждённой транзакции (без сведений о самой транзакции). || Как правило, DMZ-зона, с доступом в Интернет - требуется доступ к серверам Google и Apple. Может размещаться на одном сервере с PCS или PCIS External - в зависимости от требований ИБ и возможностей ИТ-инфраструктуры банка.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PCIS External&#039;&#039;&#039; (PayControl Interaction Server External) || Взаимодействует с мобильными приложениями: передаёт данные платежа, принимает результаты подтверждения транзакций. || DMZ-зона с доступом извне; внешний фиксированный IP-адрес. Для TLS - доменное имя и сертификат внешнего УЦ.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Запуск и остановка служб =&lt;br /&gt;
== Linux ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start wildfly.service     # запуск&lt;br /&gt;
systemctl stop wildfly.service      # остановка&lt;br /&gt;
systemctl restart wildfly.service   # перезапуск&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Windows ==&lt;br /&gt;
Через консоль управления службами (&#039;&#039;services.msc&#039;&#039;) либо из командной строки:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net start wildfly&lt;br /&gt;
net stop wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Журналирование =&lt;br /&gt;
== Расположение журналов ==&lt;br /&gt;
События работы сервера PayControl записываются в общий журнал [[Wildfly]]. По умолчанию фиксируются только ошибки PayControl.&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ОС !! Путь к журналу за текущий день&lt;br /&gt;
|-&lt;br /&gt;
| Linux || &amp;lt;code&amp;gt;/opt/wildfly/standalone/log/server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Windows || &amp;lt;code&amp;gt;C:\wildfly\standalone\log\server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Журналы за прошлые дни имеют суффикс с датой: &amp;lt;code&amp;gt;server.log.YYYY-MM-DD&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Включение вывода информационных данных работы PayControl ==&lt;br /&gt;
В некоторых случаях может потребоваться вывод отладочной информации PayControl. Порядок её включения описан ниже для разных компонентов сервера PayControl.&lt;br /&gt;
=== Для PCS и PCIS Internal ===&lt;br /&gt;
==== Вывод отладочной информации ====&lt;br /&gt;
Для включения вывода отладочной информации необходимо:&lt;br /&gt;
# В БД PCS или БД PCIS соответственно для нужного сервера, добавить/изменить запись в таблице pc_sys_property, установив следующие значения:&lt;br /&gt;
#* setting_name=&#039;DEBUG_INFO&#039;&lt;br /&gt;
#* setting_value = &#039;1&#039;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Примеры SQL запросов добавления записи для разных СУБД:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! СУБД !! Запрос&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Oracle || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (PC_SETTING_SEQ.NEXTVAL, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| MS SQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (NEXT VALUE FOR PC_SETTING_SEQ, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Изменение записи =====&lt;br /&gt;
Пример SQL запроса для изменения записи (для всех перечисленных СУБД):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_sys_property set setting_value = &#039;1&#039; where setting_name=&#039;DEBUG_INFO&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Вывод содержимого SOAP-запросов и ответов ====&lt;br /&gt;
{{Предупреждение|Опция не работает в [[Wildfly]] версии 13.0.0-Final.}}&lt;br /&gt;
Для включения вывода содержимого SOAP-запросов и ответов службой wildfly необходимо:&lt;br /&gt;
# Добавить после блока &amp;lt;extensions&amp;gt; ... &amp;lt;/extensions&amp;gt; в файл&lt;br /&gt;
#* Linux: &amp;lt;code&amp;gt;/opt/wildfly/standalone/configuration/standalone.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
#* Windows: &amp;lt;code&amp;gt;C:\wildfly\standalone\configuration\standalone.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
#: следующий блок:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;system-properties&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;org.apache.cxf.logging.enabled&amp;quot; value=&amp;quot;pretty&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/system-properties&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
=== PCIS External (с версии 3.6) ===&lt;br /&gt;
Начиная с версии 3.6 PCIS External может журналировать запросы к &amp;lt;code&amp;gt;/jsonrequest_v2&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Для включения добавьте в опции Java-машины параметр &amp;lt;code&amp;gt;paycontrol.logRequests=yes&amp;lt;/code&amp;gt;:&lt;br /&gt;
 &lt;br /&gt;
* Linux — в файл &amp;lt;code&amp;gt;/opt/wildfly/bin/standalone.conf&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Windows — в файл &amp;lt;code&amp;gt;C:\wildfly\bin\standalone.conf.bat&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Затем перезапустите службу wildfly.&lt;br /&gt;
&lt;br /&gt;
= Отправка информации о событиях =&lt;br /&gt;
Адрес для отправки информации об устройстве и о событиях взаимодействия мобильного приложения (SDK) с сервером PayControl задаётся в БД PCS: таблица &amp;lt;code&amp;gt;pc_system&amp;lt;/code&amp;gt;, поле &amp;lt;code&amp;gt;events_post_url&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system set events_post_url = &#039;http://example.com/pc_events_reciever&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
После изменения перезапустите WildFly PCS.&lt;br /&gt;
 &lt;br /&gt;
{{Предупреждение|Для сбора информации о событиях при создании ключа должен быть установлен флаг сбора информации о событиях, а для передачи данных об устройстве — дополнительно флаг сбора информации об устройстве. Подробнее — в описании API сервера.}}&lt;br /&gt;
&lt;br /&gt;
= Установка лицензии =&lt;br /&gt;
Без лицензионного файла сервер работает в демонстрационном режиме: можно завести не более 20 активных пользователей PayControl. &lt;br /&gt;
&lt;br /&gt;
При включённой отладочной информации в журнал выводятся сообщения вида:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.utils.licenseManager.LicenseManager] (default task-2)    --- no license found in database&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- Error load License, cheking if free users count exceeded&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- ATTENTION! LICENSE NOT FOUND! You are using unlicensed demo-only version of the service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запросом к БД ==&lt;br /&gt;
Поместите содержимое файла лицензии в SQL-запрос к БД PCS, указав идентификатор системы:&lt;br /&gt;
* до версии 3.5 включительно:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* с версии 3.6:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system_params set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Добавлением файла лицензии ==&lt;br /&gt;
Скопируйте файл лицензии на сервер PCS:&lt;br /&gt;
* Linux — в &amp;lt;code&amp;gt;/opt/wildfly/&amp;lt;/code&amp;gt;;&lt;br /&gt;
* Windows — в &amp;lt;code&amp;gt;C:\wildfly\&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;C:\PayControl\&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Процесс обновления в рамках одной версии =&lt;br /&gt;
Обновление выполняется заменой файлов модулей в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]:&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Модуль !! Пример имени файла&lt;br /&gt;
|-&lt;br /&gt;
| PC Server || &amp;lt;code&amp;gt;PayControl-services-module-3.9.452.ear&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC Pusher || &amp;lt;code&amp;gt;pc-pusher-5.5.348.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC External || &amp;lt;code&amp;gt;PayControl-interaction-rest-3.9.452.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Порядок действий:&lt;br /&gt;
# Сохраните файлы модулей текущей версии — они понадобятся для отката.&lt;br /&gt;
# Замените файлы модулей в директории &#039;&#039;deployments&#039;&#039; на новые.&lt;br /&gt;
# Дождитесь развёртывания. В директории появятся файлы-маркеры:&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.undeployed&amp;lt;/code&amp;gt; — для убранных модулей; такие файлы рекомендуется удалить;&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.deployed&amp;lt;/code&amp;gt; — для успешно развёрнутых новых модулей.&lt;br /&gt;
# Если появились файлы &amp;lt;code&amp;gt;*.failed&amp;lt;/code&amp;gt; — [[#Запуск и остановка служб|перезапустите Wildfly]].&lt;br /&gt;
&lt;br /&gt;
= Регламентное обслуживание =&lt;br /&gt;
Администратору PayControl необходимо в плановом режиме:&lt;br /&gt;
* контролировать достаточность свободного места на серверах PayControl;&lt;br /&gt;
* контролировать достаточность дискового пространства, выделенного базам данных (БД PCS и БД PCIS);&lt;br /&gt;
* своевременно заменять сертификат HTTPS сервера PCIS External;&lt;br /&gt;
* своевременно заменять сертификаты HTTPS серверов PCS и PCIS Internal (при их наличии).&lt;br /&gt;
[[Категория:Руководства]]&lt;br /&gt;
[[Категория:Серверная часть]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=904</id>
		<title>Руководство администратора PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=904"/>
		<updated>2026-07-07T18:54:14Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Назначение документа =&lt;br /&gt;
Настоящее руководство предназначено для администраторов, выполняющих задачи по обслуживанию серверов PayControl: запуск и остановку служб, журналирование, установку лицензии, обновление и регламентные работы.&lt;br /&gt;
 &lt;br /&gt;
= О продукте =&lt;br /&gt;
PayControl — программный комплекс для подтверждения пользователем операций в системах дистанционного банковского обслуживания и электронного документооборота. По сравнению с SMS, одноразовыми паролями (OTP), скретч-картами и MAC-токенами PayControl обеспечивает более высокий уровень удобства и информационной безопасности.&lt;br /&gt;
&lt;br /&gt;
= Общее описание =&lt;br /&gt;
Сервер PayControl работает на базе сервера приложений [[Wildfly]] в среде Java 11 и состоит из трёх компонентов:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Компонент !! Назначение !! Расположение и требования&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PayControl Server (PCS)&#039;&#039;&#039; || Основной сервер. Взаимодействует с прикладной системой, хранит данные в БД PCS. Отправляет данные на PCIS Internal, получает данные с PCIS External. || Локальная сеть.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PCIS Internal&#039;&#039;&#039; (PayControl Interaction Server Internal) || Отправляет Push-уведомления о появлении неподтверждённой транзакции (без сведений о самой транзакции). || Как правило, DMZ-зона, с доступом в Интернет - требуется доступ к серверам Google и Apple. Может размещаться на одном сервере с PCS или PCIS External - в зависимости от требований ИБ и возможностей ИТ-инфраструктуры банка.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PCIS External&#039;&#039;&#039; (PayControl Interaction Server External) || Взаимодействует с мобильными приложениями: передаёт данные платежа, принимает результаты подтверждения транзакций. || DMZ-зона с доступом извне; внешний фиксированный IP-адрес. Для TLS - доменное имя и сертификат внешнего УЦ.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Запуск и остановка служб =&lt;br /&gt;
== Linux ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start wildfly.service     # запуск&lt;br /&gt;
systemctl stop wildfly.service      # остановка&lt;br /&gt;
systemctl restart wildfly.service   # перезапуск&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Windows ==&lt;br /&gt;
Через консоль управления службами (&#039;&#039;services.msc&#039;&#039;) либо из командной строки:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net start wildfly&lt;br /&gt;
net stop wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Журналирование =&lt;br /&gt;
== Расположение журналов ==&lt;br /&gt;
События работы сервера PayControl записываются в общий журнал [[Wildfly]]. По умолчанию фиксируются только ошибки PayControl.&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ОС !! Путь к журналу за текущий день&lt;br /&gt;
|-&lt;br /&gt;
| Linux || &amp;lt;code&amp;gt;/opt/wildfly/standalone/log/server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Windows || &amp;lt;code&amp;gt;C:\wildfly\standalone\log\server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Журналы за прошлые дни имеют суффикс с датой: &amp;lt;code&amp;gt;server.log.YYYY-MM-DD&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Включение вывода информационных данных работы PayControl ==&lt;br /&gt;
В некоторых случаях может потребоваться вывод отладочной информации PayControl. Порядок её включения описан ниже для разных компонентов сервера PayСоntrol.&lt;br /&gt;
=== Для PCS и PCIS Internal ===&lt;br /&gt;
==== Вывод отладочной информации ====&lt;br /&gt;
Для включения вывода отладочной информации необходимо:&lt;br /&gt;
# В БД PCS или БД PCIS соответственно для нужного сервера, добавить/изменить запись в таблице pc_sys_property, установив следующие значения:&lt;br /&gt;
#* setting_name=&#039;DEBUG_INFO&#039;&lt;br /&gt;
#* setting_value = &#039;1&#039;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Примеры SQL запросов добавления записи для разных СУБД:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! СУБД !! Запрос&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Oracle || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (PC_SETTING_SEQ.NEXTVAL, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| MS SQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (NEXT VALUE FOR PC_SETTING_SEQ, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Изменение записи =====&lt;br /&gt;
Пример SQL запроса для изменения записи (для всех перечисленных СУБД):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_sys_property set setting_value = &#039;1&#039; where setting_name=&#039;DEBUG_INFO&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Вывод содержимого SOAP-запросов и ответов ====&lt;br /&gt;
{{Предупреждение|Опция не работает в [[Wildfly]] версии 13.0.0-Final.}}&lt;br /&gt;
Для включения вывода содержимого SOAP-запросов и ответов службой wildfly необходимо:&lt;br /&gt;
# Добавить после блока &amp;lt;extensions&amp;gt; ... &amp;lt;/extensions&amp;gt; в файл&lt;br /&gt;
#* Linux: &amp;lt;code&amp;gt;/opt/wildfly/standalone/configuration/standalone.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
#* Windows: &amp;lt;code&amp;gt;C:\wildfly\standalone\configuration\standalone.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
#: следующий блок:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;system-properties&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;org.apache.cxf.logging.enabled&amp;quot; value=&amp;quot;pretty&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/system-properties&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
=== PCIS External (с версии 3.6) ===&lt;br /&gt;
Начиная с версии 3.6 PCIS External может журналировать запросы к &amp;lt;code&amp;gt;/jsonrequest_v2&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Для включения добавьте в опции Java-машины параметр &amp;lt;code&amp;gt;paycontrol.logRequests=yes&amp;lt;/code&amp;gt;:&lt;br /&gt;
 &lt;br /&gt;
* Linux — в файл &amp;lt;code&amp;gt;/opt/wildfly/bin/standalone.conf&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Windows — в файл &amp;lt;code&amp;gt;C:\wildfly\bin\standalone.conf.bat&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Затем перезапустите службу wildfly.&lt;br /&gt;
&lt;br /&gt;
= Отправка информации о событиях =&lt;br /&gt;
Адрес для отправки информации об устройстве и о событиях взаимодействия мобильного приложения (SDK) с сервером PayControl задаётся в БД PCS: таблица &amp;lt;code&amp;gt;pc_system&amp;lt;/code&amp;gt;, поле &amp;lt;code&amp;gt;events_post_url&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system set events_post_url = &#039;http://example.com/pc_events_reciever&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
После изменения перезапустите WildFly PCS.&lt;br /&gt;
 &lt;br /&gt;
{{Предупреждение|Для сбора информации о событиях при создании ключа должен быть установлен флаг сбора информации о событиях, а для передачи данных об устройстве — дополнительно флаг сбора информации об устройстве. Подробнее — в описании API сервера.}}&lt;br /&gt;
&lt;br /&gt;
= Установка лицензии =&lt;br /&gt;
Без лицензионного файла сервер работает в демонстрационном режиме: можно завести не более 20 активных пользователей PayControl. &lt;br /&gt;
&lt;br /&gt;
При включённой отладочной информации в журнал выводятся сообщения вида:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.utils.licenseManager.LicenseManager] (default task-2)    --- no license found in database&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- Error load License, cheking if free users count exceeded&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- ATTENTION! LICENSE NOT FOUND! You are using unlicensed demo-only version of the service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запросом к БД ==&lt;br /&gt;
Поместите содержимое файла лицензии в SQL-запрос к БД PCS, указав идентификатор системы:&lt;br /&gt;
* до версии 3.5 включительно:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* с версии 3.6:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system_params set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Добавлением файла лицензии ==&lt;br /&gt;
Скопируйте файл лицензии на сервер PCS:&lt;br /&gt;
* Linux — в &amp;lt;code&amp;gt;/opt/wildfly/&amp;lt;/code&amp;gt;;&lt;br /&gt;
* Windows — в &amp;lt;code&amp;gt;C:\wildfly\&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;C:\PayControl\&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Процесс обновления в рамках одной версии =&lt;br /&gt;
Обновление выполняется заменой файлов модулей в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]:&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Модуль !! Пример имени файла&lt;br /&gt;
|-&lt;br /&gt;
| PC Server || &amp;lt;code&amp;gt;PayControl-services-module-3.9.452.ear&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC Pusher || &amp;lt;code&amp;gt;pc-pusher-5.5.348.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC External || &amp;lt;code&amp;gt;PayControl-interaction-rest-3.9.452.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Порядок действий:&lt;br /&gt;
# Сохраните файлы модулей текущей версии — они понадобятся для отката.&lt;br /&gt;
# Замените файлы модулей в директории &#039;&#039;deployments&#039;&#039; на новые.&lt;br /&gt;
# Дождитесь развёртывания. В директории появятся файлы-маркеры:&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.undeployed&amp;lt;/code&amp;gt; — для убранных модулей; такие файлы рекомендуется удалить;&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.deployed&amp;lt;/code&amp;gt; — для успешно развёрнутых новых модулей.&lt;br /&gt;
# Если появились файлы &amp;lt;code&amp;gt;*.failed&amp;lt;/code&amp;gt; — [[#Запуск и остановка служб|перезапустите Wildfly]].&lt;br /&gt;
&lt;br /&gt;
= Регламентное обслуживание =&lt;br /&gt;
Администратору PayControl необходимо в плановом режиме:&lt;br /&gt;
* контролировать достаточность свободного места на серверах PayControl;&lt;br /&gt;
* контролировать достаточность дискового пространства, выделенного базам данных (БД PCS и БД PCIS);&lt;br /&gt;
* своевременно заменять сертификат HTTPS сервера PCIS External;&lt;br /&gt;
* своевременно заменять сертификаты HTTPS серверов PCS и PCIS Internal (при их наличии).&lt;br /&gt;
[[Категория:Руководства]]&lt;br /&gt;
[[Категория:Серверная часть]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=903</id>
		<title>Руководство администратора PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=903"/>
		<updated>2026-07-07T18:50:26Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Назначение документа =&lt;br /&gt;
Настоящее руководство предназначено для администраторов, выполняющих задачи по обслуживанию серверов PayControl: запуск и остановку служб, журналирование, установку лицензии, обновление и регламентные работы.&lt;br /&gt;
 &lt;br /&gt;
= О продукте =&lt;br /&gt;
PayControl — программный комплекс для подтверждения пользователем операций в системах дистанционного банковского обслуживания и электронного документооборота. По сравнению с SMS, одноразовыми паролями (OTP), скретч-картами и MAC-токенами PayControl обеспечивает более высокий уровень удобства и информационной безопасности.&lt;br /&gt;
&lt;br /&gt;
= Общее описание =&lt;br /&gt;
Сервер PayControl работает на базе сервера приложений [[Wildfly]] в среде Java 11 и состоит из трёх компонентов:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Компонент !! Назначение !! Расположение и требования&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PayControl Server (PCS)&#039;&#039;&#039; || Основной сервер. Взаимодействует с прикладной системой, хранит данные в БД PCS. Отправляет данные на PCIS Internal, получает данные с PCIS External. || Локальная сеть.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PCIS Internal&#039;&#039;&#039; (PayControl Interaction Server Internal) || Отправляет Push-уведомления о появлении неподтверждённой транзакции (без сведений о самой транзакции). || Как правило, DMZ-зона, с доступом в Интернет - требуется доступ к серверам Google и Apple. Может размещаться на одном сервере с PCS или PCIS External - в зависимости от требований ИБ и возможностей ИТ-инфраструктуры банка.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PCIS External&#039;&#039;&#039; (PayControl Interaction Server External) || Взаимодействует с мобильными приложениями: передаёт данные платежа, принимает результаты подтверждения транзакций. || DMZ-зона с доступом извне; внешний фиксированный IP-адрес. Для TLS - доменное имя и сертификат внешнего УЦ.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Запуск и остановка служб сервера PayControl =&lt;br /&gt;
== Linux ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start wildfly.service     # запуск&lt;br /&gt;
systemctl stop wildfly.service      # остановка&lt;br /&gt;
systemctl restart wildfly.service   # перезапуск&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Windows ==&lt;br /&gt;
Через консоль управления службами (&#039;&#039;services.msc&#039;&#039;) либо из командной строки:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net start wildfly&lt;br /&gt;
net stop wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Журналирование =&lt;br /&gt;
== Расположение журналов ==&lt;br /&gt;
События работы сервера PayControl записываются в общий журнал [[Wildfly]]. По умолчанию фиксируются только ошибки PayControl.&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ОС !! Путь к журналу за текущий день&lt;br /&gt;
|-&lt;br /&gt;
| Linux || &amp;lt;code&amp;gt;/opt/wildfly/standalone/log/server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Windows || &amp;lt;code&amp;gt;C:\wildfly\standalone\log\server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Журналы за прошлые дни имеют суффикс с датой: &amp;lt;code&amp;gt;server.log.YYYY-MM-DD&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Включение вывода информационных данных работы PayControl ==&lt;br /&gt;
В некоторых случаях может потребоваться вывод отладочной информации PayControl. Порядок её включения описан ниже для разных компонентов сервера PayСоntrol.&lt;br /&gt;
=== Для PCS и PCIS Internal ===&lt;br /&gt;
==== Вывод отладочной информации ====&lt;br /&gt;
Для включения вывода отладочной информации необходимо:&lt;br /&gt;
# В БД PCS или БД PCIS соответственно для нужного сервера, добавить/изменить запись в таблице pc_sys_property, установив следующие значения:&lt;br /&gt;
#* setting_name=&#039;DEBUG_INFO&#039;&lt;br /&gt;
#* setting_value = &#039;1&#039;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Примеры SQL запросов добавления записи для разных СУБД:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! СУБД !! Запрос&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Oracle || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (PC_SETTING_SEQ.NEXTVAL, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| MS SQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (NEXT VALUE FOR PC_SETTING_SEQ, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Изменение записи =====&lt;br /&gt;
Пример SQL запроса для изменения записи (для всех перечисленных СУБД):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_sys_property set setting_value = &#039;1&#039; where setting_name=&#039;DEBUG_INFO&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Вывод содержимого SOAP-запросов и ответов ====&lt;br /&gt;
{{Предупреждение|Опция не работает в [[Wildfly]] версии 13.0.0-Final.}}&lt;br /&gt;
Для включения вывода содержимого SOAP-запросов и ответов службой wildfly необходимо:&lt;br /&gt;
# Добавить после блока &amp;lt;extensions&amp;gt; ... &amp;lt;/extensions&amp;gt; в файл&lt;br /&gt;
#* Linux: &amp;lt;code&amp;gt;/opt/wildfly/standalone/configuration/standalone.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
#* Windows: &amp;lt;code&amp;gt;C:\wildfly\standalone\configuration\standalone.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
#: следующий блок:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;system-properties&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;org.apache.cxf.logging.enabled&amp;quot; value=&amp;quot;pretty&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/system-properties&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
=== PCIS External (с версии 3.6) ===&lt;br /&gt;
Начиная с версии 3.6 PCIS External может журналировать запросы к &amp;lt;code&amp;gt;/jsonrequest_v2&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Для включения добавьте в опции Java-машины параметр &amp;lt;code&amp;gt;paycontrol.logRequests=yes&amp;lt;/code&amp;gt;:&lt;br /&gt;
 &lt;br /&gt;
* Linux — в файл &amp;lt;code&amp;gt;/opt/wildfly/bin/standalone.conf&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Windows — в файл &amp;lt;code&amp;gt;C:\wildfly\bin\standalone.conf.bat&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Затем перезапустите службу wildfly.&lt;br /&gt;
&lt;br /&gt;
= Отправка информации о событиях =&lt;br /&gt;
Адрес для отправки информации об устройстве и о событиях взаимодействия мобильного приложения (SDK) с сервером PayControl задаётся в БД PCS: таблица &amp;lt;code&amp;gt;pc_system&amp;lt;/code&amp;gt;, поле &amp;lt;code&amp;gt;events_post_url&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system set events_post_url = &#039;http://example.com/pc_events_reciever&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
После изменения перезапустите WildFly PCS.&lt;br /&gt;
 &lt;br /&gt;
{{Предупреждение|Для сбора информации о событиях при создании ключа должен быть установлен флаг сбора информации о событиях, а для передачи данных об устройстве — дополнительно флаг сбора информации об устройстве. Подробнее — в описании API сервера.}}&lt;br /&gt;
&lt;br /&gt;
= Установка лицензии =&lt;br /&gt;
Без лицензионного файла сервер работает в демонстрационном режиме: можно завести не более 20 активных пользователей PayControl. &lt;br /&gt;
&lt;br /&gt;
При включённой отладочной информации в журнал выводятся сообщения вида:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.utils.licenseManager.LicenseManager] (default task-2)    --- no license found in database&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- Error load License, cheking if free users count exceeded&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- ATTENTION! LICENSE NOT FOUND! You are using unlicensed demo-only version of the service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запросом к БД ==&lt;br /&gt;
Поместите содержимое файла лицензии в SQL-запрос к БД PCS, указав идентификатор системы:&lt;br /&gt;
* до версии 3.5 включительно:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* с версии 3.6:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system_params set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Добавлением файла лицензии ==&lt;br /&gt;
Скопируйте файл лицензии на сервер PCS:&lt;br /&gt;
* Linux — в &amp;lt;code&amp;gt;/opt/wildfly/&amp;lt;/code&amp;gt;;&lt;br /&gt;
* Windows — в &amp;lt;code&amp;gt;C:\wildfly\&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;C:\PayControl\&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Процесс обновления в рамках одной версии =&lt;br /&gt;
Обновление выполняется заменой файлов модулей в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]:&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Модуль !! Пример имени файла&lt;br /&gt;
|-&lt;br /&gt;
| PC Server || &amp;lt;code&amp;gt;PayControl-services-module-3.9.452.ear&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC Pusher || &amp;lt;code&amp;gt;pc-pusher-5.5.348.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC External || &amp;lt;code&amp;gt;PayControl-interaction-rest-3.9.452.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Порядок действий:&lt;br /&gt;
# Сохраните файлы модулей текущей версии — они понадобятся для отката.&lt;br /&gt;
# Замените файлы модулей в директории &#039;&#039;deployments&#039;&#039; на новые.&lt;br /&gt;
# Дождитесь развёртывания. В директории появятся файлы-маркеры:&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.undeployed&amp;lt;/code&amp;gt; — для убранных модулей; такие файлы рекомендуется удалить;&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.deployed&amp;lt;/code&amp;gt; — для успешно развёрнутых новых модулей.&lt;br /&gt;
# Если появились файлы &amp;lt;code&amp;gt;*.failed&amp;lt;/code&amp;gt; — [[#Запуск и остановка служб|перезапустите Wildfly]].&lt;br /&gt;
&lt;br /&gt;
= Регламентное обслуживание =&lt;br /&gt;
Администратору PayControl необходимо в плановом режиме:&lt;br /&gt;
* контролировать достаточность свободного места на серверах PayControl;&lt;br /&gt;
* контролировать достаточность дискового пространства, выделенного базам данных (БД PCS и БД PCIS);&lt;br /&gt;
* своевременно заменять сертификат HTTPS сервера PCIS External;&lt;br /&gt;
* своевременно заменять сертификаты HTTPS серверов PCS и PCIS Internal (при их наличии).&lt;br /&gt;
[[Категория:Руководства]]&lt;br /&gt;
[[Категория:Серверная часть]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=902</id>
		<title>Руководство администратора PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=902"/>
		<updated>2026-07-07T18:48:07Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Отправка информации о событиях */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Введение=&lt;br /&gt;
PayControl – программный комплекс, предназначенный для подтверждения пользователем операций в системах дистанционного банковского обслуживания и/или электронного документооборота.&lt;br /&gt;
&lt;br /&gt;
PayControl призван, в первую очередь, повысить уровень удобства подтверждения и информационной безопасности по сравнению с такими способами подтверждения как SMS, одноразовые пароли (One-Time Password), скретч-карты, MAC-токены и пр.&lt;br /&gt;
&lt;br /&gt;
При помощи PayControl могут подтверждаться волеизъявления на совершение банковских транзакций, аутентификация, создание и исполнение документов, факты получения и/или ознакомления с определённой информацией.&lt;br /&gt;
=Назначение=&lt;br /&gt;
Настоящий документ предназначен работникам организаций, выполняющим прикладные задачи по обслуживанию серверов PayControl.&lt;br /&gt;
=Общее описание=&lt;br /&gt;
Сервер PayControl работает на базе сервера приложений [[Wildfly]] в среде Java 11 и состоит из трёх компонентов:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Компонент !! Назначение !! Расположение и требования&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PayControl Server (PCS)&#039;&#039;&#039; || Основной сервер. Взаимодействует с прикладной системой, хранит данные в БД PCS. Отправляет данные на PCIS Internal, получает данные с PCIS External. || Локальная сеть.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PCIS Internal&#039;&#039;&#039; (PayControl Interaction Server Internal) || Отправляет Push-уведомления о появлении неподтверждённой транзакции (без сведений о самой транзакции). || Как правило, DMZ-зона, с доступом в Интернет - требуется доступ к серверам Google и Apple. Может размещаться на одном сервере с PCS или PCIS External - в зависимости от требований ИБ и возможностей ИТ-инфраструктуры банка.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PCIS External&#039;&#039;&#039; (PayControl Interaction Server External) || Взаимодействует с мобильными приложениями: передаёт данные платежа, принимает результаты подтверждения транзакций. || DMZ-зона с доступом извне; внешний фиксированный IP-адрес. Для TLS - доменное имя и сертификат внешнего УЦ.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Запуск и остановка служб сервера PayControl =&lt;br /&gt;
== Linux ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start wildfly.service     # запуск&lt;br /&gt;
systemctl stop wildfly.service      # остановка&lt;br /&gt;
systemctl restart wildfly.service   # перезапуск&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Windows ==&lt;br /&gt;
Через консоль управления службами (&#039;&#039;services.msc&#039;&#039;) либо из командной строки:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net start wildfly&lt;br /&gt;
net stop wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Журналирование=&lt;br /&gt;
== Расположение журналов ==&lt;br /&gt;
События работы сервера PayControl записываются в общий журнал [[Wildfly]]. По умолчанию фиксируются только ошибки PayControl.&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ОС !! Путь к журналу за текущий день&lt;br /&gt;
|-&lt;br /&gt;
| Linux || &amp;lt;code&amp;gt;/opt/wildfly/standalone/log/server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Windows || &amp;lt;code&amp;gt;C:\wildfly\standalone\log\server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Журналы за прошлые дни имеют суффикс с датой: &amp;lt;code&amp;gt;server.log.YYYY-MM-DD&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Включение вывода информационных данных работы PayControl==&lt;br /&gt;
В некоторых случаях может потребоваться вывод отладочной информации PayControl. Порядок её включения описан ниже для разных компонентов сервера PayСоntrol.&lt;br /&gt;
===Для PCS и PCIS Internal===&lt;br /&gt;
====Вывод отладочной информации====&lt;br /&gt;
Для включения вывода отладочной информации необходимо:&lt;br /&gt;
# В БД PCS или БД PCIS соответственно для нужного сервера, добавить/изменить запись в таблице pc_sys_property, установив следующие значения:&lt;br /&gt;
#* setting_name=&#039;DEBUG_INFO&#039;&lt;br /&gt;
#* setting_value = &#039;1&#039;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Примеры SQL запросов добавления записи для разных СУБД:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! СУБД !! Запрос&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Oracle || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (PC_SETTING_SEQ.NEXTVAL, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| MS SQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (NEXT VALUE FOR PC_SETTING_SEQ, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Изменение записи=====&lt;br /&gt;
Пример SQL запроса для изменения записи (для всех перечисленных СУБД):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_sys_property set setting_value = &#039;1&#039; where setting_name=&#039;DEBUG_INFO&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Вывод содержимого SOAP-запросов и ответов====&lt;br /&gt;
{{Предупреждение|Опция не работает в [[Wildfly]] версии 13.0.0-Final.}}&lt;br /&gt;
Для включения вывода содержимого SOAP-запросов и ответов службой wildfly необходимо:&lt;br /&gt;
# Добавить после блока &amp;lt;extensions&amp;gt; ... &amp;lt;/extensions&amp;gt; в файл&lt;br /&gt;
#* Linux: &amp;lt;code&amp;gt;/opt/wildfly/standalone/configuration/standalone.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
#* Windows: &amp;lt;code&amp;gt;C:\wildfly\standalone\configuration\standalone.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
#: следующий блок:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;system-properties&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;org.apache.cxf.logging.enabled&amp;quot; value=&amp;quot;pretty&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/system-properties&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
===PCIS External (с версии 3.6)===&lt;br /&gt;
Начиная с версии 3.6 PCIS External может журналировать запросы к &amp;lt;code&amp;gt;/jsonrequest_v2&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Для включения добавьте в опции Java-машины параметр &amp;lt;code&amp;gt;paycontrol.logRequests=yes&amp;lt;/code&amp;gt;:&lt;br /&gt;
 &lt;br /&gt;
* Linux — в файл &amp;lt;code&amp;gt;/opt/wildfly/bin/standalone.conf&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Windows — в файл &amp;lt;code&amp;gt;C:\wildfly\bin\standalone.conf.bat&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Затем перезапустите службу wildfly.&lt;br /&gt;
&lt;br /&gt;
=Отправка информации о событиях=&lt;br /&gt;
Адрес для отправки информации об устройстве и о событиях взаимодействия мобильного приложения (SDK) с сервером PayControl задаётся в БД PCS: таблица &amp;lt;code&amp;gt;pc_system&amp;lt;/code&amp;gt;, поле &amp;lt;code&amp;gt;events_post_url&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system set events_post_url = &#039;http://example.com/pc_events_reciever&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
После изменения перезапустите WildFly PCS.&lt;br /&gt;
 &lt;br /&gt;
{{Предупреждение|Для сбора информации о событиях при создании ключа должен быть установлен флаг сбора информации о событиях, а для передачи данных об устройстве — дополнительно флаг сбора информации об устройстве. Подробнее — в описании API сервера.}}&lt;br /&gt;
&lt;br /&gt;
=Установка лицензии=&lt;br /&gt;
Без лицензионного файла сервер работает в демонстрационном режиме: можно завести не более 20 активных пользователей PayControl. &lt;br /&gt;
&lt;br /&gt;
При включённой отладочной информации в журнал выводятся сообщения вида:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.utils.licenseManager.LicenseManager] (default task-2)    --- no license found in database&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- Error load License, cheking if free users count exceeded&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- ATTENTION! LICENSE NOT FOUND! You are using unlicensed demo-only version of the service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Запросом к БД==&lt;br /&gt;
Поместите содержимое файла лицензии в SQL-запрос к БД PCS, указав идентификатор системы:&lt;br /&gt;
* до версии 3.5 включительно:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* с версии 3.6:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system_params set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Добавлением файла лицензии==&lt;br /&gt;
Скопируйте файл лицензии на сервер PCS:&lt;br /&gt;
* Linux — в &amp;lt;code&amp;gt;/opt/wildfly/&amp;lt;/code&amp;gt;;&lt;br /&gt;
* Windows — в &amp;lt;code&amp;gt;C:\wildfly\&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;C:\PayControl\&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Процесс обновления в рамках одной версии =&lt;br /&gt;
Обновление выполняется заменой файлов модулей в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]:&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Модуль !! Пример имени файла&lt;br /&gt;
|-&lt;br /&gt;
| PC Server || &amp;lt;code&amp;gt;PayControl-services-module-3.9.452.ear&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC Pusher || &amp;lt;code&amp;gt;pc-pusher-5.5.348.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC External || &amp;lt;code&amp;gt;PayControl-interaction-rest-3.9.452.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Порядок действий:&lt;br /&gt;
# Сохраните файлы модулей текущей версии — они понадобятся для отката.&lt;br /&gt;
# Замените файлы модулей в директории &#039;&#039;deployments&#039;&#039; на новые.&lt;br /&gt;
# Дождитесь развёртывания. В директории появятся файлы-маркеры:&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.undeployed&amp;lt;/code&amp;gt; — для убранных модулей; такие файлы рекомендуется удалить;&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.deployed&amp;lt;/code&amp;gt; — для успешно развёрнутых новых модулей.&lt;br /&gt;
# Если появились файлы &amp;lt;code&amp;gt;*.failed&amp;lt;/code&amp;gt; — [[#Запуск и остановка служб|перезапустите Wildfly]].&lt;br /&gt;
&lt;br /&gt;
= Регламентное обслуживание =&lt;br /&gt;
Администратору PayControl необходимо в плановом режиме:&lt;br /&gt;
* контролировать достаточность свободного места на серверах PayControl;&lt;br /&gt;
* контролировать достаточность дискового пространства, выделенного базам данных (БД PCS и БД PCIS);&lt;br /&gt;
* своевременно заменять сертификат HTTPS сервера PCIS External;&lt;br /&gt;
* своевременно заменять сертификаты HTTPS серверов PCS и PCIS Internal (при их наличии).&lt;br /&gt;
[[Категория:Руководства]]&lt;br /&gt;
[[Категория:Серверная часть]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=901</id>
		<title>Руководство администратора PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=901"/>
		<updated>2026-07-07T18:44:18Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Запуск и остановка служб сервера PayControl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Введение=&lt;br /&gt;
PayControl – программный комплекс, предназначенный для подтверждения пользователем операций в системах дистанционного банковского обслуживания и/или электронного документооборота.&lt;br /&gt;
&lt;br /&gt;
PayControl призван, в первую очередь, повысить уровень удобства подтверждения и информационной безопасности по сравнению с такими способами подтверждения как SMS, одноразовые пароли (One-Time Password), скретч-карты, MAC-токены и пр.&lt;br /&gt;
&lt;br /&gt;
При помощи PayControl могут подтверждаться волеизъявления на совершение банковских транзакций, аутентификация, создание и исполнение документов, факты получения и/или ознакомления с определённой информацией.&lt;br /&gt;
=Назначение=&lt;br /&gt;
Настоящий документ предназначен работникам организаций, выполняющим прикладные задачи по обслуживанию серверов PayControl.&lt;br /&gt;
=Общее описание=&lt;br /&gt;
Сервер PayControl работает на базе сервера приложений [[Wildfly]] в среде Java 11 и состоит из трёх компонентов:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Компонент !! Назначение !! Расположение и требования&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PayControl Server (PCS)&#039;&#039;&#039; || Основной сервер. Взаимодействует с прикладной системой, хранит данные в БД PCS. Отправляет данные на PCIS Internal, получает данные с PCIS External. || Локальная сеть.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PCIS Internal&#039;&#039;&#039; (PayControl Interaction Server Internal) || Отправляет Push-уведомления о появлении неподтверждённой транзакции (без сведений о самой транзакции). || Как правило, DMZ-зона, с доступом в Интернет - требуется доступ к серверам Google и Apple. Может размещаться на одном сервере с PCS или PCIS External - в зависимости от требований ИБ и возможностей ИТ-инфраструктуры банка.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PCIS External&#039;&#039;&#039; (PayControl Interaction Server External) || Взаимодействует с мобильными приложениями: передаёт данные платежа, принимает результаты подтверждения транзакций. || DMZ-зона с доступом извне; внешний фиксированный IP-адрес. Для TLS - доменное имя и сертификат внешнего УЦ.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Запуск и остановка служб сервера PayControl =&lt;br /&gt;
== Linux ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start wildfly.service     # запуск&lt;br /&gt;
systemctl stop wildfly.service      # остановка&lt;br /&gt;
systemctl restart wildfly.service   # перезапуск&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Windows ==&lt;br /&gt;
Через консоль управления службами (&#039;&#039;services.msc&#039;&#039;) либо из командной строки:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net start wildfly&lt;br /&gt;
net stop wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Журналирование=&lt;br /&gt;
== Расположение журналов ==&lt;br /&gt;
События работы сервера PayControl записываются в общий журнал [[Wildfly]]. По умолчанию фиксируются только ошибки PayControl.&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ОС !! Путь к журналу за текущий день&lt;br /&gt;
|-&lt;br /&gt;
| Linux || &amp;lt;code&amp;gt;/opt/wildfly/standalone/log/server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Windows || &amp;lt;code&amp;gt;C:\wildfly\standalone\log\server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Журналы за прошлые дни имеют суффикс с датой: &amp;lt;code&amp;gt;server.log.YYYY-MM-DD&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Включение вывода информационных данных работы PayControl==&lt;br /&gt;
В некоторых случаях может потребоваться вывод отладочной информации PayControl. Порядок её включения описан ниже для разных компонентов сервера PayСоntrol.&lt;br /&gt;
===Для PCS и PCIS Internal===&lt;br /&gt;
====Вывод отладочной информации====&lt;br /&gt;
Для включения вывода отладочной информации необходимо:&lt;br /&gt;
# В БД PCS или БД PCIS соответственно для нужного сервера, добавить/изменить запись в таблице pc_sys_property, установив следующие значения:&lt;br /&gt;
#* setting_name=&#039;DEBUG_INFO&#039;&lt;br /&gt;
#* setting_value = &#039;1&#039;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Примеры SQL запросов добавления записи для разных СУБД:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! СУБД !! Запрос&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Oracle || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (PC_SETTING_SEQ.NEXTVAL, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| MS SQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (NEXT VALUE FOR PC_SETTING_SEQ, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Изменение записи=====&lt;br /&gt;
Пример SQL запроса для изменения записи (для всех перечисленных СУБД):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_sys_property set setting_value = &#039;1&#039; where setting_name=&#039;DEBUG_INFO&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Вывод содержимого SOAP-запросов и ответов====&lt;br /&gt;
{{Предупреждение|Опция не работает в [[Wildfly]] версии 13.0.0-Final.}}&lt;br /&gt;
Для включения вывода содержимого SOAP-запросов и ответов службой wildfly необходимо:&lt;br /&gt;
# Добавить после блока &amp;lt;extensions&amp;gt; ... &amp;lt;/extensions&amp;gt; в файл&lt;br /&gt;
#* Linux: &amp;lt;code&amp;gt;/opt/wildfly/standalone/configuration/standalone.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
#* Windows: &amp;lt;code&amp;gt;C:\wildfly\standalone\configuration\standalone.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
#: следующий блок:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;system-properties&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;org.apache.cxf.logging.enabled&amp;quot; value=&amp;quot;pretty&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/system-properties&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
===PCIS External (с версии 3.6)===&lt;br /&gt;
Начиная с версии 3.6 PCIS External может журналировать запросы к &amp;lt;code&amp;gt;/jsonrequest_v2&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Для включения добавьте в опции Java-машины параметр &amp;lt;code&amp;gt;paycontrol.logRequests=yes&amp;lt;/code&amp;gt;:&lt;br /&gt;
 &lt;br /&gt;
* Linux — в файл &amp;lt;code&amp;gt;/opt/wildfly/bin/standalone.conf&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Windows — в файл &amp;lt;code&amp;gt;C:\wildfly\bin\standalone.conf.bat&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Затем перезапустите службу wildfly.&lt;br /&gt;
&lt;br /&gt;
=Отправка информации о событиях=&lt;br /&gt;
Адрес для отправки информации об устройстве и событиях взаимодействия мобильного приложения или SDK PayControl с сервером PayControl устанавливается в БД PCS, таблица pc_system, поле events_post_url.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system set events_post_url=&#039;http://example.com/pc_events_reciever&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
После этого нужно перезапустить WildFly PCS для применения изменений.&lt;br /&gt;
&lt;br /&gt;
{{Предупреждение|Обязательным требованием для сбора информации о событиях является установка флага сбора информации о событиях при создании ключа, а для передачи данных об устройстве — ещё и флага сбора информации об устройстве. Подробнее — в описании API сервера.}}&lt;br /&gt;
=Установка лицензии=&lt;br /&gt;
Без лицензионного файла сервер работает в демонстрационном режиме: можно завести не более 20 активных пользователей PayControl. &lt;br /&gt;
&lt;br /&gt;
При включённой отладочной информации в журнал выводятся сообщения вида:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.utils.licenseManager.LicenseManager] (default task-2)    --- no license found in database&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- Error load License, cheking if free users count exceeded&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- ATTENTION! LICENSE NOT FOUND! You are using unlicensed demo-only version of the service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Запросом к БД==&lt;br /&gt;
Поместите содержимое файла лицензии в SQL-запрос к БД PCS, указав идентификатор системы:&lt;br /&gt;
* до версии 3.5 включительно:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* с версии 3.6:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system_params set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Добавлением файла лицензии==&lt;br /&gt;
Скопируйте файл лицензии на сервер PCS:&lt;br /&gt;
* Linux — в &amp;lt;code&amp;gt;/opt/wildfly/&amp;lt;/code&amp;gt;;&lt;br /&gt;
* Windows — в &amp;lt;code&amp;gt;C:\wildfly\&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;C:\PayControl\&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Процесс обновления в рамках одной версии =&lt;br /&gt;
Обновление выполняется заменой файлов модулей в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]:&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Модуль !! Пример имени файла&lt;br /&gt;
|-&lt;br /&gt;
| PC Server || &amp;lt;code&amp;gt;PayControl-services-module-3.9.452.ear&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC Pusher || &amp;lt;code&amp;gt;pc-pusher-5.5.348.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC External || &amp;lt;code&amp;gt;PayControl-interaction-rest-3.9.452.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Порядок действий:&lt;br /&gt;
# Сохраните файлы модулей текущей версии — они понадобятся для отката.&lt;br /&gt;
# Замените файлы модулей в директории &#039;&#039;deployments&#039;&#039; на новые.&lt;br /&gt;
# Дождитесь развёртывания. В директории появятся файлы-маркеры:&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.undeployed&amp;lt;/code&amp;gt; — для убранных модулей; такие файлы рекомендуется удалить;&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.deployed&amp;lt;/code&amp;gt; — для успешно развёрнутых новых модулей.&lt;br /&gt;
# Если появились файлы &amp;lt;code&amp;gt;*.failed&amp;lt;/code&amp;gt; — [[#Запуск и остановка служб|перезапустите Wildfly]].&lt;br /&gt;
&lt;br /&gt;
= Регламентное обслуживание =&lt;br /&gt;
Администратору PayControl необходимо в плановом режиме:&lt;br /&gt;
* контролировать достаточность свободного места на серверах PayControl;&lt;br /&gt;
* контролировать достаточность дискового пространства, выделенного базам данных (БД PCS и БД PCIS);&lt;br /&gt;
* своевременно заменять сертификат HTTPS сервера PCIS External;&lt;br /&gt;
* своевременно заменять сертификаты HTTPS серверов PCS и PCIS Internal (при их наличии).&lt;br /&gt;
[[Категория:Руководства]]&lt;br /&gt;
[[Категория:Серверная часть]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=900</id>
		<title>Руководство администратора PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=900"/>
		<updated>2026-07-07T18:42:34Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Общее описание */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Введение=&lt;br /&gt;
PayControl – программный комплекс, предназначенный для подтверждения пользователем операций в системах дистанционного банковского обслуживания и/или электронного документооборота.&lt;br /&gt;
&lt;br /&gt;
PayControl призван, в первую очередь, повысить уровень удобства подтверждения и информационной безопасности по сравнению с такими способами подтверждения как SMS, одноразовые пароли (One-Time Password), скретч-карты, MAC-токены и пр.&lt;br /&gt;
&lt;br /&gt;
При помощи PayControl могут подтверждаться волеизъявления на совершение банковских транзакций, аутентификация, создание и исполнение документов, факты получения и/или ознакомления с определённой информацией.&lt;br /&gt;
=Назначение=&lt;br /&gt;
Настоящий документ предназначен работникам организаций, выполняющим прикладные задачи по обслуживанию серверов PayControl.&lt;br /&gt;
=Общее описание=&lt;br /&gt;
Сервер PayControl работает на базе сервера приложений [[Wildfly]] в среде Java 11 и состоит из трёх компонентов:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Компонент !! Назначение !! Расположение и требования&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PayControl Server (PCS)&#039;&#039;&#039; || Основной сервер. Взаимодействует с прикладной системой, хранит данные в БД PCS. Отправляет данные на PCIS Internal, получает данные с PCIS External. || Локальная сеть.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PCIS Internal&#039;&#039;&#039; (PayControl Interaction Server Internal) || Отправляет Push-уведомления о появлении неподтверждённой транзакции (без сведений о самой транзакции). || Как правило, DMZ-зона, с доступом в Интернет - требуется доступ к серверам Google и Apple. Может размещаться на одном сервере с PCS или PCIS External - в зависимости от требований ИБ и возможностей ИТ-инфраструктуры банка.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;PCIS External&#039;&#039;&#039; (PayControl Interaction Server External) || Взаимодействует с мобильными приложениями: передаёт данные платежа, принимает результаты подтверждения транзакций. || DMZ-зона с доступом извне; внешний фиксированный IP-адрес. Для TLS - доменное имя и сертификат внешнего УЦ.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Запуск и остановка служб сервера PayControl=&lt;br /&gt;
==Linux==&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl stop wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Перезапуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Windows==&lt;br /&gt;
===Из графического интерфейса===&lt;br /&gt;
Запуск, остановка и перезапуск службы осуществляется из консоли управления службами сервером (консоль services.msc).&lt;br /&gt;
===С помощью командной строки===&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net start wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net stop wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=Журналирование=&lt;br /&gt;
== Расположение журналов ==&lt;br /&gt;
События работы сервера PayControl записываются в общий журнал [[Wildfly]]. По умолчанию фиксируются только ошибки PayControl.&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ОС !! Путь к журналу за текущий день&lt;br /&gt;
|-&lt;br /&gt;
| Linux || &amp;lt;code&amp;gt;/opt/wildfly/standalone/log/server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Windows || &amp;lt;code&amp;gt;C:\wildfly\standalone\log\server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Журналы за прошлые дни имеют суффикс с датой: &amp;lt;code&amp;gt;server.log.YYYY-MM-DD&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Включение вывода информационных данных работы PayControl==&lt;br /&gt;
В некоторых случаях может потребоваться вывод отладочной информации PayControl. Порядок её включения описан ниже для разных компонентов сервера PayСоntrol.&lt;br /&gt;
===Для PCS и PCIS Internal===&lt;br /&gt;
====Вывод отладочной информации====&lt;br /&gt;
Для включения вывода отладочной информации необходимо:&lt;br /&gt;
# В БД PCS или БД PCIS соответственно для нужного сервера, добавить/изменить запись в таблице pc_sys_property, установив следующие значения:&lt;br /&gt;
#* setting_name=&#039;DEBUG_INFO&#039;&lt;br /&gt;
#* setting_value = &#039;1&#039;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Примеры SQL запросов добавления записи для разных СУБД:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! СУБД !! Запрос&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Oracle || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (PC_SETTING_SEQ.NEXTVAL, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| MS SQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (NEXT VALUE FOR PC_SETTING_SEQ, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Изменение записи=====&lt;br /&gt;
Пример SQL запроса для изменения записи (для всех перечисленных СУБД):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_sys_property set setting_value = &#039;1&#039; where setting_name=&#039;DEBUG_INFO&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Вывод содержимого SOAP-запросов и ответов====&lt;br /&gt;
{{Предупреждение|Опция не работает в [[Wildfly]] версии 13.0.0-Final.}}&lt;br /&gt;
Для включения вывода содержимого SOAP-запросов и ответов службой wildfly необходимо:&lt;br /&gt;
# Добавить после блока &amp;lt;extensions&amp;gt; ... &amp;lt;/extensions&amp;gt; в файл&lt;br /&gt;
#* Linux: &amp;lt;code&amp;gt;/opt/wildfly/standalone/configuration/standalone.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
#* Windows: &amp;lt;code&amp;gt;C:\wildfly\standalone\configuration\standalone.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
#: следующий блок:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;system-properties&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;org.apache.cxf.logging.enabled&amp;quot; value=&amp;quot;pretty&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/system-properties&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
===PCIS External (с версии 3.6)===&lt;br /&gt;
Начиная с версии 3.6 PCIS External может журналировать запросы к &amp;lt;code&amp;gt;/jsonrequest_v2&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Для включения добавьте в опции Java-машины параметр &amp;lt;code&amp;gt;paycontrol.logRequests=yes&amp;lt;/code&amp;gt;:&lt;br /&gt;
 &lt;br /&gt;
* Linux — в файл &amp;lt;code&amp;gt;/opt/wildfly/bin/standalone.conf&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Windows — в файл &amp;lt;code&amp;gt;C:\wildfly\bin\standalone.conf.bat&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Затем перезапустите службу wildfly.&lt;br /&gt;
&lt;br /&gt;
=Отправка информации о событиях=&lt;br /&gt;
Адрес для отправки информации об устройстве и событиях взаимодействия мобильного приложения или SDK PayControl с сервером PayControl устанавливается в БД PCS, таблица pc_system, поле events_post_url.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system set events_post_url=&#039;http://example.com/pc_events_reciever&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
После этого нужно перезапустить WildFly PCS для применения изменений.&lt;br /&gt;
&lt;br /&gt;
{{Предупреждение|Обязательным требованием для сбора информации о событиях является установка флага сбора информации о событиях при создании ключа, а для передачи данных об устройстве — ещё и флага сбора информации об устройстве. Подробнее — в описании API сервера.}}&lt;br /&gt;
=Установка лицензии=&lt;br /&gt;
Без лицензионного файла сервер работает в демонстрационном режиме: можно завести не более 20 активных пользователей PayControl. &lt;br /&gt;
&lt;br /&gt;
При включённой отладочной информации в журнал выводятся сообщения вида:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.utils.licenseManager.LicenseManager] (default task-2)    --- no license found in database&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- Error load License, cheking if free users count exceeded&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- ATTENTION! LICENSE NOT FOUND! You are using unlicensed demo-only version of the service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Запросом к БД==&lt;br /&gt;
Поместите содержимое файла лицензии в SQL-запрос к БД PCS, указав идентификатор системы:&lt;br /&gt;
* до версии 3.5 включительно:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* с версии 3.6:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system_params set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Добавлением файла лицензии==&lt;br /&gt;
Скопируйте файл лицензии на сервер PCS:&lt;br /&gt;
* Linux — в &amp;lt;code&amp;gt;/opt/wildfly/&amp;lt;/code&amp;gt;;&lt;br /&gt;
* Windows — в &amp;lt;code&amp;gt;C:\wildfly\&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;C:\PayControl\&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Процесс обновления в рамках одной версии =&lt;br /&gt;
Обновление выполняется заменой файлов модулей в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]:&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Модуль !! Пример имени файла&lt;br /&gt;
|-&lt;br /&gt;
| PC Server || &amp;lt;code&amp;gt;PayControl-services-module-3.9.452.ear&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC Pusher || &amp;lt;code&amp;gt;pc-pusher-5.5.348.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC External || &amp;lt;code&amp;gt;PayControl-interaction-rest-3.9.452.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Порядок действий:&lt;br /&gt;
# Сохраните файлы модулей текущей версии — они понадобятся для отката.&lt;br /&gt;
# Замените файлы модулей в директории &#039;&#039;deployments&#039;&#039; на новые.&lt;br /&gt;
# Дождитесь развёртывания. В директории появятся файлы-маркеры:&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.undeployed&amp;lt;/code&amp;gt; — для убранных модулей; такие файлы рекомендуется удалить;&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.deployed&amp;lt;/code&amp;gt; — для успешно развёрнутых новых модулей.&lt;br /&gt;
# Если появились файлы &amp;lt;code&amp;gt;*.failed&amp;lt;/code&amp;gt; — [[#Запуск и остановка служб|перезапустите Wildfly]].&lt;br /&gt;
&lt;br /&gt;
= Регламентное обслуживание =&lt;br /&gt;
Администратору PayControl необходимо в плановом режиме:&lt;br /&gt;
* контролировать достаточность свободного места на серверах PayControl;&lt;br /&gt;
* контролировать достаточность дискового пространства, выделенного базам данных (БД PCS и БД PCIS);&lt;br /&gt;
* своевременно заменять сертификат HTTPS сервера PCIS External;&lt;br /&gt;
* своевременно заменять сертификаты HTTPS серверов PCS и PCIS Internal (при их наличии).&lt;br /&gt;
[[Категория:Руководства]]&lt;br /&gt;
[[Категория:Серверная часть]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=899</id>
		<title>Руководство администратора PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=899"/>
		<updated>2026-07-07T18:35:47Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Общее описание */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Введение=&lt;br /&gt;
PayControl – программный комплекс, предназначенный для подтверждения пользователем операций в системах дистанционного банковского обслуживания и/или электронного документооборота.&lt;br /&gt;
&lt;br /&gt;
PayControl призван, в первую очередь, повысить уровень удобства подтверждения и информационной безопасности по сравнению с такими способами подтверждения как SMS, одноразовые пароли (One-Time Password), скретч-карты, MAC-токены и пр.&lt;br /&gt;
&lt;br /&gt;
При помощи PayControl могут подтверждаться волеизъявления на совершение банковских транзакций, аутентификация, создание и исполнение документов, факты получения и/или ознакомления с определённой информацией.&lt;br /&gt;
=Назначение=&lt;br /&gt;
Настоящий документ предназначен работникам организаций, выполняющим прикладные задачи по обслуживанию серверов PayControl.&lt;br /&gt;
=Общее описание=&lt;br /&gt;
Сервер PayControl функционирует на базе сервера приложений [[Wildfly]] выполняющегося в среде Java 8 и состоит из следующих частей:&lt;br /&gt;
* PayControl Server (PCS) – основной сервер PayControl. Располагается внутри локальной сети. Взаимодействует с прикладной системой. Хранит данные в БД PCS. Отправляет данные на PCIS Internal, получает данные с PCIS External.&lt;br /&gt;
* PayControl Interaction Server Internal (PCIS Internal) – сервер для отправки Push уведомлений о появлении неподтверждённой транзакции у пользователя (без содержания информации о транзакции). Как правило располагается в DMZ-зоне, имеющей доступ к сети Интернет. Требуется доступ к серверам Google и Apple. Может быть размещён в т.ч. на одном сервере с PCS или PCIS Extrnal (в зависимости от требований ИБ к ИТ инфраструктуре Банка и функциональных возможностей ИТ инфраструктуры Банка).&lt;br /&gt;
* PayControl Interaction Server External (PCIS External). С этим сервером взаимодействуют приложения на мобильных устройствах для получения информации о данных платежа и отправки результатов подтверждения транзакций. Располагается в DMZ-зоне с доступом извне. Должен иметь внешний фиксированный IP-адрес. При необходимости использования TLS, должно быть присвоено доменное имя и выпущен сертификат внешним УЦ.&lt;br /&gt;
&lt;br /&gt;
=Запуск и остановка служб сервера PayControl=&lt;br /&gt;
==Linux==&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl stop wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Перезапуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Windows==&lt;br /&gt;
===Из графического интерфейса===&lt;br /&gt;
Запуск, остановка и перезапуск службы осуществляется из консоли управления службами сервером (консоль services.msc).&lt;br /&gt;
===С помощью командной строки===&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net start wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net stop wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=Журналирование=&lt;br /&gt;
== Расположение журналов ==&lt;br /&gt;
События работы сервера PayControl записываются в общий журнал [[Wildfly]]. По умолчанию фиксируются только ошибки PayControl.&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ОС !! Путь к журналу за текущий день&lt;br /&gt;
|-&lt;br /&gt;
| Linux || &amp;lt;code&amp;gt;/opt/wildfly/standalone/log/server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Windows || &amp;lt;code&amp;gt;C:\wildfly\standalone\log\server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Журналы за прошлые дни имеют суффикс с датой: &amp;lt;code&amp;gt;server.log.YYYY-MM-DD&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Включение вывода информационных данных работы PayControl==&lt;br /&gt;
В некоторых случаях может потребоваться вывод отладочной информации PayControl. Порядок её включения описан ниже для разных компонентов сервера PayСоntrol.&lt;br /&gt;
===Для PCS и PCIS Internal===&lt;br /&gt;
====Вывод отладочной информации====&lt;br /&gt;
Для включения вывода отладочной информации необходимо:&lt;br /&gt;
# В БД PCS или БД PCIS соответственно для нужного сервера, добавить/изменить запись в таблице pc_sys_property, установив следующие значения:&lt;br /&gt;
#* setting_name=&#039;DEBUG_INFO&#039;&lt;br /&gt;
#* setting_value = &#039;1&#039;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Примеры SQL запросов добавления записи для разных СУБД:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! СУБД !! Запрос&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Oracle || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (PC_SETTING_SEQ.NEXTVAL, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| MS SQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (NEXT VALUE FOR PC_SETTING_SEQ, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Изменение записи=====&lt;br /&gt;
Пример SQL запроса для изменения записи (для всех перечисленных СУБД):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_sys_property set setting_value = &#039;1&#039; where setting_name=&#039;DEBUG_INFO&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Вывод содержимого SOAP-запросов и ответов====&lt;br /&gt;
{{Предупреждение|Опция не работает в [[Wildfly]] версии 13.0.0-Final.}}&lt;br /&gt;
Для включения вывода содержимого SOAP-запросов и ответов службой wildfly необходимо:&lt;br /&gt;
# Добавить после блока &amp;lt;extensions&amp;gt; ... &amp;lt;/extensions&amp;gt; в файл&lt;br /&gt;
#* Linux: &amp;lt;code&amp;gt;/opt/wildfly/standalone/configuration/standalone.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
#* Windows: &amp;lt;code&amp;gt;C:\wildfly\standalone\configuration\standalone.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
#: следующий блок:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;system-properties&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;org.apache.cxf.logging.enabled&amp;quot; value=&amp;quot;pretty&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/system-properties&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
===PCIS External (с версии 3.6)===&lt;br /&gt;
Начиная с версии 3.6 PCIS External может журналировать запросы к &amp;lt;code&amp;gt;/jsonrequest_v2&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Для включения добавьте в опции Java-машины параметр &amp;lt;code&amp;gt;paycontrol.logRequests=yes&amp;lt;/code&amp;gt;:&lt;br /&gt;
 &lt;br /&gt;
* Linux — в файл &amp;lt;code&amp;gt;/opt/wildfly/bin/standalone.conf&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Windows — в файл &amp;lt;code&amp;gt;C:\wildfly\bin\standalone.conf.bat&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Затем перезапустите службу wildfly.&lt;br /&gt;
&lt;br /&gt;
=Отправка информации о событиях=&lt;br /&gt;
Адрес для отправки информации об устройстве и событиях взаимодействия мобильного приложения или SDK PayControl с сервером PayControl устанавливается в БД PCS, таблица pc_system, поле events_post_url.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system set events_post_url=&#039;http://example.com/pc_events_reciever&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
После этого нужно перезапустить WildFly PCS для применения изменений.&lt;br /&gt;
&lt;br /&gt;
{{Предупреждение|Обязательным требованием для сбора информации о событиях является установка флага сбора информации о событиях при создании ключа, а для передачи данных об устройстве — ещё и флага сбора информации об устройстве. Подробнее — в описании API сервера.}}&lt;br /&gt;
=Установка лицензии=&lt;br /&gt;
Без лицензионного файла сервер работает в демонстрационном режиме: можно завести не более 20 активных пользователей PayControl. &lt;br /&gt;
&lt;br /&gt;
При включённой отладочной информации в журнал выводятся сообщения вида:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.utils.licenseManager.LicenseManager] (default task-2)    --- no license found in database&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- Error load License, cheking if free users count exceeded&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- ATTENTION! LICENSE NOT FOUND! You are using unlicensed demo-only version of the service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Запросом к БД==&lt;br /&gt;
Поместите содержимое файла лицензии в SQL-запрос к БД PCS, указав идентификатор системы:&lt;br /&gt;
* до версии 3.5 включительно:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* с версии 3.6:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system_params set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Добавлением файла лицензии==&lt;br /&gt;
Скопируйте файл лицензии на сервер PCS:&lt;br /&gt;
* Linux — в &amp;lt;code&amp;gt;/opt/wildfly/&amp;lt;/code&amp;gt;;&lt;br /&gt;
* Windows — в &amp;lt;code&amp;gt;C:\wildfly\&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;C:\PayControl\&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Процесс обновления в рамках одной версии =&lt;br /&gt;
Обновление выполняется заменой файлов модулей в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]:&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Модуль !! Пример имени файла&lt;br /&gt;
|-&lt;br /&gt;
| PC Server || &amp;lt;code&amp;gt;PayControl-services-module-3.9.452.ear&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC Pusher || &amp;lt;code&amp;gt;pc-pusher-5.5.348.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC External || &amp;lt;code&amp;gt;PayControl-interaction-rest-3.9.452.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Порядок действий:&lt;br /&gt;
# Сохраните файлы модулей текущей версии — они понадобятся для отката.&lt;br /&gt;
# Замените файлы модулей в директории &#039;&#039;deployments&#039;&#039; на новые.&lt;br /&gt;
# Дождитесь развёртывания. В директории появятся файлы-маркеры:&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.undeployed&amp;lt;/code&amp;gt; — для убранных модулей; такие файлы рекомендуется удалить;&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.deployed&amp;lt;/code&amp;gt; — для успешно развёрнутых новых модулей.&lt;br /&gt;
# Если появились файлы &amp;lt;code&amp;gt;*.failed&amp;lt;/code&amp;gt; — [[#Запуск и остановка служб|перезапустите Wildfly]].&lt;br /&gt;
&lt;br /&gt;
= Регламентное обслуживание =&lt;br /&gt;
Администратору PayControl необходимо в плановом режиме:&lt;br /&gt;
* контролировать достаточность свободного места на серверах PayControl;&lt;br /&gt;
* контролировать достаточность дискового пространства, выделенного базам данных (БД PCS и БД PCIS);&lt;br /&gt;
* своевременно заменять сертификат HTTPS сервера PCIS External;&lt;br /&gt;
* своевременно заменять сертификаты HTTPS серверов PCS и PCIS Internal (при их наличии).&lt;br /&gt;
[[Категория:Руководства]]&lt;br /&gt;
[[Категория:Серверная часть]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=898</id>
		<title>Руководство администратора PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=898"/>
		<updated>2026-07-07T18:34:18Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Установка лицензии */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Введение=&lt;br /&gt;
PayControl – программный комплекс, предназначенный для подтверждения пользователем операций в системах дистанционного банковского обслуживания и/или электронного документооборота.&lt;br /&gt;
&lt;br /&gt;
PayControl призван, в первую очередь, повысить уровень удобства подтверждения и информационной безопасности по сравнению с такими способами подтверждения как SMS, одноразовые пароли (One-Time Password), скретч-карты, MAC-токены и пр.&lt;br /&gt;
&lt;br /&gt;
При помощи PayControl могут подтверждаться волеизъявления на совершение банковских транзакций, аутентификация, создание и исполнение документов, факты получения и/или ознакомления с определённой информацией.&lt;br /&gt;
=Назначение=&lt;br /&gt;
Настоящий документ предназначен работникам организаций, выполняющим прикладные задачи по обслуживанию серверов PayControl.&lt;br /&gt;
=Общее описание=&lt;br /&gt;
Сервер PayControl функционирует на базе сервера приложений [[Wildfly]] выполняющейся в среде Java 8 и состоит из следующих частей:&lt;br /&gt;
* PayControl Server (PCS) – основной сервер PayControl. Располагается внутри локальной сети. Взаимодействует с прикладной системой. Хранит данные в БД PCS. Отправляет данные на PCIS Internal, получает данные с PCIS External.&lt;br /&gt;
* PayControl Interaction Server Internal (PCIS Internal) – сервер для отправки Push уведомлений о появлении неподтверждённой транзакции у пользователя (без содержания информации о транзакции). Как правило располагается в DMZ-зоне, имеющей доступ к сети Интернет. Требуется доступ к серверам Google и Apple. Может быть размещён в т.ч. на одном сервере с PCS или PCIS Extrnal (в зависимости от требований ИБ к ИТ инфраструктуре Банка и функциональных возможностей ИТ инфраструктуры Банка).&lt;br /&gt;
* PayControl Interaction Server External (PCIS External). С этим сервером взаимодействуют приложения на мобильных устройствах для получения информации о данных платежа и отправки результатов подтверждения транзакций. Располагается в DMZ-зоне с доступом извне. Должен иметь внешний фиксированный IP-адрес. При необходимости использования TLS, должно быть присвоено доменное имя и выпущен сертификат внешним УЦ.&lt;br /&gt;
=Запуск и остановка служб сервера PayControl=&lt;br /&gt;
==Linux==&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl stop wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Перезапуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Windows==&lt;br /&gt;
===Из графического интерфейса===&lt;br /&gt;
Запуск, остановка и перезапуск службы осуществляется из консоли управления службами сервером (консоль services.msc).&lt;br /&gt;
===С помощью командной строки===&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net start wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net stop wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=Журналирование=&lt;br /&gt;
== Расположение журналов ==&lt;br /&gt;
События работы сервера PayControl записываются в общий журнал [[Wildfly]]. По умолчанию фиксируются только ошибки PayControl.&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ОС !! Путь к журналу за текущий день&lt;br /&gt;
|-&lt;br /&gt;
| Linux || &amp;lt;code&amp;gt;/opt/wildfly/standalone/log/server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Windows || &amp;lt;code&amp;gt;C:\wildfly\standalone\log\server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Журналы за прошлые дни имеют суффикс с датой: &amp;lt;code&amp;gt;server.log.YYYY-MM-DD&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Включение вывода информационных данных работы PayControl==&lt;br /&gt;
В некоторых случаях может потребоваться вывод отладочной информации PayControl. Порядок её включения описан ниже для разных компонентов сервера PayСоntrol.&lt;br /&gt;
===Для PCS и PCIS Internal===&lt;br /&gt;
====Вывод отладочной информации====&lt;br /&gt;
Для включения вывода отладочной информации необходимо:&lt;br /&gt;
# В БД PCS или БД PCIS соответственно для нужного сервера, добавить/изменить запись в таблице pc_sys_property, установив следующие значения:&lt;br /&gt;
#* setting_name=&#039;DEBUG_INFO&#039;&lt;br /&gt;
#* setting_value = &#039;1&#039;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Примеры SQL запросов добавления записи для разных СУБД:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! СУБД !! Запрос&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Oracle || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (PC_SETTING_SEQ.NEXTVAL, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| MS SQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (NEXT VALUE FOR PC_SETTING_SEQ, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Изменение записи=====&lt;br /&gt;
Пример SQL запроса для изменения записи (для всех перечисленных СУБД):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_sys_property set setting_value = &#039;1&#039; where setting_name=&#039;DEBUG_INFO&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Вывод содержимого SOAP-запросов и ответов====&lt;br /&gt;
{{Предупреждение|Опция не работает в [[Wildfly]] версии 13.0.0-Final.}}&lt;br /&gt;
Для включения вывода содержимого SOAP-запросов и ответов службой wildfly необходимо:&lt;br /&gt;
# Добавить после блока &amp;lt;extensions&amp;gt; ... &amp;lt;/extensions&amp;gt; в файл&lt;br /&gt;
#* Linux: &amp;lt;code&amp;gt;/opt/wildfly/standalone/configuration/standalone.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
#* Windows: &amp;lt;code&amp;gt;C:\wildfly\standalone\configuration\standalone.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
#: следующий блок:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;system-properties&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;org.apache.cxf.logging.enabled&amp;quot; value=&amp;quot;pretty&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/system-properties&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
===PCIS External (с версии 3.6)===&lt;br /&gt;
Начиная с версии 3.6 PCIS External может журналировать запросы к &amp;lt;code&amp;gt;/jsonrequest_v2&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Для включения добавьте в опции Java-машины параметр &amp;lt;code&amp;gt;paycontrol.logRequests=yes&amp;lt;/code&amp;gt;:&lt;br /&gt;
 &lt;br /&gt;
* Linux — в файл &amp;lt;code&amp;gt;/opt/wildfly/bin/standalone.conf&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Windows — в файл &amp;lt;code&amp;gt;C:\wildfly\bin\standalone.conf.bat&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Затем перезапустите службу wildfly.&lt;br /&gt;
&lt;br /&gt;
=Отправка информации о событиях=&lt;br /&gt;
Адрес для отправки информации об устройстве и событиях взаимодействия мобильного приложения или SDK PayControl с сервером PayControl устанавливается в БД PCS, таблица pc_system, поле events_post_url.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system set events_post_url=&#039;http://example.com/pc_events_reciever&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
После этого нужно перезапустить WildFly PCS для применения изменений.&lt;br /&gt;
&lt;br /&gt;
{{Предупреждение|Обязательным требованием для сбора информации о событиях является установка флага сбора информации о событиях при создании ключа, а для передачи данных об устройстве — ещё и флага сбора информации об устройстве. Подробнее — в описании API сервера.}}&lt;br /&gt;
=Установка лицензии=&lt;br /&gt;
Без лицензионного файла сервер работает в демонстрационном режиме: можно завести не более 20 активных пользователей PayControl. &lt;br /&gt;
&lt;br /&gt;
При включённой отладочной информации в журнал выводятся сообщения вида:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.utils.licenseManager.LicenseManager] (default task-2)    --- no license found in database&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- Error load License, cheking if free users count exceeded&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- ATTENTION! LICENSE NOT FOUND! You are using unlicensed demo-only version of the service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Запросом к БД==&lt;br /&gt;
Поместите содержимое файла лицензии в SQL-запрос к БД PCS, указав идентификатор системы:&lt;br /&gt;
* до версии 3.5 включительно:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* с версии 3.6:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system_params set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Добавлением файла лицензии==&lt;br /&gt;
Скопируйте файл лицензии на сервер PCS:&lt;br /&gt;
* Linux — в &amp;lt;code&amp;gt;/opt/wildfly/&amp;lt;/code&amp;gt;;&lt;br /&gt;
* Windows — в &amp;lt;code&amp;gt;C:\wildfly\&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;C:\PayControl\&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Процесс обновления в рамках одной версии =&lt;br /&gt;
Обновление выполняется заменой файлов модулей в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]:&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Модуль !! Пример имени файла&lt;br /&gt;
|-&lt;br /&gt;
| PC Server || &amp;lt;code&amp;gt;PayControl-services-module-3.9.452.ear&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC Pusher || &amp;lt;code&amp;gt;pc-pusher-5.5.348.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC External || &amp;lt;code&amp;gt;PayControl-interaction-rest-3.9.452.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Порядок действий:&lt;br /&gt;
# Сохраните файлы модулей текущей версии — они понадобятся для отката.&lt;br /&gt;
# Замените файлы модулей в директории &#039;&#039;deployments&#039;&#039; на новые.&lt;br /&gt;
# Дождитесь развёртывания. В директории появятся файлы-маркеры:&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.undeployed&amp;lt;/code&amp;gt; — для убранных модулей; такие файлы рекомендуется удалить;&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.deployed&amp;lt;/code&amp;gt; — для успешно развёрнутых новых модулей.&lt;br /&gt;
# Если появились файлы &amp;lt;code&amp;gt;*.failed&amp;lt;/code&amp;gt; — [[#Запуск и остановка служб|перезапустите Wildfly]].&lt;br /&gt;
&lt;br /&gt;
= Регламентное обслуживание =&lt;br /&gt;
Администратору PayControl необходимо в плановом режиме:&lt;br /&gt;
* контролировать достаточность свободного места на серверах PayControl;&lt;br /&gt;
* контролировать достаточность дискового пространства, выделенного базам данных (БД PCS и БД PCIS);&lt;br /&gt;
* своевременно заменять сертификат HTTPS сервера PCIS External;&lt;br /&gt;
* своевременно заменять сертификаты HTTPS серверов PCS и PCIS Internal (при их наличии).&lt;br /&gt;
[[Категория:Руководства]]&lt;br /&gt;
[[Категория:Серверная часть]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=897</id>
		<title>Руководство администратора PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=897"/>
		<updated>2026-07-07T18:34:09Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Установка лицензии */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Введение=&lt;br /&gt;
PayControl – программный комплекс, предназначенный для подтверждения пользователем операций в системах дистанционного банковского обслуживания и/или электронного документооборота.&lt;br /&gt;
&lt;br /&gt;
PayControl призван, в первую очередь, повысить уровень удобства подтверждения и информационной безопасности по сравнению с такими способами подтверждения как SMS, одноразовые пароли (One-Time Password), скретч-карты, MAC-токены и пр.&lt;br /&gt;
&lt;br /&gt;
При помощи PayControl могут подтверждаться волеизъявления на совершение банковских транзакций, аутентификация, создание и исполнение документов, факты получения и/или ознакомления с определённой информацией.&lt;br /&gt;
=Назначение=&lt;br /&gt;
Настоящий документ предназначен работникам организаций, выполняющим прикладные задачи по обслуживанию серверов PayControl.&lt;br /&gt;
=Общее описание=&lt;br /&gt;
Сервер PayControl функционирует на базе сервера приложений [[Wildfly]] выполняющейся в среде Java 8 и состоит из следующих частей:&lt;br /&gt;
* PayControl Server (PCS) – основной сервер PayControl. Располагается внутри локальной сети. Взаимодействует с прикладной системой. Хранит данные в БД PCS. Отправляет данные на PCIS Internal, получает данные с PCIS External.&lt;br /&gt;
* PayControl Interaction Server Internal (PCIS Internal) – сервер для отправки Push уведомлений о появлении неподтверждённой транзакции у пользователя (без содержания информации о транзакции). Как правило располагается в DMZ-зоне, имеющей доступ к сети Интернет. Требуется доступ к серверам Google и Apple. Может быть размещён в т.ч. на одном сервере с PCS или PCIS Extrnal (в зависимости от требований ИБ к ИТ инфраструктуре Банка и функциональных возможностей ИТ инфраструктуры Банка).&lt;br /&gt;
* PayControl Interaction Server External (PCIS External). С этим сервером взаимодействуют приложения на мобильных устройствах для получения информации о данных платежа и отправки результатов подтверждения транзакций. Располагается в DMZ-зоне с доступом извне. Должен иметь внешний фиксированный IP-адрес. При необходимости использования TLS, должно быть присвоено доменное имя и выпущен сертификат внешним УЦ.&lt;br /&gt;
=Запуск и остановка служб сервера PayControl=&lt;br /&gt;
==Linux==&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl stop wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Перезапуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Windows==&lt;br /&gt;
===Из графического интерфейса===&lt;br /&gt;
Запуск, остановка и перезапуск службы осуществляется из консоли управления службами сервером (консоль services.msc).&lt;br /&gt;
===С помощью командной строки===&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net start wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net stop wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=Журналирование=&lt;br /&gt;
== Расположение журналов ==&lt;br /&gt;
События работы сервера PayControl записываются в общий журнал [[Wildfly]]. По умолчанию фиксируются только ошибки PayControl.&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ОС !! Путь к журналу за текущий день&lt;br /&gt;
|-&lt;br /&gt;
| Linux || &amp;lt;code&amp;gt;/opt/wildfly/standalone/log/server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Windows || &amp;lt;code&amp;gt;C:\wildfly\standalone\log\server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Журналы за прошлые дни имеют суффикс с датой: &amp;lt;code&amp;gt;server.log.YYYY-MM-DD&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Включение вывода информационных данных работы PayControl==&lt;br /&gt;
В некоторых случаях может потребоваться вывод отладочной информации PayControl. Порядок её включения описан ниже для разных компонентов сервера PayСоntrol.&lt;br /&gt;
===Для PCS и PCIS Internal===&lt;br /&gt;
====Вывод отладочной информации====&lt;br /&gt;
Для включения вывода отладочной информации необходимо:&lt;br /&gt;
# В БД PCS или БД PCIS соответственно для нужного сервера, добавить/изменить запись в таблице pc_sys_property, установив следующие значения:&lt;br /&gt;
#* setting_name=&#039;DEBUG_INFO&#039;&lt;br /&gt;
#* setting_value = &#039;1&#039;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Примеры SQL запросов добавления записи для разных СУБД:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! СУБД !! Запрос&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Oracle || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (PC_SETTING_SEQ.NEXTVAL, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| MS SQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (NEXT VALUE FOR PC_SETTING_SEQ, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Изменение записи=====&lt;br /&gt;
Пример SQL запроса для изменения записи (для всех перечисленных СУБД):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_sys_property set setting_value = &#039;1&#039; where setting_name=&#039;DEBUG_INFO&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Вывод содержимого SOAP-запросов и ответов====&lt;br /&gt;
{{Предупреждение|Опция не работает в [[Wildfly]] версии 13.0.0-Final.}}&lt;br /&gt;
Для включения вывода содержимого SOAP-запросов и ответов службой wildfly необходимо:&lt;br /&gt;
# Добавить после блока &amp;lt;extensions&amp;gt; ... &amp;lt;/extensions&amp;gt; в файл&lt;br /&gt;
#* Linux: &amp;lt;code&amp;gt;/opt/wildfly/standalone/configuration/standalone.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
#* Windows: &amp;lt;code&amp;gt;C:\wildfly\standalone\configuration\standalone.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
#: следующий блок:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;system-properties&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;org.apache.cxf.logging.enabled&amp;quot; value=&amp;quot;pretty&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/system-properties&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
===PCIS External (с версии 3.6)===&lt;br /&gt;
Начиная с версии 3.6 PCIS External может журналировать запросы к &amp;lt;code&amp;gt;/jsonrequest_v2&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Для включения добавьте в опции Java-машины параметр &amp;lt;code&amp;gt;paycontrol.logRequests=yes&amp;lt;/code&amp;gt;:&lt;br /&gt;
 &lt;br /&gt;
* Linux — в файл &amp;lt;code&amp;gt;/opt/wildfly/bin/standalone.conf&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Windows — в файл &amp;lt;code&amp;gt;C:\wildfly\bin\standalone.conf.bat&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Затем перезапустите службу wildfly.&lt;br /&gt;
&lt;br /&gt;
=Отправка информации о событиях=&lt;br /&gt;
Адрес для отправки информации об устройстве и событиях взаимодействия мобильного приложения или SDK PayControl с сервером PayControl устанавливается в БД PCS, таблица pc_system, поле events_post_url.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system set events_post_url=&#039;http://example.com/pc_events_reciever&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
После этого нужно перезапустить WildFly PCS для применения изменений.&lt;br /&gt;
&lt;br /&gt;
{{Предупреждение|Обязательным требованием для сбора информации о событиях является установка флага сбора информации о событиях при создании ключа, а для передачи данных об устройстве — ещё и флага сбора информации об устройстве. Подробнее — в описании API сервера.}}&lt;br /&gt;
=Установка лицензии=&lt;br /&gt;
Без лицензионного файла сервер работает в демонстрационном режиме: можно завести не более 20 активных пользователей PayControl. &lt;br /&gt;
&lt;br /&gt;
При включённой отладочной информации в журнал выводятся сообщения вида:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.utils.licenseManager.LicenseManager] (default task-2)    --- no license found in database&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- Error load License, cheking if free users count exceeded&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- ATTENTION! LICENSE NOT FOUND! You are using unlicensed demo-only version of the service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Запросом к БД==&lt;br /&gt;
Поместите содержимое файла лицензии в SQL-запрос к БД PCS, указав идентификатор системы:&lt;br /&gt;
* до версии 3.5 включительно:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* с версии 3.6:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system_params set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Добавлением файла лицензии==&lt;br /&gt;
Скопируйте файл лицензии на сервер PCS:&lt;br /&gt;
* Linux — в &amp;lt;code&amp;gt;/opt/wildfly/&amp;lt;/code&amp;gt;;&lt;br /&gt;
* Windows — в &amp;lt;code&amp;gt;C:\wildfly\&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;C:\PayControl\&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Процесс обновления в рамках одной версии =&lt;br /&gt;
Обновление выполняется заменой файлов модулей в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]:&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Модуль !! Пример имени файла&lt;br /&gt;
|-&lt;br /&gt;
| PC Server || &amp;lt;code&amp;gt;PayControl-services-module-3.9.452.ear&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC Pusher || &amp;lt;code&amp;gt;pc-pusher-5.5.348.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC External || &amp;lt;code&amp;gt;PayControl-interaction-rest-3.9.452.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Порядок действий:&lt;br /&gt;
# Сохраните файлы модулей текущей версии — они понадобятся для отката.&lt;br /&gt;
# Замените файлы модулей в директории &#039;&#039;deployments&#039;&#039; на новые.&lt;br /&gt;
# Дождитесь развёртывания. В директории появятся файлы-маркеры:&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.undeployed&amp;lt;/code&amp;gt; — для убранных модулей; такие файлы рекомендуется удалить;&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.deployed&amp;lt;/code&amp;gt; — для успешно развёрнутых новых модулей.&lt;br /&gt;
# Если появились файлы &amp;lt;code&amp;gt;*.failed&amp;lt;/code&amp;gt; — [[#Запуск и остановка служб|перезапустите Wildfly]].&lt;br /&gt;
&lt;br /&gt;
= Регламентное обслуживание =&lt;br /&gt;
Администратору PayControl необходимо в плановом режиме:&lt;br /&gt;
* контролировать достаточность свободного места на серверах PayControl;&lt;br /&gt;
* контролировать достаточность дискового пространства, выделенного базам данных (БД PCS и БД PCIS);&lt;br /&gt;
* своевременно заменять сертификат HTTPS сервера PCIS External;&lt;br /&gt;
* своевременно заменять сертификаты HTTPS серверов PCS и PCIS Internal (при их наличии).&lt;br /&gt;
[[Категория:Руководства]]&lt;br /&gt;
[[Категория:Серверная часть]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=896</id>
		<title>Руководство администратора PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=896"/>
		<updated>2026-07-07T18:31:49Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Запросом к БД */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Введение=&lt;br /&gt;
PayControl – программный комплекс, предназначенный для подтверждения пользователем операций в системах дистанционного банковского обслуживания и/или электронного документооборота.&lt;br /&gt;
&lt;br /&gt;
PayControl призван, в первую очередь, повысить уровень удобства подтверждения и информационной безопасности по сравнению с такими способами подтверждения как SMS, одноразовые пароли (One-Time Password), скретч-карты, MAC-токены и пр.&lt;br /&gt;
&lt;br /&gt;
При помощи PayControl могут подтверждаться волеизъявления на совершение банковских транзакций, аутентификация, создание и исполнение документов, факты получения и/или ознакомления с определённой информацией.&lt;br /&gt;
=Назначение=&lt;br /&gt;
Настоящий документ предназначен работникам организаций, выполняющим прикладные задачи по обслуживанию серверов PayControl.&lt;br /&gt;
=Общее описание=&lt;br /&gt;
Сервер PayControl функционирует на базе сервера приложений [[Wildfly]] выполняющейся в среде Java 8 и состоит из следующих частей:&lt;br /&gt;
* PayControl Server (PCS) – основной сервер PayControl. Располагается внутри локальной сети. Взаимодействует с прикладной системой. Хранит данные в БД PCS. Отправляет данные на PCIS Internal, получает данные с PCIS External.&lt;br /&gt;
* PayControl Interaction Server Internal (PCIS Internal) – сервер для отправки Push уведомлений о появлении неподтверждённой транзакции у пользователя (без содержания информации о транзакции). Как правило располагается в DMZ-зоне, имеющей доступ к сети Интернет. Требуется доступ к серверам Google и Apple. Может быть размещён в т.ч. на одном сервере с PCS или PCIS Extrnal (в зависимости от требований ИБ к ИТ инфраструктуре Банка и функциональных возможностей ИТ инфраструктуры Банка).&lt;br /&gt;
* PayControl Interaction Server External (PCIS External). С этим сервером взаимодействуют приложения на мобильных устройствах для получения информации о данных платежа и отправки результатов подтверждения транзакций. Располагается в DMZ-зоне с доступом извне. Должен иметь внешний фиксированный IP-адрес. При необходимости использования TLS, должно быть присвоено доменное имя и выпущен сертификат внешним УЦ.&lt;br /&gt;
=Запуск и остановка служб сервера PayControl=&lt;br /&gt;
==Linux==&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl stop wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Перезапуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Windows==&lt;br /&gt;
===Из графического интерфейса===&lt;br /&gt;
Запуск, остановка и перезапуск службы осуществляется из консоли управления службами сервером (консоль services.msc).&lt;br /&gt;
===С помощью командной строки===&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net start wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net stop wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=Журналирование=&lt;br /&gt;
== Расположение журналов ==&lt;br /&gt;
События работы сервера PayControl записываются в общий журнал [[Wildfly]]. По умолчанию фиксируются только ошибки PayControl.&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ОС !! Путь к журналу за текущий день&lt;br /&gt;
|-&lt;br /&gt;
| Linux || &amp;lt;code&amp;gt;/opt/wildfly/standalone/log/server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Windows || &amp;lt;code&amp;gt;C:\wildfly\standalone\log\server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Журналы за прошлые дни имеют суффикс с датой: &amp;lt;code&amp;gt;server.log.YYYY-MM-DD&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Включение вывода информационных данных работы PayControl==&lt;br /&gt;
В некоторых случаях может потребоваться вывод отладочной информации PayControl. Порядок её включения описан ниже для разных компонентов сервера PayСоntrol.&lt;br /&gt;
===Для PCS и PCIS Internal===&lt;br /&gt;
====Вывод отладочной информации====&lt;br /&gt;
Для включения вывода отладочной информации необходимо:&lt;br /&gt;
# В БД PCS или БД PCIS соответственно для нужного сервера, добавить/изменить запись в таблице pc_sys_property, установив следующие значения:&lt;br /&gt;
#* setting_name=&#039;DEBUG_INFO&#039;&lt;br /&gt;
#* setting_value = &#039;1&#039;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Примеры SQL запросов добавления записи для разных СУБД:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! СУБД !! Запрос&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Oracle || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (PC_SETTING_SEQ.NEXTVAL, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| MS SQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (NEXT VALUE FOR PC_SETTING_SEQ, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Изменение записи=====&lt;br /&gt;
Пример SQL запроса для изменения записи (для всех перечисленных СУБД):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_sys_property set setting_value = &#039;1&#039; where setting_name=&#039;DEBUG_INFO&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Вывод содержимого SOAP-запросов и ответов====&lt;br /&gt;
{{Предупреждение|Опция не работает в [[Wildfly]] версии 13.0.0-Final.}}&lt;br /&gt;
Для включения вывода содержимого SOAP-запросов и ответов службой wildfly необходимо:&lt;br /&gt;
# Добавить после блока &amp;lt;extensions&amp;gt; ... &amp;lt;/extensions&amp;gt; в файл&lt;br /&gt;
#* Linux: &amp;lt;code&amp;gt;/opt/wildfly/standalone/configuration/standalone.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
#* Windows: &amp;lt;code&amp;gt;C:\wildfly\standalone\configuration\standalone.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
#: следующий блок:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;system-properties&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;org.apache.cxf.logging.enabled&amp;quot; value=&amp;quot;pretty&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/system-properties&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
===PCIS External (с версии 3.6)===&lt;br /&gt;
Начиная с версии 3.6 PCIS External может журналировать запросы к &amp;lt;code&amp;gt;/jsonrequest_v2&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Для включения добавьте в опции Java-машины параметр &amp;lt;code&amp;gt;paycontrol.logRequests=yes&amp;lt;/code&amp;gt;:&lt;br /&gt;
 &lt;br /&gt;
* Linux — в файл &amp;lt;code&amp;gt;/opt/wildfly/bin/standalone.conf&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Windows — в файл &amp;lt;code&amp;gt;C:\wildfly\bin\standalone.conf.bat&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Затем перезапустите службу wildfly.&lt;br /&gt;
&lt;br /&gt;
=Отправка информации о событиях=&lt;br /&gt;
Адрес для отправки информации об устройстве и событиях взаимодействия мобильного приложения или SDK PayControl с сервером PayControl устанавливается в БД PCS, таблица pc_system, поле events_post_url.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system set events_post_url=&#039;http://example.com/pc_events_reciever&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
После этого нужно перезапустить WildFly PCS для применения изменений.&lt;br /&gt;
&lt;br /&gt;
{{Предупреждение|Обязательным требованием для сбора информации о событиях является установка флага сбора информации о событиях при создании ключа, а для передачи данных об устройстве — ещё и флага сбора информации об устройстве. Подробнее — в описании API сервера.}}&lt;br /&gt;
=Установка лицензии=&lt;br /&gt;
Если установка лицензионного файла не проводилась на сервер, то он работает в демонстрационном режиме, ограничивающем возможность заведения более 20 пользователей PayControl.&lt;br /&gt;
Также при включённом выводе информационных данных работы PayControl, в журнал выводятся сообщения сообщения вида:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.utils.licenseManager.LicenseManager] (default task-2)    --- no license found in database&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- Error load License, cheking if free users count exceeded&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- ATTENTION! LICENSE NOT FOUND! You are using unlicensed demo-only version of the service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Запросом к БД==&lt;br /&gt;
Поместите содержимое файла лицензии в SQL-запрос к БД PCS, указав идентификатор системы:&lt;br /&gt;
* до версии 3.5 включительно:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* с версии 3.6:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system_params set license = &#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid = &#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Добавлением файла лицензии==&lt;br /&gt;
Скопируйте файл лицензии на сервер PCS:&lt;br /&gt;
* Linux — в &amp;lt;code&amp;gt;/opt/wildfly/&amp;lt;/code&amp;gt;;&lt;br /&gt;
* Windows — в &amp;lt;code&amp;gt;C:\wildfly\&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;C:\PayControl\&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Процесс обновления в рамках одной версии =&lt;br /&gt;
Обновление выполняется заменой файлов модулей в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]:&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Модуль !! Пример имени файла&lt;br /&gt;
|-&lt;br /&gt;
| PC Server || &amp;lt;code&amp;gt;PayControl-services-module-3.9.452.ear&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC Pusher || &amp;lt;code&amp;gt;pc-pusher-5.5.348.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC External || &amp;lt;code&amp;gt;PayControl-interaction-rest-3.9.452.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Порядок действий:&lt;br /&gt;
# Сохраните файлы модулей текущей версии — они понадобятся для отката.&lt;br /&gt;
# Замените файлы модулей в директории &#039;&#039;deployments&#039;&#039; на новые.&lt;br /&gt;
# Дождитесь развёртывания. В директории появятся файлы-маркеры:&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.undeployed&amp;lt;/code&amp;gt; — для убранных модулей; такие файлы рекомендуется удалить;&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.deployed&amp;lt;/code&amp;gt; — для успешно развёрнутых новых модулей.&lt;br /&gt;
# Если появились файлы &amp;lt;code&amp;gt;*.failed&amp;lt;/code&amp;gt; — [[#Запуск и остановка служб|перезапустите Wildfly]].&lt;br /&gt;
&lt;br /&gt;
= Регламентное обслуживание =&lt;br /&gt;
Администратору PayControl необходимо в плановом режиме:&lt;br /&gt;
* контролировать достаточность свободного места на серверах PayControl;&lt;br /&gt;
* контролировать достаточность дискового пространства, выделенного базам данных (БД PCS и БД PCIS);&lt;br /&gt;
* своевременно заменять сертификат HTTPS сервера PCIS External;&lt;br /&gt;
* своевременно заменять сертификаты HTTPS серверов PCS и PCIS Internal (при их наличии).&lt;br /&gt;
[[Категория:Руководства]]&lt;br /&gt;
[[Категория:Серверная часть]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=895</id>
		<title>Руководство администратора PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=895"/>
		<updated>2026-07-07T18:29:11Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Добавлением файла лицензии */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Введение=&lt;br /&gt;
PayControl – программный комплекс, предназначенный для подтверждения пользователем операций в системах дистанционного банковского обслуживания и/или электронного документооборота.&lt;br /&gt;
&lt;br /&gt;
PayControl призван, в первую очередь, повысить уровень удобства подтверждения и информационной безопасности по сравнению с такими способами подтверждения как SMS, одноразовые пароли (One-Time Password), скретч-карты, MAC-токены и пр.&lt;br /&gt;
&lt;br /&gt;
При помощи PayControl могут подтверждаться волеизъявления на совершение банковских транзакций, аутентификация, создание и исполнение документов, факты получения и/или ознакомления с определённой информацией.&lt;br /&gt;
=Назначение=&lt;br /&gt;
Настоящий документ предназначен работникам организаций, выполняющим прикладные задачи по обслуживанию серверов PayControl.&lt;br /&gt;
=Общее описание=&lt;br /&gt;
Сервер PayControl функционирует на базе сервера приложений [[Wildfly]] выполняющейся в среде Java 8 и состоит из следующих частей:&lt;br /&gt;
* PayControl Server (PCS) – основной сервер PayControl. Располагается внутри локальной сети. Взаимодействует с прикладной системой. Хранит данные в БД PCS. Отправляет данные на PCIS Internal, получает данные с PCIS External.&lt;br /&gt;
* PayControl Interaction Server Internal (PCIS Internal) – сервер для отправки Push уведомлений о появлении неподтверждённой транзакции у пользователя (без содержания информации о транзакции). Как правило располагается в DMZ-зоне, имеющей доступ к сети Интернет. Требуется доступ к серверам Google и Apple. Может быть размещён в т.ч. на одном сервере с PCS или PCIS Extrnal (в зависимости от требований ИБ к ИТ инфраструктуре Банка и функциональных возможностей ИТ инфраструктуры Банка).&lt;br /&gt;
* PayControl Interaction Server External (PCIS External). С этим сервером взаимодействуют приложения на мобильных устройствах для получения информации о данных платежа и отправки результатов подтверждения транзакций. Располагается в DMZ-зоне с доступом извне. Должен иметь внешний фиксированный IP-адрес. При необходимости использования TLS, должно быть присвоено доменное имя и выпущен сертификат внешним УЦ.&lt;br /&gt;
=Запуск и остановка служб сервера PayControl=&lt;br /&gt;
==Linux==&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl stop wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Перезапуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Windows==&lt;br /&gt;
===Из графического интерфейса===&lt;br /&gt;
Запуск, остановка и перезапуск службы осуществляется из консоли управления службами сервером (консоль services.msc).&lt;br /&gt;
===С помощью командной строки===&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net start wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net stop wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=Журналирование=&lt;br /&gt;
== Расположение журналов ==&lt;br /&gt;
События работы сервера PayControl записываются в общий журнал [[Wildfly]]. По умолчанию фиксируются только ошибки PayControl.&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ОС !! Путь к журналу за текущий день&lt;br /&gt;
|-&lt;br /&gt;
| Linux || &amp;lt;code&amp;gt;/opt/wildfly/standalone/log/server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Windows || &amp;lt;code&amp;gt;C:\wildfly\standalone\log\server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Журналы за прошлые дни имеют суффикс с датой: &amp;lt;code&amp;gt;server.log.YYYY-MM-DD&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Включение вывода информационных данных работы PayControl==&lt;br /&gt;
В некоторых случаях может потребоваться вывод отладочной информации PayControl. Порядок её включения описан ниже для разных компонентов сервера PayСоntrol.&lt;br /&gt;
===Для PCS и PCIS Internal===&lt;br /&gt;
====Вывод отладочной информации====&lt;br /&gt;
Для включения вывода отладочной информации необходимо:&lt;br /&gt;
# В БД PCS или БД PCIS соответственно для нужного сервера, добавить/изменить запись в таблице pc_sys_property, установив следующие значения:&lt;br /&gt;
#* setting_name=&#039;DEBUG_INFO&#039;&lt;br /&gt;
#* setting_value = &#039;1&#039;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Примеры SQL запросов добавления записи для разных СУБД:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! СУБД !! Запрос&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Oracle || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (PC_SETTING_SEQ.NEXTVAL, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| MS SQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (NEXT VALUE FOR PC_SETTING_SEQ, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Изменение записи=====&lt;br /&gt;
Пример SQL запроса для изменения записи (для всех перечисленных СУБД):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_sys_property set setting_value = &#039;1&#039; where setting_name=&#039;DEBUG_INFO&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Вывод содержимого SOAP-запросов и ответов====&lt;br /&gt;
{{Предупреждение|Опция не работает в [[Wildfly]] версии 13.0.0-Final.}}&lt;br /&gt;
Для включения вывода содержимого SOAP-запросов и ответов службой wildfly необходимо:&lt;br /&gt;
# Добавить после блока &amp;lt;extensions&amp;gt; ... &amp;lt;/extensions&amp;gt; в файл&lt;br /&gt;
#* Linux: &amp;lt;code&amp;gt;/opt/wildfly/standalone/configuration/standalone.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
#* Windows: &amp;lt;code&amp;gt;C:\wildfly\standalone\configuration\standalone.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
#: следующий блок:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;system-properties&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;org.apache.cxf.logging.enabled&amp;quot; value=&amp;quot;pretty&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/system-properties&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
===PCIS External (с версии 3.6)===&lt;br /&gt;
Начиная с версии 3.6 PCIS External может журналировать запросы к &amp;lt;code&amp;gt;/jsonrequest_v2&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Для включения добавьте в опции Java-машины параметр &amp;lt;code&amp;gt;paycontrol.logRequests=yes&amp;lt;/code&amp;gt;:&lt;br /&gt;
 &lt;br /&gt;
* Linux — в файл &amp;lt;code&amp;gt;/opt/wildfly/bin/standalone.conf&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Windows — в файл &amp;lt;code&amp;gt;C:\wildfly\bin\standalone.conf.bat&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Затем перезапустите службу wildfly.&lt;br /&gt;
&lt;br /&gt;
=Отправка информации о событиях=&lt;br /&gt;
Адрес для отправки информации об устройстве и событиях взаимодействия мобильного приложения или SDK PayControl с сервером PayControl устанавливается в БД PCS, таблица pc_system, поле events_post_url.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system set events_post_url=&#039;http://example.com/pc_events_reciever&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
После этого нужно перезапустить WildFly PCS для применения изменений.&lt;br /&gt;
&lt;br /&gt;
{{Предупреждение|Обязательным требованием для сбора информации о событиях является установка флага сбора информации о событиях при создании ключа, а для передачи данных об устройстве — ещё и флага сбора информации об устройстве. Подробнее — в описании API сервера.}}&lt;br /&gt;
=Установка лицензии=&lt;br /&gt;
Если установка лицензионного файла не проводилась на сервер, то он работает в демонстрационном режиме, ограничивающем возможность заведения более 20 пользователей PayControl.&lt;br /&gt;
Также при включённом выводе информационных данных работы PayControl, в журнал выводятся сообщения сообщения вида:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.utils.licenseManager.LicenseManager] (default task-2)    --- no license found in database&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- Error load License, cheking if free users count exceeded&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- ATTENTION! LICENSE NOT FOUND! You are using unlicensed demo-only version of the service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Запросом к БД==&lt;br /&gt;
Для установки лицензии необходимо выполнить SQL-запрос к БД PCS, поместив в него содержимое файла лицензии указав идентификатор системы&lt;br /&gt;
* до версии 3.5 включительно:&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set license=&#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid=&#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* с версии 3.6:&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system_params set license=&#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid=&#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Добавлением файла лицензии==&lt;br /&gt;
Скопируйте файл лицензии на сервер PCS:&lt;br /&gt;
* Linux — в &amp;lt;code&amp;gt;/opt/wildfly/&amp;lt;/code&amp;gt;;&lt;br /&gt;
* Windows — в &amp;lt;code&amp;gt;C:\wildfly\&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;C:\PayControl\&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Процесс обновления в рамках одной версии =&lt;br /&gt;
Обновление выполняется заменой файлов модулей в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]:&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Модуль !! Пример имени файла&lt;br /&gt;
|-&lt;br /&gt;
| PC Server || &amp;lt;code&amp;gt;PayControl-services-module-3.9.452.ear&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC Pusher || &amp;lt;code&amp;gt;pc-pusher-5.5.348.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC External || &amp;lt;code&amp;gt;PayControl-interaction-rest-3.9.452.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Порядок действий:&lt;br /&gt;
# Сохраните файлы модулей текущей версии — они понадобятся для отката.&lt;br /&gt;
# Замените файлы модулей в директории &#039;&#039;deployments&#039;&#039; на новые.&lt;br /&gt;
# Дождитесь развёртывания. В директории появятся файлы-маркеры:&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.undeployed&amp;lt;/code&amp;gt; — для убранных модулей; такие файлы рекомендуется удалить;&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.deployed&amp;lt;/code&amp;gt; — для успешно развёрнутых новых модулей.&lt;br /&gt;
# Если появились файлы &amp;lt;code&amp;gt;*.failed&amp;lt;/code&amp;gt; — [[#Запуск и остановка служб|перезапустите Wildfly]].&lt;br /&gt;
&lt;br /&gt;
= Регламентное обслуживание =&lt;br /&gt;
Администратору PayControl необходимо в плановом режиме:&lt;br /&gt;
* контролировать достаточность свободного места на серверах PayControl;&lt;br /&gt;
* контролировать достаточность дискового пространства, выделенного базам данных (БД PCS и БД PCIS);&lt;br /&gt;
* своевременно заменять сертификат HTTPS сервера PCIS External;&lt;br /&gt;
* своевременно заменять сертификаты HTTPS серверов PCS и PCIS Internal (при их наличии).&lt;br /&gt;
[[Категория:Руководства]]&lt;br /&gt;
[[Категория:Серверная часть]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=894</id>
		<title>Руководство администратора PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=894"/>
		<updated>2026-07-07T18:27:49Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* PCIS External (с версии 3.6) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Введение=&lt;br /&gt;
PayControl – программный комплекс, предназначенный для подтверждения пользователем операций в системах дистанционного банковского обслуживания и/или электронного документооборота.&lt;br /&gt;
&lt;br /&gt;
PayControl призван, в первую очередь, повысить уровень удобства подтверждения и информационной безопасности по сравнению с такими способами подтверждения как SMS, одноразовые пароли (One-Time Password), скретч-карты, MAC-токены и пр.&lt;br /&gt;
&lt;br /&gt;
При помощи PayControl могут подтверждаться волеизъявления на совершение банковских транзакций, аутентификация, создание и исполнение документов, факты получения и/или ознакомления с определённой информацией.&lt;br /&gt;
=Назначение=&lt;br /&gt;
Настоящий документ предназначен работникам организаций, выполняющим прикладные задачи по обслуживанию серверов PayControl.&lt;br /&gt;
=Общее описание=&lt;br /&gt;
Сервер PayControl функционирует на базе сервера приложений [[Wildfly]] выполняющейся в среде Java 8 и состоит из следующих частей:&lt;br /&gt;
* PayControl Server (PCS) – основной сервер PayControl. Располагается внутри локальной сети. Взаимодействует с прикладной системой. Хранит данные в БД PCS. Отправляет данные на PCIS Internal, получает данные с PCIS External.&lt;br /&gt;
* PayControl Interaction Server Internal (PCIS Internal) – сервер для отправки Push уведомлений о появлении неподтверждённой транзакции у пользователя (без содержания информации о транзакции). Как правило располагается в DMZ-зоне, имеющей доступ к сети Интернет. Требуется доступ к серверам Google и Apple. Может быть размещён в т.ч. на одном сервере с PCS или PCIS Extrnal (в зависимости от требований ИБ к ИТ инфраструктуре Банка и функциональных возможностей ИТ инфраструктуры Банка).&lt;br /&gt;
* PayControl Interaction Server External (PCIS External). С этим сервером взаимодействуют приложения на мобильных устройствах для получения информации о данных платежа и отправки результатов подтверждения транзакций. Располагается в DMZ-зоне с доступом извне. Должен иметь внешний фиксированный IP-адрес. При необходимости использования TLS, должно быть присвоено доменное имя и выпущен сертификат внешним УЦ.&lt;br /&gt;
=Запуск и остановка служб сервера PayControl=&lt;br /&gt;
==Linux==&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl stop wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Перезапуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Windows==&lt;br /&gt;
===Из графического интерфейса===&lt;br /&gt;
Запуск, остановка и перезапуск службы осуществляется из консоли управления службами сервером (консоль services.msc).&lt;br /&gt;
===С помощью командной строки===&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net start wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net stop wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=Журналирование=&lt;br /&gt;
== Расположение журналов ==&lt;br /&gt;
События работы сервера PayControl записываются в общий журнал [[Wildfly]]. По умолчанию фиксируются только ошибки PayControl.&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ОС !! Путь к журналу за текущий день&lt;br /&gt;
|-&lt;br /&gt;
| Linux || &amp;lt;code&amp;gt;/opt/wildfly/standalone/log/server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Windows || &amp;lt;code&amp;gt;C:\wildfly\standalone\log\server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Журналы за прошлые дни имеют суффикс с датой: &amp;lt;code&amp;gt;server.log.YYYY-MM-DD&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Включение вывода информационных данных работы PayControl==&lt;br /&gt;
В некоторых случаях может потребоваться вывод отладочной информации PayControl. Порядок её включения описан ниже для разных компонентов сервера PayСоntrol.&lt;br /&gt;
===Для PCS и PCIS Internal===&lt;br /&gt;
====Вывод отладочной информации====&lt;br /&gt;
Для включения вывода отладочной информации необходимо:&lt;br /&gt;
# В БД PCS или БД PCIS соответственно для нужного сервера, добавить/изменить запись в таблице pc_sys_property, установив следующие значения:&lt;br /&gt;
#* setting_name=&#039;DEBUG_INFO&#039;&lt;br /&gt;
#* setting_value = &#039;1&#039;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Примеры SQL запросов добавления записи для разных СУБД:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! СУБД !! Запрос&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Oracle || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (PC_SETTING_SEQ.NEXTVAL, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| MS SQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (NEXT VALUE FOR PC_SETTING_SEQ, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Изменение записи=====&lt;br /&gt;
Пример SQL запроса для изменения записи (для всех перечисленных СУБД):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_sys_property set setting_value = &#039;1&#039; where setting_name=&#039;DEBUG_INFO&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Вывод содержимого SOAP-запросов и ответов====&lt;br /&gt;
{{Предупреждение|Опция не работает в [[Wildfly]] версии 13.0.0-Final.}}&lt;br /&gt;
Для включения вывода содержимого SOAP-запросов и ответов службой wildfly необходимо:&lt;br /&gt;
# Добавить после блока &amp;lt;extensions&amp;gt; ... &amp;lt;/extensions&amp;gt; в файл&lt;br /&gt;
#* Linux: &amp;lt;code&amp;gt;/opt/wildfly/standalone/configuration/standalone.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
#* Windows: &amp;lt;code&amp;gt;C:\wildfly\standalone\configuration\standalone.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
#: следующий блок:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;system-properties&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;org.apache.cxf.logging.enabled&amp;quot; value=&amp;quot;pretty&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/system-properties&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
===PCIS External (с версии 3.6)===&lt;br /&gt;
Начиная с версии 3.6 PCIS External может журналировать запросы к &amp;lt;code&amp;gt;/jsonrequest_v2&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Для включения добавьте в опции Java-машины параметр &amp;lt;code&amp;gt;paycontrol.logRequests=yes&amp;lt;/code&amp;gt;:&lt;br /&gt;
 &lt;br /&gt;
* Linux — в файл &amp;lt;code&amp;gt;/opt/wildfly/bin/standalone.conf&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Windows — в файл &amp;lt;code&amp;gt;C:\wildfly\bin\standalone.conf.bat&amp;lt;/code&amp;gt;:&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Затем перезапустите службу wildfly.&lt;br /&gt;
&lt;br /&gt;
=Отправка информации о событиях=&lt;br /&gt;
Адрес для отправки информации об устройстве и событиях взаимодействия мобильного приложения или SDK PayControl с сервером PayControl устанавливается в БД PCS, таблица pc_system, поле events_post_url.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system set events_post_url=&#039;http://example.com/pc_events_reciever&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
После этого нужно перезапустить WildFly PCS для применения изменений.&lt;br /&gt;
&lt;br /&gt;
{{Предупреждение|Обязательным требованием для сбора информации о событиях является установка флага сбора информации о событиях при создании ключа, а для передачи данных об устройстве — ещё и флага сбора информации об устройстве. Подробнее — в описании API сервера.}}&lt;br /&gt;
=Установка лицензии=&lt;br /&gt;
Если установка лицензионного файла не проводилась на сервер, то он работает в демонстрационном режиме, ограничивающем возможность заведения более 20 пользователей PayControl.&lt;br /&gt;
Также при включённом выводе информационных данных работы PayControl, в журнал выводятся сообщения сообщения вида:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.utils.licenseManager.LicenseManager] (default task-2)    --- no license found in database&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- Error load License, cheking if free users count exceeded&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- ATTENTION! LICENSE NOT FOUND! You are using unlicensed demo-only version of the service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Запросом к БД==&lt;br /&gt;
Для установки лицензии необходимо выполнить SQL-запрос к БД PCS, поместив в него содержимое файла лицензии указав идентификатор системы&lt;br /&gt;
* до версии 3.5 включительно:&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set license=&#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid=&#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* с версии 3.6:&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system_params set license=&#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid=&#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Добавлением файла лицензии==&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
Файл лицензии необходимо скопировать в /opt/wildfly/ на сервер PCS.&lt;br /&gt;
===Windows===&lt;br /&gt;
Файл лицензии необходимо скопировать на сервер PCS в одну из папок:&lt;br /&gt;
&lt;br /&gt;
*C:\wildfly\&lt;br /&gt;
*C:\PayControl\&lt;br /&gt;
&lt;br /&gt;
= Процесс обновления в рамках одной версии =&lt;br /&gt;
Обновление выполняется заменой файлов модулей в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]:&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Модуль !! Пример имени файла&lt;br /&gt;
|-&lt;br /&gt;
| PC Server || &amp;lt;code&amp;gt;PayControl-services-module-3.9.452.ear&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC Pusher || &amp;lt;code&amp;gt;pc-pusher-5.5.348.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC External || &amp;lt;code&amp;gt;PayControl-interaction-rest-3.9.452.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Порядок действий:&lt;br /&gt;
# Сохраните файлы модулей текущей версии — они понадобятся для отката.&lt;br /&gt;
# Замените файлы модулей в директории &#039;&#039;deployments&#039;&#039; на новые.&lt;br /&gt;
# Дождитесь развёртывания. В директории появятся файлы-маркеры:&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.undeployed&amp;lt;/code&amp;gt; — для убранных модулей; такие файлы рекомендуется удалить;&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.deployed&amp;lt;/code&amp;gt; — для успешно развёрнутых новых модулей.&lt;br /&gt;
# Если появились файлы &amp;lt;code&amp;gt;*.failed&amp;lt;/code&amp;gt; — [[#Запуск и остановка служб|перезапустите Wildfly]].&lt;br /&gt;
&lt;br /&gt;
= Регламентное обслуживание =&lt;br /&gt;
Администратору PayControl необходимо в плановом режиме:&lt;br /&gt;
* контролировать достаточность свободного места на серверах PayControl;&lt;br /&gt;
* контролировать достаточность дискового пространства, выделенного базам данных (БД PCS и БД PCIS);&lt;br /&gt;
* своевременно заменять сертификат HTTPS сервера PCIS External;&lt;br /&gt;
* своевременно заменять сертификаты HTTPS серверов PCS и PCIS Internal (при их наличии).&lt;br /&gt;
[[Категория:Руководства]]&lt;br /&gt;
[[Категория:Серверная часть]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=893</id>
		<title>Руководство администратора PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=893"/>
		<updated>2026-07-07T18:25:12Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Вывод содержимого SOAP-запросов и ответов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Введение=&lt;br /&gt;
PayControl – программный комплекс, предназначенный для подтверждения пользователем операций в системах дистанционного банковского обслуживания и/или электронного документооборота.&lt;br /&gt;
&lt;br /&gt;
PayControl призван, в первую очередь, повысить уровень удобства подтверждения и информационной безопасности по сравнению с такими способами подтверждения как SMS, одноразовые пароли (One-Time Password), скретч-карты, MAC-токены и пр.&lt;br /&gt;
&lt;br /&gt;
При помощи PayControl могут подтверждаться волеизъявления на совершение банковских транзакций, аутентификация, создание и исполнение документов, факты получения и/или ознакомления с определённой информацией.&lt;br /&gt;
=Назначение=&lt;br /&gt;
Настоящий документ предназначен работникам организаций, выполняющим прикладные задачи по обслуживанию серверов PayControl.&lt;br /&gt;
=Общее описание=&lt;br /&gt;
Сервер PayControl функционирует на базе сервера приложений [[Wildfly]] выполняющейся в среде Java 8 и состоит из следующих частей:&lt;br /&gt;
* PayControl Server (PCS) – основной сервер PayControl. Располагается внутри локальной сети. Взаимодействует с прикладной системой. Хранит данные в БД PCS. Отправляет данные на PCIS Internal, получает данные с PCIS External.&lt;br /&gt;
* PayControl Interaction Server Internal (PCIS Internal) – сервер для отправки Push уведомлений о появлении неподтверждённой транзакции у пользователя (без содержания информации о транзакции). Как правило располагается в DMZ-зоне, имеющей доступ к сети Интернет. Требуется доступ к серверам Google и Apple. Может быть размещён в т.ч. на одном сервере с PCS или PCIS Extrnal (в зависимости от требований ИБ к ИТ инфраструктуре Банка и функциональных возможностей ИТ инфраструктуры Банка).&lt;br /&gt;
* PayControl Interaction Server External (PCIS External). С этим сервером взаимодействуют приложения на мобильных устройствах для получения информации о данных платежа и отправки результатов подтверждения транзакций. Располагается в DMZ-зоне с доступом извне. Должен иметь внешний фиксированный IP-адрес. При необходимости использования TLS, должно быть присвоено доменное имя и выпущен сертификат внешним УЦ.&lt;br /&gt;
=Запуск и остановка служб сервера PayControl=&lt;br /&gt;
==Linux==&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl stop wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Перезапуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Windows==&lt;br /&gt;
===Из графического интерфейса===&lt;br /&gt;
Запуск, остановка и перезапуск службы осуществляется из консоли управления службами сервером (консоль services.msc).&lt;br /&gt;
===С помощью командной строки===&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net start wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net stop wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=Журналирование=&lt;br /&gt;
== Расположение журналов ==&lt;br /&gt;
События работы сервера PayControl записываются в общий журнал [[Wildfly]]. По умолчанию фиксируются только ошибки PayControl.&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ОС !! Путь к журналу за текущий день&lt;br /&gt;
|-&lt;br /&gt;
| Linux || &amp;lt;code&amp;gt;/opt/wildfly/standalone/log/server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Windows || &amp;lt;code&amp;gt;C:\wildfly\standalone\log\server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Журналы за прошлые дни имеют суффикс с датой: &amp;lt;code&amp;gt;server.log.YYYY-MM-DD&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Включение вывода информационных данных работы PayControl==&lt;br /&gt;
В некоторых случаях может потребоваться вывод отладочной информации PayControl. Порядок её включения описан ниже для разных компонентов сервера PayСоntrol.&lt;br /&gt;
===Для PCS и PCIS Internal===&lt;br /&gt;
====Вывод отладочной информации====&lt;br /&gt;
Для включения вывода отладочной информации необходимо:&lt;br /&gt;
# В БД PCS или БД PCIS соответственно для нужного сервера, добавить/изменить запись в таблице pc_sys_property, установив следующие значения:&lt;br /&gt;
#* setting_name=&#039;DEBUG_INFO&#039;&lt;br /&gt;
#* setting_value = &#039;1&#039;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Примеры SQL запросов добавления записи для разных СУБД:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! СУБД !! Запрос&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Oracle || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (PC_SETTING_SEQ.NEXTVAL, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| MS SQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (NEXT VALUE FOR PC_SETTING_SEQ, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Изменение записи=====&lt;br /&gt;
Пример SQL запроса для изменения записи (для всех перечисленных СУБД):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_sys_property set setting_value = &#039;1&#039; where setting_name=&#039;DEBUG_INFO&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Вывод содержимого SOAP-запросов и ответов====&lt;br /&gt;
{{Предупреждение|Опция не работает в [[Wildfly]] версии 13.0.0-Final.}}&lt;br /&gt;
Для включения вывода содержимого SOAP-запросов и ответов службой wildfly необходимо:&lt;br /&gt;
# Добавить после блока &amp;lt;extensions&amp;gt; ... &amp;lt;/extensions&amp;gt; в файл&lt;br /&gt;
#* Linux: &amp;lt;code&amp;gt;/opt/wildfly/standalone/configuration/standalone.xml&amp;lt;/code&amp;gt; &lt;br /&gt;
#* Windows: &amp;lt;code&amp;gt;C:\wildfly\standalone\configuration\standalone.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
#: следующий блок:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;system-properties&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;org.apache.cxf.logging.enabled&amp;quot; value=&amp;quot;pretty&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/system-properties&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
===PCIS External (с версии 3.6)===&lt;br /&gt;
Начиная с версии PCIS External 3.6 компонент может журналировать запросы, приходящие на /jsonrequest_v2.&lt;br /&gt;
&lt;br /&gt;
Для включения журналирования необходимо в опции Java-машины добавить параметр &#039;&#039;paycontrol.logRequests=yes&#039;&#039; следующим образом:&lt;br /&gt;
* для Linux:&lt;br /&gt;
*: в файл /opt/wildfly/bin/standalone.conf добавить &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* для Windows:&lt;br /&gt;
*: в файл C:\wildfly\bin\standalone.conf.bat добавить &amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
затем перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
=Отправка информации о событиях=&lt;br /&gt;
Адрес для отправки информации об устройстве и событиях взаимодействия мобильного приложения или SDK PayControl с сервером PayControl устанавливается в БД PCS, таблица pc_system, поле events_post_url.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system set events_post_url=&#039;http://example.com/pc_events_reciever&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
После этого нужно перезапустить WildFly PCS для применения изменений.&lt;br /&gt;
&lt;br /&gt;
{{Предупреждение|Обязательным требованием для сбора информации о событиях является установка флага сбора информации о событиях при создании ключа, а для передачи данных об устройстве — ещё и флага сбора информации об устройстве. Подробнее — в описании API сервера.}}&lt;br /&gt;
=Установка лицензии=&lt;br /&gt;
Если установка лицензионного файла не проводилась на сервер, то он работает в демонстрационном режиме, ограничивающем возможность заведения более 20 пользователей PayControl.&lt;br /&gt;
Также при включённом выводе информационных данных работы PayControl, в журнал выводятся сообщения сообщения вида:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.utils.licenseManager.LicenseManager] (default task-2)    --- no license found in database&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- Error load License, cheking if free users count exceeded&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- ATTENTION! LICENSE NOT FOUND! You are using unlicensed demo-only version of the service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Запросом к БД==&lt;br /&gt;
Для установки лицензии необходимо выполнить SQL-запрос к БД PCS, поместив в него содержимое файла лицензии указав идентификатор системы&lt;br /&gt;
* до версии 3.5 включительно:&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set license=&#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid=&#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* с версии 3.6:&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system_params set license=&#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid=&#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Добавлением файла лицензии==&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
Файл лицензии необходимо скопировать в /opt/wildfly/ на сервер PCS.&lt;br /&gt;
===Windows===&lt;br /&gt;
Файл лицензии необходимо скопировать на сервер PCS в одну из папок:&lt;br /&gt;
&lt;br /&gt;
*C:\wildfly\&lt;br /&gt;
*C:\PayControl\&lt;br /&gt;
&lt;br /&gt;
= Процесс обновления в рамках одной версии =&lt;br /&gt;
Обновление выполняется заменой файлов модулей в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]:&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Модуль !! Пример имени файла&lt;br /&gt;
|-&lt;br /&gt;
| PC Server || &amp;lt;code&amp;gt;PayControl-services-module-3.9.452.ear&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC Pusher || &amp;lt;code&amp;gt;pc-pusher-5.5.348.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC External || &amp;lt;code&amp;gt;PayControl-interaction-rest-3.9.452.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Порядок действий:&lt;br /&gt;
# Сохраните файлы модулей текущей версии — они понадобятся для отката.&lt;br /&gt;
# Замените файлы модулей в директории &#039;&#039;deployments&#039;&#039; на новые.&lt;br /&gt;
# Дождитесь развёртывания. В директории появятся файлы-маркеры:&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.undeployed&amp;lt;/code&amp;gt; — для убранных модулей; такие файлы рекомендуется удалить;&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.deployed&amp;lt;/code&amp;gt; — для успешно развёрнутых новых модулей.&lt;br /&gt;
# Если появились файлы &amp;lt;code&amp;gt;*.failed&amp;lt;/code&amp;gt; — [[#Запуск и остановка служб|перезапустите Wildfly]].&lt;br /&gt;
&lt;br /&gt;
= Регламентное обслуживание =&lt;br /&gt;
Администратору PayControl необходимо в плановом режиме:&lt;br /&gt;
* контролировать достаточность свободного места на серверах PayControl;&lt;br /&gt;
* контролировать достаточность дискового пространства, выделенного базам данных (БД PCS и БД PCIS);&lt;br /&gt;
* своевременно заменять сертификат HTTPS сервера PCIS External;&lt;br /&gt;
* своевременно заменять сертификаты HTTPS серверов PCS и PCIS Internal (при их наличии).&lt;br /&gt;
[[Категория:Руководства]]&lt;br /&gt;
[[Категория:Серверная часть]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=892</id>
		<title>Руководство администратора PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=892"/>
		<updated>2026-07-07T18:20:53Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Журналирование */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Введение=&lt;br /&gt;
PayControl – программный комплекс, предназначенный для подтверждения пользователем операций в системах дистанционного банковского обслуживания и/или электронного документооборота.&lt;br /&gt;
&lt;br /&gt;
PayControl призван, в первую очередь, повысить уровень удобства подтверждения и информационной безопасности по сравнению с такими способами подтверждения как SMS, одноразовые пароли (One-Time Password), скретч-карты, MAC-токены и пр.&lt;br /&gt;
&lt;br /&gt;
При помощи PayControl могут подтверждаться волеизъявления на совершение банковских транзакций, аутентификация, создание и исполнение документов, факты получения и/или ознакомления с определённой информацией.&lt;br /&gt;
=Назначение=&lt;br /&gt;
Настоящий документ предназначен работникам организаций, выполняющим прикладные задачи по обслуживанию серверов PayControl.&lt;br /&gt;
=Общее описание=&lt;br /&gt;
Сервер PayControl функционирует на базе сервера приложений [[Wildfly]] выполняющейся в среде Java 8 и состоит из следующих частей:&lt;br /&gt;
* PayControl Server (PCS) – основной сервер PayControl. Располагается внутри локальной сети. Взаимодействует с прикладной системой. Хранит данные в БД PCS. Отправляет данные на PCIS Internal, получает данные с PCIS External.&lt;br /&gt;
* PayControl Interaction Server Internal (PCIS Internal) – сервер для отправки Push уведомлений о появлении неподтверждённой транзакции у пользователя (без содержания информации о транзакции). Как правило располагается в DMZ-зоне, имеющей доступ к сети Интернет. Требуется доступ к серверам Google и Apple. Может быть размещён в т.ч. на одном сервере с PCS или PCIS Extrnal (в зависимости от требований ИБ к ИТ инфраструктуре Банка и функциональных возможностей ИТ инфраструктуры Банка).&lt;br /&gt;
* PayControl Interaction Server External (PCIS External). С этим сервером взаимодействуют приложения на мобильных устройствах для получения информации о данных платежа и отправки результатов подтверждения транзакций. Располагается в DMZ-зоне с доступом извне. Должен иметь внешний фиксированный IP-адрес. При необходимости использования TLS, должно быть присвоено доменное имя и выпущен сертификат внешним УЦ.&lt;br /&gt;
=Запуск и остановка служб сервера PayControl=&lt;br /&gt;
==Linux==&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl stop wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Перезапуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Windows==&lt;br /&gt;
===Из графического интерфейса===&lt;br /&gt;
Запуск, остановка и перезапуск службы осуществляется из консоли управления службами сервером (консоль services.msc).&lt;br /&gt;
===С помощью командной строки===&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net start wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net stop wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=Журналирование=&lt;br /&gt;
== Расположение журналов ==&lt;br /&gt;
События работы сервера PayControl записываются в общий журнал [[Wildfly]]. По умолчанию фиксируются только ошибки PayControl.&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ОС !! Путь к журналу за текущий день&lt;br /&gt;
|-&lt;br /&gt;
| Linux || &amp;lt;code&amp;gt;/opt/wildfly/standalone/log/server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Windows || &amp;lt;code&amp;gt;C:\wildfly\standalone\log\server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Журналы за прошлые дни имеют суффикс с датой: &amp;lt;code&amp;gt;server.log.YYYY-MM-DD&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Включение вывода информационных данных работы PayControl==&lt;br /&gt;
В некоторых случаях может потребоваться вывод отладочной информации PayControl. Порядок её включения описан ниже для разных компонентов сервера PayСоntrol.&lt;br /&gt;
===Для PCS и PCIS Internal===&lt;br /&gt;
====Вывод отладочной информации====&lt;br /&gt;
Для включения вывода отладочной информации необходимо:&lt;br /&gt;
# В БД PCS или БД PCIS соответственно для нужного сервера, добавить/изменить запись в таблице pc_sys_property, установив следующие значения:&lt;br /&gt;
#* setting_name=&#039;DEBUG_INFO&#039;&lt;br /&gt;
#* setting_value = &#039;1&#039;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Примеры SQL запросов добавления записи для разных СУБД:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! СУБД !! Запрос&lt;br /&gt;
|-&lt;br /&gt;
| PostgreSQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Oracle || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (PC_SETTING_SEQ.NEXTVAL, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| MS SQL || &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot; inline&amp;gt;insert into pc_sys_property values (NEXT VALUE FOR PC_SETTING_SEQ, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Изменение записи=====&lt;br /&gt;
Пример SQL запроса для изменения записи (для всех перечисленных СУБД):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_sys_property set setting_value = &#039;1&#039; where setting_name=&#039;DEBUG_INFO&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Вывод содержимого SOAP-запросов и ответов====&lt;br /&gt;
{{Предупреждение|Включение опции вывода содержимого SOAP-запросов не работает в [[Wildfly]] версии 13.0.0-Final.}}&lt;br /&gt;
Для включения вывода содержимого SOAP-запросов и ответов службой wildfly необходимо:&lt;br /&gt;
# Добавить после блока &amp;lt;extensions&amp;gt; ... &amp;lt;/extensions&amp;gt; в файл&lt;br /&gt;
#* Linux:&lt;br /&gt;
#*: /opt/wildfly/standalone/configuration/standalone.xml&lt;br /&gt;
#* Windows:&lt;br /&gt;
#*: C:\wildfly\standalone\configuration\standalone.xml&lt;br /&gt;
#: следующий блок:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;system-properties&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;org.apache.cxf.logging.enabled&amp;quot; value=&amp;quot;pretty&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/system-properties&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
===PCIS External (с версии 3.6)===&lt;br /&gt;
Начиная с версии PCIS External 3.6 компонент может журналировать запросы, приходящие на /jsonrequest_v2.&lt;br /&gt;
&lt;br /&gt;
Для включения журналирования необходимо в опции Java-машины добавить параметр &#039;&#039;paycontrol.logRequests=yes&#039;&#039; следующим образом:&lt;br /&gt;
* для Linux:&lt;br /&gt;
*: в файл /opt/wildfly/bin/standalone.conf добавить &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* для Windows:&lt;br /&gt;
*: в файл C:\wildfly\bin\standalone.conf.bat добавить &amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
затем перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
=Отправка информации о событиях=&lt;br /&gt;
Адрес для отправки информации об устройстве и событиях взаимодействия мобильного приложения или SDK PayControl с сервером PayControl устанавливается в БД PCS, таблица pc_system, поле events_post_url.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system set events_post_url=&#039;http://example.com/pc_events_reciever&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
После этого нужно перезапустить WildFly PCS для применения изменений.&lt;br /&gt;
&lt;br /&gt;
{{Предупреждение|Обязательным требованием для сбора информации о событиях является установка флага сбора информации о событиях при создании ключа, а для передачи данных об устройстве — ещё и флага сбора информации об устройстве. Подробнее — в описании API сервера.}}&lt;br /&gt;
=Установка лицензии=&lt;br /&gt;
Если установка лицензионного файла не проводилась на сервер, то он работает в демонстрационном режиме, ограничивающем возможность заведения более 20 пользователей PayControl.&lt;br /&gt;
Также при включённом выводе информационных данных работы PayControl, в журнал выводятся сообщения сообщения вида:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.utils.licenseManager.LicenseManager] (default task-2)    --- no license found in database&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- Error load License, cheking if free users count exceeded&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- ATTENTION! LICENSE NOT FOUND! You are using unlicensed demo-only version of the service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Запросом к БД==&lt;br /&gt;
Для установки лицензии необходимо выполнить SQL-запрос к БД PCS, поместив в него содержимое файла лицензии указав идентификатор системы&lt;br /&gt;
* до версии 3.5 включительно:&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set license=&#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid=&#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* с версии 3.6:&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system_params set license=&#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid=&#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Добавлением файла лицензии==&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
Файл лицензии необходимо скопировать в /opt/wildfly/ на сервер PCS.&lt;br /&gt;
===Windows===&lt;br /&gt;
Файл лицензии необходимо скопировать на сервер PCS в одну из папок:&lt;br /&gt;
&lt;br /&gt;
*C:\wildfly\&lt;br /&gt;
*C:\PayControl\&lt;br /&gt;
&lt;br /&gt;
= Процесс обновления в рамках одной версии =&lt;br /&gt;
Обновление выполняется заменой файлов модулей в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]:&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Модуль !! Пример имени файла&lt;br /&gt;
|-&lt;br /&gt;
| PC Server || &amp;lt;code&amp;gt;PayControl-services-module-3.9.452.ear&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC Pusher || &amp;lt;code&amp;gt;pc-pusher-5.5.348.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC External || &amp;lt;code&amp;gt;PayControl-interaction-rest-3.9.452.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Порядок действий:&lt;br /&gt;
# Сохраните файлы модулей текущей версии — они понадобятся для отката.&lt;br /&gt;
# Замените файлы модулей в директории &#039;&#039;deployments&#039;&#039; на новые.&lt;br /&gt;
# Дождитесь развёртывания. В директории появятся файлы-маркеры:&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.undeployed&amp;lt;/code&amp;gt; — для убранных модулей; такие файлы рекомендуется удалить;&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.deployed&amp;lt;/code&amp;gt; — для успешно развёрнутых новых модулей.&lt;br /&gt;
# Если появились файлы &amp;lt;code&amp;gt;*.failed&amp;lt;/code&amp;gt; — [[#Запуск и остановка служб|перезапустите Wildfly]].&lt;br /&gt;
&lt;br /&gt;
= Регламентное обслуживание =&lt;br /&gt;
Администратору PayControl необходимо в плановом режиме:&lt;br /&gt;
* контролировать достаточность свободного места на серверах PayControl;&lt;br /&gt;
* контролировать достаточность дискового пространства, выделенного базам данных (БД PCS и БД PCIS);&lt;br /&gt;
* своевременно заменять сертификат HTTPS сервера PCIS External;&lt;br /&gt;
* своевременно заменять сертификаты HTTPS серверов PCS и PCIS Internal (при их наличии).&lt;br /&gt;
[[Категория:Руководства]]&lt;br /&gt;
[[Категория:Серверная часть]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=891</id>
		<title>Руководство администратора PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=891"/>
		<updated>2026-07-07T18:11:32Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Доступ к данным журнала */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Введение=&lt;br /&gt;
PayControl – программный комплекс, предназначенный для подтверждения пользователем операций в системах дистанционного банковского обслуживания и/или электронного документооборота.&lt;br /&gt;
&lt;br /&gt;
PayControl призван, в первую очередь, повысить уровень удобства подтверждения и информационной безопасности по сравнению с такими способами подтверждения как SMS, одноразовые пароли (One-Time Password), скретч-карты, MAC-токены и пр.&lt;br /&gt;
&lt;br /&gt;
При помощи PayControl могут подтверждаться волеизъявления на совершение банковских транзакций, аутентификация, создание и исполнение документов, факты получения и/или ознакомления с определённой информацией.&lt;br /&gt;
=Назначение=&lt;br /&gt;
Настоящий документ предназначен работникам организаций, выполняющим прикладные задачи по обслуживанию серверов PayControl.&lt;br /&gt;
=Общее описание=&lt;br /&gt;
Сервер PayControl функционирует на базе сервера приложений [[Wildfly]] выполняющейся в среде Java 8 и состоит из следующих частей:&lt;br /&gt;
* PayControl Server (PCS) – основной сервер PayControl. Располагается внутри локальной сети. Взаимодействует с прикладной системой. Хранит данные в БД PCS. Отправляет данные на PCIS Internal, получает данные с PCIS External.&lt;br /&gt;
* PayControl Interaction Server Internal (PCIS Internal) – сервер для отправки Push уведомлений о появлении неподтверждённой транзакции у пользователя (без содержания информации о транзакции). Как правило располагается в DMZ-зоне, имеющей доступ к сети Интернет. Требуется доступ к серверам Google и Apple. Может быть размещён в т.ч. на одном сервере с PCS или PCIS Extrnal (в зависимости от требований ИБ к ИТ инфраструктуре Банка и функциональных возможностей ИТ инфраструктуры Банка).&lt;br /&gt;
* PayControl Interaction Server External (PCIS External). С этим сервером взаимодействуют приложения на мобильных устройствах для получения информации о данных платежа и отправки результатов подтверждения транзакций. Располагается в DMZ-зоне с доступом извне. Должен иметь внешний фиксированный IP-адрес. При необходимости использования TLS, должно быть присвоено доменное имя и выпущен сертификат внешним УЦ.&lt;br /&gt;
=Запуск и остановка служб сервера PayControl=&lt;br /&gt;
==Linux==&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl stop wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Перезапуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Windows==&lt;br /&gt;
===Из графического интерфейса===&lt;br /&gt;
Запуск, остановка и перезапуск службы осуществляется из консоли управления службами сервером (консоль services.msc).&lt;br /&gt;
===С помощью командной строки===&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net start wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net stop wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=Журналирование=&lt;br /&gt;
== Расположение журналов ==&lt;br /&gt;
События работы сервера PayControl записываются в общий журнал [[Wildfly]]. По умолчанию фиксируются только ошибки PayControl.&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! ОС !! Путь к журналу за текущий день&lt;br /&gt;
|-&lt;br /&gt;
| Linux || &amp;lt;code&amp;gt;/opt/wildfly/standalone/log/server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Windows || &amp;lt;code&amp;gt;C:\wildfly\standalone\log\server.log&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Журналы за прошлые дни имеют суффикс с датой: &amp;lt;code&amp;gt;server.log.YYYY-MM-DD&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Включение вывода информационных данных работы PayControl==&lt;br /&gt;
В некоторых случаях может потребоваться вывод отладочной информации PayControl. Порядок её включения описан ниже для разных компонентов сервера PayСоntrol.&lt;br /&gt;
===Для PCS и PCIS Internal===&lt;br /&gt;
====Вывод отладочной информации====&lt;br /&gt;
Для включения вывода отладочной информации необходимо:&lt;br /&gt;
# В БД PCS или БД PCIS соответственно для нужного сервера, добавить/изменить запись в таблице pc_sys_property, установив следующие значения:&lt;br /&gt;
#* setting_name=&#039;DEBUG_INFO&#039;&lt;br /&gt;
#* setting_value = &#039;1&#039;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
=====Добавление записи=====&lt;br /&gt;
Примеры SQL запросов добавления записи для разных СУБД:&lt;br /&gt;
* PostgreSQL &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Oracle &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;insert into pc_sys_property values (PC_SETTING_SEQ.NEXTVAL, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* MS SQL &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;insert into pc_sys_property values (NEXT VALUE FOR PC_SETTING_SEQ, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====Изменение записи=====&lt;br /&gt;
Пример SQL запроса для изменения записи (подходит для всех перечисленных в предыдущем подразделе СУБД):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_sys_property set setting_value = &#039;1&#039; where setting_name=&#039;DEBUG_INFO&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====Вывод содержимого SOAP-запросов и ответов====&lt;br /&gt;
{{Предупреждение|Включение опции вывода содержимого SOAP-запросов не работает в [[Wildfly]] версии 13.0.0-Final.}}&lt;br /&gt;
Для включения вывода содержимого SOAP-запросов и ответов службой wildfly необходимо:&lt;br /&gt;
# Добавить после блока &amp;lt;extensions&amp;gt; ... &amp;lt;/extensions&amp;gt; в файл&lt;br /&gt;
#* Linux:&lt;br /&gt;
#*: /opt/wildfly/standalone/configuration/standalone.xml&lt;br /&gt;
#* Windows:&lt;br /&gt;
#*: C:\wildfly\standalone\configuration\standalone.xml&lt;br /&gt;
#: следующий блок:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;system-properties&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;org.apache.cxf.logging.enabled&amp;quot; value=&amp;quot;pretty&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/system-properties&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
===PCIS External (с версии 3.6)===&lt;br /&gt;
Начиная с версии PCIS External 3.6 компонент может журналировать запросы, приходящие на /jsonrequest_v2.&lt;br /&gt;
&lt;br /&gt;
Для включения журналирования необходимо в опции Java-машины добавить параметр &#039;&#039;paycontrol.logRequests=yes&#039;&#039; следующим образом:&lt;br /&gt;
* для Linux:&lt;br /&gt;
*: в файл /opt/wildfly/bin/standalone.conf добавить &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* для Windows:&lt;br /&gt;
*: в файл C:\wildfly\bin\standalone.conf.bat добавить &amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
затем перезапустить службу wildfly.&lt;br /&gt;
=Отправка информации о событиях=&lt;br /&gt;
Адрес для отправки информации об устройстве и событиях взаимодействия мобильного приложения или SDK PayControl с сервером PayControl устанавливается в БД PCS, таблица pc_system, поле events_post_url.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system set events_post_url=&#039;http://example.com/pc_events_reciever&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
После этого нужно перезапустить WildFly PCS для применения изменений.&lt;br /&gt;
&lt;br /&gt;
{{Предупреждение|Обязательным требованием для сбора информации о событиях является установка флага сбора информации о событиях при создании ключа, а для передачи данных об устройстве — ещё и флага сбора информации об устройстве. Подробнее — в описании API сервера.}}&lt;br /&gt;
=Установка лицензии=&lt;br /&gt;
Если установка лицензионного файла не проводилась на сервер, то он работает в демонстрационном режиме, ограничивающем возможность заведения более 20 пользователей PayControl.&lt;br /&gt;
Также при включённом выводе информационных данных работы PayControl, в журнал выводятся сообщения сообщения вида:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.utils.licenseManager.LicenseManager] (default task-2)    --- no license found in database&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- Error load License, cheking if free users count exceeded&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- ATTENTION! LICENSE NOT FOUND! You are using unlicensed demo-only version of the service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Запросом к БД==&lt;br /&gt;
Для установки лицензии необходимо выполнить SQL-запрос к БД PCS, поместив в него содержимое файла лицензии указав идентификатор системы&lt;br /&gt;
* до версии 3.5 включительно:&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set license=&#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid=&#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* с версии 3.6:&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system_params set license=&#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid=&#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Добавлением файла лицензии==&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
Файл лицензии необходимо скопировать в /opt/wildfly/ на сервер PCS.&lt;br /&gt;
===Windows===&lt;br /&gt;
Файл лицензии необходимо скопировать на сервер PCS в одну из папок:&lt;br /&gt;
&lt;br /&gt;
*C:\wildfly\&lt;br /&gt;
*C:\PayControl\&lt;br /&gt;
&lt;br /&gt;
= Процесс обновления в рамках одной версии =&lt;br /&gt;
Обновление выполняется заменой файлов модулей в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]:&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Модуль !! Пример имени файла&lt;br /&gt;
|-&lt;br /&gt;
| PC Server || &amp;lt;code&amp;gt;PayControl-services-module-3.9.452.ear&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC Pusher || &amp;lt;code&amp;gt;pc-pusher-5.5.348.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC External || &amp;lt;code&amp;gt;PayControl-interaction-rest-3.9.452.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Порядок действий:&lt;br /&gt;
# Сохраните файлы модулей текущей версии — они понадобятся для отката.&lt;br /&gt;
# Замените файлы модулей в директории &#039;&#039;deployments&#039;&#039; на новые.&lt;br /&gt;
# Дождитесь развёртывания. В директории появятся файлы-маркеры:&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.undeployed&amp;lt;/code&amp;gt; — для убранных модулей; такие файлы рекомендуется удалить;&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.deployed&amp;lt;/code&amp;gt; — для успешно развёрнутых новых модулей.&lt;br /&gt;
# Если появились файлы &amp;lt;code&amp;gt;*.failed&amp;lt;/code&amp;gt; — [[#Запуск и остановка служб|перезапустите Wildfly]].&lt;br /&gt;
&lt;br /&gt;
= Регламентное обслуживание =&lt;br /&gt;
Администратору PayControl необходимо в плановом режиме:&lt;br /&gt;
* контролировать достаточность свободного места на серверах PayControl;&lt;br /&gt;
* контролировать достаточность дискового пространства, выделенного базам данных (БД PCS и БД PCIS);&lt;br /&gt;
* своевременно заменять сертификат HTTPS сервера PCIS External;&lt;br /&gt;
* своевременно заменять сертификаты HTTPS серверов PCS и PCIS Internal (при их наличии).&lt;br /&gt;
[[Категория:Руководства]]&lt;br /&gt;
[[Категория:Серверная часть]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=890</id>
		<title>Руководство администратора PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=890"/>
		<updated>2026-07-07T18:07:54Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Введение=&lt;br /&gt;
PayControl – программный комплекс, предназначенный для подтверждения пользователем операций в системах дистанционного банковского обслуживания и/или электронного документооборота.&lt;br /&gt;
&lt;br /&gt;
PayControl призван, в первую очередь, повысить уровень удобства подтверждения и информационной безопасности по сравнению с такими способами подтверждения как SMS, одноразовые пароли (One-Time Password), скретч-карты, MAC-токены и пр.&lt;br /&gt;
&lt;br /&gt;
При помощи PayControl могут подтверждаться волеизъявления на совершение банковских транзакций, аутентификация, создание и исполнение документов, факты получения и/или ознакомления с определённой информацией.&lt;br /&gt;
=Назначение=&lt;br /&gt;
Настоящий документ предназначен работникам организаций, выполняющим прикладные задачи по обслуживанию серверов PayControl.&lt;br /&gt;
=Общее описание=&lt;br /&gt;
Сервер PayControl функционирует на базе сервера приложений [[Wildfly]] выполняющейся в среде Java 8 и состоит из следующих частей:&lt;br /&gt;
* PayControl Server (PCS) – основной сервер PayControl. Располагается внутри локальной сети. Взаимодействует с прикладной системой. Хранит данные в БД PCS. Отправляет данные на PCIS Internal, получает данные с PCIS External.&lt;br /&gt;
* PayControl Interaction Server Internal (PCIS Internal) – сервер для отправки Push уведомлений о появлении неподтверждённой транзакции у пользователя (без содержания информации о транзакции). Как правило располагается в DMZ-зоне, имеющей доступ к сети Интернет. Требуется доступ к серверам Google и Apple. Может быть размещён в т.ч. на одном сервере с PCS или PCIS Extrnal (в зависимости от требований ИБ к ИТ инфраструктуре Банка и функциональных возможностей ИТ инфраструктуры Банка).&lt;br /&gt;
* PayControl Interaction Server External (PCIS External). С этим сервером взаимодействуют приложения на мобильных устройствах для получения информации о данных платежа и отправки результатов подтверждения транзакций. Располагается в DMZ-зоне с доступом извне. Должен иметь внешний фиксированный IP-адрес. При необходимости использования TLS, должно быть присвоено доменное имя и выпущен сертификат внешним УЦ.&lt;br /&gt;
=Запуск и остановка служб сервера PayControl=&lt;br /&gt;
==Linux==&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl stop wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Перезапуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Windows==&lt;br /&gt;
===Из графического интерфейса===&lt;br /&gt;
Запуск, остановка и перезапуск службы осуществляется из консоли управления службами сервером (консоль services.msc).&lt;br /&gt;
===С помощью командной строки===&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net start wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net stop wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=Журналирование=&lt;br /&gt;
==Доступ к данным журнала==&lt;br /&gt;
Журнал работы сервера PayControl записывается общий журнал функционирования [[Wildfly]]. В общем случае записываются только ошибки PayControl, при их возникновении.&lt;br /&gt;
&lt;br /&gt;
Файлы журналов за текущий день доступны по следующему пути:&lt;br /&gt;
* Linux:&lt;br /&gt;
*: /opt/wildfly/standalone/log/server.log&lt;br /&gt;
* Windows:&lt;br /&gt;
*: C:\wildfly\standalone\log\server.log&lt;br /&gt;
Для просмотра журнала за другие дни, нужно добавить к имени файла требуемую дату в формате server.log.YYYY-MM-DD&lt;br /&gt;
==Включение вывода информационных данных работы PayControl==&lt;br /&gt;
В некоторых случаях может потребоваться вывод отладочной информации PayControl. Порядок её включения описан ниже для разных компонентов сервера PayСоntrol.&lt;br /&gt;
===Для PCS и PCIS Internal===&lt;br /&gt;
====Вывод отладочной информации====&lt;br /&gt;
Для включения вывода отладочной информации необходимо:&lt;br /&gt;
# В БД PCS или БД PCIS соответственно для нужного сервера, добавить/изменить запись в таблице pc_sys_property, установив следующие значения:&lt;br /&gt;
#* setting_name=&#039;DEBUG_INFO&#039;&lt;br /&gt;
#* setting_value = &#039;1&#039;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
=====Добавление записи=====&lt;br /&gt;
Примеры SQL запросов добавления записи для разных СУБД:&lt;br /&gt;
* PostgreSQL &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Oracle &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;insert into pc_sys_property values (PC_SETTING_SEQ.NEXTVAL, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* MS SQL &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;insert into pc_sys_property values (NEXT VALUE FOR PC_SETTING_SEQ, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====Изменение записи=====&lt;br /&gt;
Пример SQL запроса для изменения записи (подходит для всех перечисленных в предыдущем подразделе СУБД):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_sys_property set setting_value = &#039;1&#039; where setting_name=&#039;DEBUG_INFO&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====Вывод содержимого SOAP-запросов и ответов====&lt;br /&gt;
{{Предупреждение|Включение опции вывода содержимого SOAP-запросов не работает в [[Wildfly]] версии 13.0.0-Final.}}&lt;br /&gt;
Для включения вывода содержимого SOAP-запросов и ответов службой wildfly необходимо:&lt;br /&gt;
# Добавить после блока &amp;lt;extensions&amp;gt; ... &amp;lt;/extensions&amp;gt; в файл&lt;br /&gt;
#* Linux:&lt;br /&gt;
#*: /opt/wildfly/standalone/configuration/standalone.xml&lt;br /&gt;
#* Windows:&lt;br /&gt;
#*: C:\wildfly\standalone\configuration\standalone.xml&lt;br /&gt;
#: следующий блок:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;system-properties&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;org.apache.cxf.logging.enabled&amp;quot; value=&amp;quot;pretty&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/system-properties&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
===PCIS External (с версии 3.6)===&lt;br /&gt;
Начиная с версии PCIS External 3.6 компонент может журналировать запросы, приходящие на /jsonrequest_v2.&lt;br /&gt;
&lt;br /&gt;
Для включения журналирования необходимо в опции Java-машины добавить параметр &#039;&#039;paycontrol.logRequests=yes&#039;&#039; следующим образом:&lt;br /&gt;
* для Linux:&lt;br /&gt;
*: в файл /opt/wildfly/bin/standalone.conf добавить &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* для Windows:&lt;br /&gt;
*: в файл C:\wildfly\bin\standalone.conf.bat добавить &amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
затем перезапустить службу wildfly.&lt;br /&gt;
=Отправка информации о событиях=&lt;br /&gt;
Адрес для отправки информации об устройстве и событиях взаимодействия мобильного приложения или SDK PayControl с сервером PayControl устанавливается в БД PCS, таблица pc_system, поле events_post_url.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system set events_post_url=&#039;http://example.com/pc_events_reciever&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
После этого нужно перезапустить WildFly PCS для применения изменений.&lt;br /&gt;
&lt;br /&gt;
{{Предупреждение|Обязательным требованием для сбора информации о событиях является установка флага сбора информации о событиях при создании ключа, а для передачи данных об устройстве — ещё и флага сбора информации об устройстве. Подробнее — в описании API сервера.}}&lt;br /&gt;
=Установка лицензии=&lt;br /&gt;
Если установка лицензионного файла не проводилась на сервер, то он работает в демонстрационном режиме, ограничивающем возможность заведения более 20 пользователей PayControl.&lt;br /&gt;
Также при включённом выводе информационных данных работы PayControl, в журнал выводятся сообщения сообщения вида:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.utils.licenseManager.LicenseManager] (default task-2)    --- no license found in database&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- Error load License, cheking if free users count exceeded&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- ATTENTION! LICENSE NOT FOUND! You are using unlicensed demo-only version of the service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Запросом к БД==&lt;br /&gt;
Для установки лицензии необходимо выполнить SQL-запрос к БД PCS, поместив в него содержимое файла лицензии указав идентификатор системы&lt;br /&gt;
* до версии 3.5 включительно:&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set license=&#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid=&#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* с версии 3.6:&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system_params set license=&#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid=&#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Добавлением файла лицензии==&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
Файл лицензии необходимо скопировать в /opt/wildfly/ на сервер PCS.&lt;br /&gt;
===Windows===&lt;br /&gt;
Файл лицензии необходимо скопировать на сервер PCS в одну из папок:&lt;br /&gt;
&lt;br /&gt;
*C:\wildfly\&lt;br /&gt;
*C:\PayControl\&lt;br /&gt;
&lt;br /&gt;
= Процесс обновления в рамках одной версии =&lt;br /&gt;
Обновление выполняется заменой файлов модулей в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]:&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Модуль !! Пример имени файла&lt;br /&gt;
|-&lt;br /&gt;
| PC Server || &amp;lt;code&amp;gt;PayControl-services-module-3.9.452.ear&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC Pusher || &amp;lt;code&amp;gt;pc-pusher-5.5.348.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC External || &amp;lt;code&amp;gt;PayControl-interaction-rest-3.9.452.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Порядок действий:&lt;br /&gt;
# Сохраните файлы модулей текущей версии — они понадобятся для отката.&lt;br /&gt;
# Замените файлы модулей в директории &#039;&#039;deployments&#039;&#039; на новые.&lt;br /&gt;
# Дождитесь развёртывания. В директории появятся файлы-маркеры:&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.undeployed&amp;lt;/code&amp;gt; — для убранных модулей; такие файлы рекомендуется удалить;&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.deployed&amp;lt;/code&amp;gt; — для успешно развёрнутых новых модулей.&lt;br /&gt;
# Если появились файлы &amp;lt;code&amp;gt;*.failed&amp;lt;/code&amp;gt; — [[#Запуск и остановка служб|перезапустите Wildfly]].&lt;br /&gt;
&lt;br /&gt;
= Регламентное обслуживание =&lt;br /&gt;
Администратору PayControl необходимо в плановом режиме:&lt;br /&gt;
* контролировать достаточность свободного места на серверах PayControl;&lt;br /&gt;
* контролировать достаточность дискового пространства, выделенного базам данных (БД PCS и БД PCIS);&lt;br /&gt;
* своевременно заменять сертификат HTTPS сервера PCIS External;&lt;br /&gt;
* своевременно заменять сертификаты HTTPS серверов PCS и PCIS Internal (при их наличии).&lt;br /&gt;
[[Категория:Руководства]]&lt;br /&gt;
[[Категория:Серверная часть]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=889</id>
		<title>Руководство администратора PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=889"/>
		<updated>2026-07-07T18:06:06Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Процесс обновления в рамках одной версии */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Введение=&lt;br /&gt;
PayControl – программный комплекс, предназначенный для подтверждения пользователем операций в системах дистанционного банковского обслуживания и/или электронного документооборота.&lt;br /&gt;
&lt;br /&gt;
PayControl призван, в первую очередь, повысить уровень удобства подтверждения и информационной безопасности по сравнению с такими способами подтверждения как SMS, одноразовые пароли (One-Time Password), скретч-карты, MAC-токены и пр.&lt;br /&gt;
&lt;br /&gt;
При помощи PayControl могут подтверждаться волеизъявления на совершение банковских транзакций, аутентификация, создание и исполнение документов, факты получения и/или ознакомления с определённой информацией.&lt;br /&gt;
=Назначение=&lt;br /&gt;
Настоящий документ предназначен работникам организаций, выполняющим прикладные задачи по обслуживанию серверов PayControl.&lt;br /&gt;
=Общее описание=&lt;br /&gt;
Сервер PayControl функционирует на базе сервера приложений [[Wildfly]] выполняющейся в среде Java 8 и состоит из следующих частей:&lt;br /&gt;
* PayControl Server (PCS) – основной сервер PayControl. Располагается внутри локальной сети. Взаимодействует с прикладной системой. Хранит данные в БД PCS. Отправляет данные на PCIS Internal, получает данные с PCIS External.&lt;br /&gt;
* PayControl Interaction Server Internal (PCIS Internal) – сервер для отправки Push уведомлений о появлении неподтверждённой транзакции у пользователя (без содержания информации о транзакции). Как правило располагается в DMZ-зоне, имеющей доступ к сети Интернет. Требуется доступ к серверам Google и Apple. Может быть размещён в т.ч. на одном сервере с PCS или PCIS Extrnal (в зависимости от требований ИБ к ИТ инфраструктуре Банка и функциональных возможностей ИТ инфраструктуры Банка).&lt;br /&gt;
* PayControl Interaction Server External (PCIS External). С этим сервером взаимодействуют приложения на мобильных устройствах для получения информации о данных платежа и отправки результатов подтверждения транзакций. Располагается в DMZ-зоне с доступом извне. Должен иметь внешний фиксированный IP-адрес. При необходимости использования TLS, должно быть присвоено доменное имя и выпущен сертификат внешним УЦ.&lt;br /&gt;
=Запуск и остановка служб сервера PayControl=&lt;br /&gt;
==Linux==&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl stop wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Перезапуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Windows==&lt;br /&gt;
===Из графического интерфейса===&lt;br /&gt;
Запуск, остановка и перезапуск службы осуществляется из консоли управления службами сервером (консоль services.msc).&lt;br /&gt;
===С помощью командной строки===&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net start wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net stop wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=Журналирование=&lt;br /&gt;
==Доступ к данным журнала==&lt;br /&gt;
Журнал работы сервера PayControl записывается общий журнал функционирования [[Wildfly]]. В общем случае записываются только ошибки PayControl, при их возникновении.&lt;br /&gt;
&lt;br /&gt;
Файлы журналов за текущий день доступны по следующему пути:&lt;br /&gt;
* Linux:&lt;br /&gt;
*: /opt/wildfly/standalone/log/server.log&lt;br /&gt;
* Windows:&lt;br /&gt;
*: C:\wildfly\standalone\log\server.log&lt;br /&gt;
Для просмотра журнала за другие дни, нужно добавить к имени файла требуемую дату в формате server.log.YYYY-MM-DD&lt;br /&gt;
==Включение вывода информационных данных работы PayControl==&lt;br /&gt;
В некоторых случаях может потребоваться вывод отладочной информации PayControl. Порядок её включения описан ниже для разных компонентов сервера PayСоntrol.&lt;br /&gt;
===Для PCS и PCIS Internal===&lt;br /&gt;
====Вывод отладочной информации====&lt;br /&gt;
Для включения вывода отладочной информации необходимо:&lt;br /&gt;
# В БД PCS или БД PCIS соответственно для нужного сервера, добавить/изменить запись в таблице pc_sys_property, установив следующие значения:&lt;br /&gt;
#* setting_name=&#039;DEBUG_INFO&#039;&lt;br /&gt;
#* setting_value = &#039;1&#039;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
=====Добавление записи=====&lt;br /&gt;
Примеры SQL запросов добавления записи для разных СУБД:&lt;br /&gt;
* PostgreSQL &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Oracle &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;insert into pc_sys_property values (PC_SETTING_SEQ.NEXTVAL, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* MS SQL &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;insert into pc_sys_property values (NEXT VALUE FOR PC_SETTING_SEQ, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====Изменение записи=====&lt;br /&gt;
Пример SQL запроса для изменения записи (подходит для всех перечисленных в предыдущем подразделе СУБД):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_sys_property set setting_value = &#039;1&#039; where setting_name=&#039;DEBUG_INFO&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====Вывод содержимого SOAP-запросов и ответов====&lt;br /&gt;
{{Предупреждение|Включение опции вывода содержимого SOAP-запросов не работает в [[Wildfly]] версии 13.0.0-Final.}}&lt;br /&gt;
Для включения вывода содержимого SOAP-запросов и ответов службой wildfly необходимо:&lt;br /&gt;
# Добавить после блока &amp;lt;extensions&amp;gt; ... &amp;lt;/extensions&amp;gt; в файл&lt;br /&gt;
#* Linux:&lt;br /&gt;
#*: /opt/wildfly/standalone/configuration/standalone.xml&lt;br /&gt;
#* Windows:&lt;br /&gt;
#*: C:\wildfly\standalone\configuration\standalone.xml&lt;br /&gt;
#: следующий блок:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;system-properties&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;org.apache.cxf.logging.enabled&amp;quot; value=&amp;quot;pretty&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/system-properties&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
===PCIS External (с версии 3.6)===&lt;br /&gt;
Начиная с версии PCIS External 3.6 компонент может журналировать запросы, приходящие на /jsonrequest_v2.&lt;br /&gt;
&lt;br /&gt;
Для включения журналирования необходимо в опции Java-машины добавить параметр &#039;&#039;paycontrol.logRequests=yes&#039;&#039; следующим образом:&lt;br /&gt;
* для Linux:&lt;br /&gt;
*: в файл /opt/wildfly/bin/standalone.conf добавить &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* для Windows:&lt;br /&gt;
*: в файл C:\wildfly\bin\standalone.conf.bat добавить &amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
затем перезапустить службу wildfly.&lt;br /&gt;
=Отправка информации о событиях=&lt;br /&gt;
Адрес для отправки информации об устройстве и событиях взаимодействия мобильного приложения или SDK PayControl с сервером PayControl устанавливается в БД PCS, таблица pc_system, поле events_post_url.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system set events_post_url=&#039;http://example.com/pc_events_reciever&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
После этого нужно перезапустить WildFly PCS для применения изменений.&lt;br /&gt;
&lt;br /&gt;
{{Предупреждение|Обязательным требованием для сбора информации о событиях является установка флага сбора информации о событиях при создании ключа, а для передачи данных об устройстве — ещё и флага сбора информации об устройстве. Подробнее — в описании API сервера.}}&lt;br /&gt;
=Установка лицензии=&lt;br /&gt;
Если установка лицензионного файла не проводилась на сервер, то он работает в демонстрационном режиме, ограничивающем возможность заведения более 20 пользователей PayControl.&lt;br /&gt;
Также при включённом выводе информационных данных работы PayControl, в журнал выводятся сообщения сообщения вида:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.utils.licenseManager.LicenseManager] (default task-2)    --- no license found in database&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- Error load License, cheking if free users count exceeded&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- ATTENTION! LICENSE NOT FOUND! You are using unlicensed demo-only version of the service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Запросом к БД==&lt;br /&gt;
Для установки лицензии необходимо выполнить SQL-запрос к БД PCS, поместив в него содержимое файла лицензии указав идентификатор системы&lt;br /&gt;
* до версии 3.5 включительно:&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set license=&#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid=&#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* с версии 3.6:&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system_params set license=&#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid=&#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Добавлением файла лицензии==&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
Файл лицензии необходимо скопировать в /opt/wildfly/ на сервер PCS.&lt;br /&gt;
===Windows===&lt;br /&gt;
Файл лицензии необходимо скопировать на сервер PCS в одну из папок:&lt;br /&gt;
&lt;br /&gt;
*C:\wildfly\&lt;br /&gt;
*C:\PayControl\&lt;br /&gt;
&lt;br /&gt;
= Процесс обновления в рамках одной версии =&lt;br /&gt;
Обновление выполняется заменой файлов модулей в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]:&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Модуль !! Пример имени файла&lt;br /&gt;
|-&lt;br /&gt;
| PC Server || &amp;lt;code&amp;gt;PayControl-services-module-3.9.452.ear&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC Pusher || &amp;lt;code&amp;gt;pc-pusher-5.5.348.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PC External || &amp;lt;code&amp;gt;PayControl-interaction-rest-3.9.452.war&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Порядок действий:&lt;br /&gt;
# Сохраните файлы модулей текущей версии — они понадобятся для отката.&lt;br /&gt;
# Замените файлы модулей в директории &#039;&#039;deployments&#039;&#039; на новые.&lt;br /&gt;
# Дождитесь развёртывания. В директории появятся файлы-маркеры:&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.undeployed&amp;lt;/code&amp;gt; — для убранных модулей; такие файлы рекомендуется удалить;&lt;br /&gt;
#* &amp;lt;code&amp;gt;*.deployed&amp;lt;/code&amp;gt; — для успешно развёрнутых новых модулей.&lt;br /&gt;
# Если появились файлы &amp;lt;code&amp;gt;*.failed&amp;lt;/code&amp;gt; — [[#Запуск и остановка служб|перезапустите Wildfly]].&lt;br /&gt;
&lt;br /&gt;
=Контроль=&lt;br /&gt;
Администратору PayControl необходимо в плановом режиме выполнять проверку:&lt;br /&gt;
* Достаточности свободного места на серверах PayControl;&lt;br /&gt;
* Достаточности свободного места, выделенного дискового пространства базам данных PayControl (БД PCS и БД PCIS).&lt;br /&gt;
=Плановые работы=&lt;br /&gt;
Плановыми работами по обслуживанию является:&lt;br /&gt;
* Замена сертификата для обеспечения HTTPS защиты сервера PCIS External;&lt;br /&gt;
* Замена сертификатов для обеспечения HTTPS защиты на серверах PCS и PCIS Internal при их наличии.&lt;br /&gt;
[[Категория:Руководства]]&lt;br /&gt;
[[Категория:Серверная часть]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=888</id>
		<title>Руководство администратора PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%B0_PayControl_v3&amp;diff=888"/>
		<updated>2026-07-03T10:39:03Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Установка лицензии */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Введение=&lt;br /&gt;
PayControl – программный комплекс, предназначенный для подтверждения пользователем операций в системах дистанционного банковского обслуживания и/или электронного документооборота.&lt;br /&gt;
&lt;br /&gt;
PayControl призван, в первую очередь, повысить уровень удобства подтверждения и информационной безопасности по сравнению с такими способами подтверждения как SMS, одноразовые пароли (One-Time Password), скретч-карты, MAC-токены и пр.&lt;br /&gt;
&lt;br /&gt;
При помощи PayControl могут подтверждаться волеизъявления на совершение банковских транзакций, аутентификация, создание и исполнение документов, факты получения и/или ознакомления с определённой информацией.&lt;br /&gt;
=Назначение=&lt;br /&gt;
Настоящий документ предназначен работникам организаций, выполняющим прикладные задачи по обслуживанию серверов PayControl.&lt;br /&gt;
=Общее описание=&lt;br /&gt;
Сервер PayControl функционирует на базе сервера приложений [[Wildfly]] выполняющейся в среде Java 8 и состоит из следующих частей:&lt;br /&gt;
* PayControl Server (PCS) – основной сервер PayControl. Располагается внутри локальной сети. Взаимодействует с прикладной системой. Хранит данные в БД PCS. Отправляет данные на PCIS Internal, получает данные с PCIS External.&lt;br /&gt;
* PayControl Interaction Server Internal (PCIS Internal) – сервер для отправки Push уведомлений о появлении неподтверждённой транзакции у пользователя (без содержания информации о транзакции). Как правило располагается в DMZ-зоне, имеющей доступ к сети Интернет. Требуется доступ к серверам Google и Apple. Может быть размещён в т.ч. на одном сервере с PCS или PCIS Extrnal (в зависимости от требований ИБ к ИТ инфраструктуре Банка и функциональных возможностей ИТ инфраструктуры Банка).&lt;br /&gt;
* PayControl Interaction Server External (PCIS External). С этим сервером взаимодействуют приложения на мобильных устройствах для получения информации о данных платежа и отправки результатов подтверждения транзакций. Располагается в DMZ-зоне с доступом извне. Должен иметь внешний фиксированный IP-адрес. При необходимости использования TLS, должно быть присвоено доменное имя и выпущен сертификат внешним УЦ.&lt;br /&gt;
=Запуск и остановка служб сервера PayControl=&lt;br /&gt;
==Linux==&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl start wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl stop wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Перезапуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl restart wildfly.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Windows==&lt;br /&gt;
===Из графического интерфейса===&lt;br /&gt;
Запуск, остановка и перезапуск службы осуществляется из консоли управления службами сервером (консоль services.msc).&lt;br /&gt;
===С помощью командной строки===&lt;br /&gt;
Запуск:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net start wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Остановка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;&lt;br /&gt;
net stop wildfly&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=Журналирование=&lt;br /&gt;
==Доступ к данным журнала==&lt;br /&gt;
Журнал работы сервера PayControl записывается общий журнал функционирования [[Wildfly]]. В общем случае записываются только ошибки PayControl, при их возникновении.&lt;br /&gt;
&lt;br /&gt;
Файлы журналов за текущий день доступны по следующему пути:&lt;br /&gt;
* Linux:&lt;br /&gt;
*: /opt/wildfly/standalone/log/server.log&lt;br /&gt;
* Windows:&lt;br /&gt;
*: C:\wildfly\standalone\log\server.log&lt;br /&gt;
Для просмотра журнала за другие дни, нужно добавить к имени файла требуемую дату в формате server.log.YYYY-MM-DD&lt;br /&gt;
==Включение вывода информационных данных работы PayControl==&lt;br /&gt;
В некоторых случаях может потребоваться вывод отладочной информации PayControl. Порядок её включения описан ниже для разных компонентов сервера PayСоntrol.&lt;br /&gt;
===Для PCS и PCIS Internal===&lt;br /&gt;
====Вывод отладочной информации====&lt;br /&gt;
Для включения вывода отладочной информации необходимо:&lt;br /&gt;
# В БД PCS или БД PCIS соответственно для нужного сервера, добавить/изменить запись в таблице pc_sys_property, установив следующие значения:&lt;br /&gt;
#* setting_name=&#039;DEBUG_INFO&#039;&lt;br /&gt;
#* setting_value = &#039;1&#039;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
=====Добавление записи=====&lt;br /&gt;
Примеры SQL запросов добавления записи для разных СУБД:&lt;br /&gt;
* PostgreSQL &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Oracle &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;insert into pc_sys_property values (PC_SETTING_SEQ.NEXTVAL, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* MS SQL &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;insert into pc_sys_property values (NEXT VALUE FOR PC_SETTING_SEQ, &#039;DEBUG_INFO&#039;, &#039;1&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====Изменение записи=====&lt;br /&gt;
Пример SQL запроса для изменения записи (подходит для всех перечисленных в предыдущем подразделе СУБД):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_sys_property set setting_value = &#039;1&#039; where setting_name=&#039;DEBUG_INFO&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====Вывод содержимого SOAP-запросов и ответов====&lt;br /&gt;
{{Предупреждение|Включение опции вывода содержимого SOAP-запросов не работает в [[Wildfly]] версии 13.0.0-Final.}}&lt;br /&gt;
Для включения вывода содержимого SOAP-запросов и ответов службой wildfly необходимо:&lt;br /&gt;
# Добавить после блока &amp;lt;extensions&amp;gt; ... &amp;lt;/extensions&amp;gt; в файл&lt;br /&gt;
#* Linux:&lt;br /&gt;
#*: /opt/wildfly/standalone/configuration/standalone.xml&lt;br /&gt;
#* Windows:&lt;br /&gt;
#*: C:\wildfly\standalone\configuration\standalone.xml&lt;br /&gt;
#: следующий блок:&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;system-properties&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;org.apache.cxf.logging.enabled&amp;quot; value=&amp;quot;pretty&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/system-properties&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Перезапустить службу wildfly.&lt;br /&gt;
&lt;br /&gt;
===PCIS External (с версии 3.6)===&lt;br /&gt;
Начиная с версии PCIS External 3.6 компонент может журналировать запросы, приходящие на /jsonrequest_v2.&lt;br /&gt;
&lt;br /&gt;
Для включения журналирования необходимо в опции Java-машины добавить параметр &#039;&#039;paycontrol.logRequests=yes&#039;&#039; следующим образом:&lt;br /&gt;
* для Linux:&lt;br /&gt;
*: в файл /opt/wildfly/bin/standalone.conf добавить &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* для Windows:&lt;br /&gt;
*: в файл C:\wildfly\bin\standalone.conf.bat добавить &amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpaycontrol.logRequests=yes&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
затем перезапустить службу wildfly.&lt;br /&gt;
=Отправка информации о событиях=&lt;br /&gt;
Адрес для отправки информации об устройстве и событиях взаимодействия мобильного приложения или SDK PayControl с сервером PayControl устанавливается в БД PCS, таблица pc_system, поле events_post_url.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system set events_post_url=&#039;http://example.com/pc_events_reciever&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
После этого нужно перезапустить WildFly PCS для применения изменений.&lt;br /&gt;
&lt;br /&gt;
{{Предупреждение|Обязательным требованием для сбора информации о событиях является установка флага сбора информации о событиях при создании ключа, а для передачи данных об устройстве — ещё и флага сбора информации об устройстве. Подробнее — в описании API сервера.}}&lt;br /&gt;
=Установка лицензии=&lt;br /&gt;
Если установка лицензионного файла не проводилась на сервер, то он работает в демонстрационном режиме, ограничивающем возможность заведения более 20 пользователей PayControl.&lt;br /&gt;
Также при включённом выводе информационных данных работы PayControl, в журнал выводятся сообщения сообщения вида:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.utils.licenseManager.LicenseManager] (default task-2)    --- no license found in database&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- Error load License, cheking if free users count exceeded&lt;br /&gt;
2018-12-07 11:51:07,295 INFO  [ru.safetech.ws.PayControl.services.impl.PayControlServiceV3Impl] (default task-2)    --- ATTENTION! LICENSE NOT FOUND! You are using unlicensed demo-only version of the service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Запросом к БД==&lt;br /&gt;
Для установки лицензии необходимо выполнить SQL-запрос к БД PCS, поместив в него содержимое файла лицензии указав идентификатор системы&lt;br /&gt;
* до версии 3.5 включительно:&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set license=&#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid=&#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* с версии 3.6:&lt;br /&gt;
*: &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system_params set license=&#039;СОДЕРЖИМОЕ ФАЙЛА ЛИЦЕНЗИИ&#039; where systemid=&#039;ИДЕНТИФИКАТОР СИСТЕМЫ&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Добавлением файла лицензии==&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
Файл лицензии необходимо скопировать в /opt/wildfly/ на сервер PCS.&lt;br /&gt;
===Windows===&lt;br /&gt;
Файл лицензии необходимо скопировать на сервер PCS в одну из папок:&lt;br /&gt;
&lt;br /&gt;
*C:\wildfly\&lt;br /&gt;
*C:\PayControl\&lt;br /&gt;
&lt;br /&gt;
= Процесс обновления в рамках одной версии =&lt;br /&gt;
Для обновления необходимо заменить на серверах файлы модулей PC Server, PC Pusher и PC External в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]. Они имеют названия вида:&lt;br /&gt;
* PayControl-services-module-3.9.452.ear - PC Server;&lt;br /&gt;
* pc-pusher-5.5.348.war - PC Pusher;&lt;br /&gt;
* PayControl-interaction-rest-3.9.452.war - PC External.&lt;br /&gt;
Файлы сервера предыдущей версии настоятельно рекомендуем сохранить для возможности отката на предыдущую версию.&lt;br /&gt;
&lt;br /&gt;
После замены файлов и развёртывания новых, в директории &#039;&#039;deployments&#039;&#039; будут созданы файлы с названиями:&lt;br /&gt;
* *.undeployed, где вместо * будет указано название убранного из директории файла модуля сервера. Файлы с расширением undeployed рекомендуется удалить.&lt;br /&gt;
* и с расширением *.deployed, где вместо * будут указаны названия новых модулей.&lt;br /&gt;
При появлении файлов с расширением *.failed, необходимо [[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|перезапустить Wildfly]].&lt;br /&gt;
&lt;br /&gt;
=Контроль=&lt;br /&gt;
Администратору PayControl необходимо в плановом режиме выполнять проверку:&lt;br /&gt;
* Достаточности свободного места на серверах PayControl;&lt;br /&gt;
* Достаточности свободного места, выделенного дискового пространства базам данных PayControl (БД PCS и БД PCIS).&lt;br /&gt;
=Плановые работы=&lt;br /&gt;
Плановыми работами по обслуживанию является:&lt;br /&gt;
* Замена сертификата для обеспечения HTTPS защиты сервера PCIS External;&lt;br /&gt;
* Замена сертификатов для обеспечения HTTPS защиты на серверах PCS и PCIS Internal при их наличии.&lt;br /&gt;
[[Категория:Руководства]]&lt;br /&gt;
[[Категория:Серверная часть]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D1%87%D0%BD%D0%B0%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BE%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1%D0%BD%D0%BE%D1%81%D1%82%D0%B8_PayControl_v6&amp;diff=886</id>
		<title>Ручная проверка работоспособности PayControl v6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%A0%D1%83%D1%87%D0%BD%D0%B0%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BE%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1%D0%BD%D0%BE%D1%81%D1%82%D0%B8_PayControl_v6&amp;diff=886"/>
		<updated>2026-06-24T10:26:15Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: Новая страница: «=Создание пользователя и транзакции=  В примерах ниже замените плейсхолдеры на свои значения: * &amp;#039;&amp;#039;&amp;#039;pcs.example:8080&amp;#039;&amp;#039;&amp;#039; — адрес и порт вашего сервера PayControl; * &amp;#039;&amp;#039;&amp;#039;systemid&amp;#039;&amp;#039;&amp;#039; — идентификатор вашей системы; * &amp;#039;&amp;#039;&amp;#039;userid&amp;#039;&amp;#039;&amp;#039; — идентификатор созданного пользователя.  Значения в прим...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Создание пользователя и транзакции=&lt;br /&gt;
&lt;br /&gt;
В примерах ниже замените плейсхолдеры на свои значения:&lt;br /&gt;
* &#039;&#039;&#039;pcs.example:8080&#039;&#039;&#039; — адрес и порт вашего сервера PayControl;&lt;br /&gt;
* &#039;&#039;&#039;systemid&#039;&#039;&#039; — идентификатор вашей системы;&lt;br /&gt;
* &#039;&#039;&#039;userid&#039;&#039;&#039; — идентификатор созданного пользователя.&lt;br /&gt;
&lt;br /&gt;
Значения в примерах ответов приведены для наглядности и могут отличаться в зависимости от версии сервера.&lt;br /&gt;
&lt;br /&gt;
1) Установите мобильное приложение PayControl из Google Play, RuStore, Huawei AppGallery или Apple App Store.&lt;br /&gt;
&lt;br /&gt;
2) Для запроса на создание пользователя с выводом ключевой информации в QR ознакомьтесь с его описанием: https://repo.paycontrol.org/server/doc/latest/rest-api/en/#create-user&lt;br /&gt;
&lt;br /&gt;
Пример запроса (нужно вписать ваш &#039;&#039;&#039;systemid&#039;&#039;&#039;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
curl --location --request POST &#039;http://pcs.example:8080/pc-api/systemid/users&#039; \&lt;br /&gt;
--header &#039;Content-Type: application/json&#039; \&lt;br /&gt;
--data-raw &#039;{&lt;br /&gt;
	&amp;quot;id_prefix&amp;quot;:&amp;quot;rest-api-test-&amp;quot;,&lt;br /&gt;
	&amp;quot;key_params&amp;quot;:{&lt;br /&gt;
		&amp;quot;with_finger_print&amp;quot;: false,&lt;br /&gt;
		&amp;quot;collect_events&amp;quot;: true,&lt;br /&gt;
		&amp;quot;collect_device_info&amp;quot;: true,&lt;br /&gt;
		&amp;quot;collect_device_SIM_info&amp;quot;: false,&lt;br /&gt;
		&amp;quot;collect_device_location&amp;quot;: false,&lt;br /&gt;
		&amp;quot;pass_policy&amp;quot;: 0,&lt;br /&gt;
		&amp;quot;deny_store_with_OS_protection&amp;quot;: false,&lt;br /&gt;
		&amp;quot;deny_renew_public_key&amp;quot;: false,&lt;br /&gt;
		&amp;quot;scoring_enabled&amp;quot;: true,&lt;br /&gt;
		&amp;quot;autosign_enabled&amp;quot;: false&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;return_key_method&amp;quot;:&amp;quot;FULL_QR&amp;quot;&lt;br /&gt;
}&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример ответа:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;answer_type&amp;quot;: &amp;quot;user_created&amp;quot;,&lt;br /&gt;
    &amp;quot;answer&amp;quot;: {&lt;br /&gt;
        &amp;quot;result&amp;quot;: {&lt;br /&gt;
            &amp;quot;error_message&amp;quot;: &amp;quot;Success&amp;quot;,&lt;br /&gt;
            &amp;quot;error_code&amp;quot;: 0&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;user_created&amp;quot;: {&lt;br /&gt;
            &amp;quot;expiration_date&amp;quot;: &amp;quot;2022-03-19&amp;quot;,&lt;br /&gt;
            &amp;quot;system_settings&amp;quot;: {&lt;br /&gt;
                &amp;quot;confirm_code_time_sampling_interval&amp;quot;: 180,&lt;br /&gt;
                &amp;quot;auth_code_time_sampling_interval&amp;quot;: 180&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;user_id&amp;quot;: &amp;quot;rest-api-test-d3ee8aa6-5467-4dc3-b856-ed39577c9363&amp;quot;,&lt;br /&gt;
            &amp;quot;system_id&amp;quot;: &amp;quot;6d5f8706-89d7-4378-8a96-707d5939c0f1&amp;quot;,&lt;br /&gt;
            &amp;quot;expiration_timestamp&amp;quot;: 1647698161,&lt;br /&gt;
            &amp;quot;system_name&amp;quot;: &amp;quot;Example&amp;quot;,&lt;br /&gt;
            &amp;quot;key_flags&amp;quot;: 6,&lt;br /&gt;
            &amp;quot;ext_auth_available_methods&amp;quot;: [&lt;br /&gt;
                &amp;quot;codeword&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;key_QR&amp;quot;: &amp;quot;R0lGODlhLAEsAfAAAAAAAP///ywAAAAALAEsAUAC/4yPq...uqhLuqjTuqlbuqnjuqpruqrzuqt7uqvHoYFAAA7&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;answer_version&amp;quot;: 3&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Работа с QR-кодом=&lt;br /&gt;
1) Отобразить возвращённый QR можно, например, с помощью этой утилиты https://base64.guru/converter/decode/image/gif, скопировав из ответа на создание пользователя данные поля key_QR&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;key_QR&amp;quot;: &amp;quot;данные_QR_кода&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Убедитесь, что в полученном QR-коде прописан правильный адрес для подключения к PC External, отсканировав его в любом QR-ридере.&lt;br /&gt;
&lt;br /&gt;
3) Добавьте ключ в мобильное приложение PC, отсканировав QR-код.&lt;br /&gt;
&lt;br /&gt;
=Создание транзакции и пуша=&lt;br /&gt;
1) Для запроса на создание транзакции ознакомьтесь с его описанием: https://repo.paycontrol.org/server/doc/latest/rest-api/en/#create-transaction&lt;br /&gt;
&lt;br /&gt;
Пример запроса (нужно вписать ваш &#039;&#039;&#039;systemid и userid&#039;&#039;&#039; созданного пользователя):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
curl --location --request POST &#039;http://pcs.example:8080/pc-api/systemid/users/userid/transactions&#039; \&lt;br /&gt;
--header &#039;Content-Type: application/json;charset=UTF-8&#039; \&lt;br /&gt;
--data-raw &#039;{&lt;br /&gt;
	&amp;quot;transaction_data&amp;quot;:{&lt;br /&gt;
		&amp;quot;text&amp;quot;:&amp;quot;Перевод средств на счёт №213154254 на сумму 12000 рублей&amp;quot;&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;notification_type&amp;quot;: &amp;quot;Push&amp;quot;,&lt;br /&gt;
	&amp;quot;callback_url&amp;quot;: &amp;quot;https://paycontrol.org/receive_request/&amp;quot;,&lt;br /&gt;
	&amp;quot;confirm_code_length&amp;quot;: 8,&lt;br /&gt;
	&amp;quot;ttl&amp;quot;: 0&lt;br /&gt;
}&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Пример ответа:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;answer_type&amp;quot;: &amp;quot;transaction_created&amp;quot;,&lt;br /&gt;
    &amp;quot;answer&amp;quot;: {&lt;br /&gt;
        &amp;quot;result&amp;quot;: {&lt;br /&gt;
            &amp;quot;error_message&amp;quot;: &amp;quot;Success&amp;quot;,&lt;br /&gt;
            &amp;quot;error_code&amp;quot;: 0&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;transaction_created&amp;quot;: {&lt;br /&gt;
            &amp;quot;transaction_id&amp;quot;: &amp;quot;b82f3436-c618-4c57-9760-4dec3a1ba807&amp;quot;,&lt;br /&gt;
            &amp;quot;system_id&amp;quot;: &amp;quot;6d5f8706-89d7-4378-8a96-707d5939c0f1&amp;quot;,&lt;br /&gt;
            &amp;quot;autosign_enabled&amp;quot;: false,&lt;br /&gt;
            &amp;quot;pc_transaction_version&amp;quot;: 3,&lt;br /&gt;
            &amp;quot;confirm_code_length&amp;quot;: 8,&lt;br /&gt;
            &amp;quot;ttl&amp;quot;: 0,&lt;br /&gt;
            &amp;quot;callback_url&amp;quot;: &amp;quot;https://paycontrol.org/receive_request/&amp;quot;,&lt;br /&gt;
            &amp;quot;user_id&amp;quot;: &amp;quot;rest-api-test-d3ee8aa6-5467-4dc3-b856-ed39577c9363&amp;quot;,&lt;br /&gt;
            &amp;quot;extended_check&amp;quot;: false,&lt;br /&gt;
            &amp;quot;data_type&amp;quot;: &amp;quot;TEXT&amp;quot;,&lt;br /&gt;
            &amp;quot;text_render_type&amp;quot;: &amp;quot;raw&amp;quot;,&lt;br /&gt;
            &amp;quot;confirm_type&amp;quot;: &amp;quot;PUSH&amp;quot;,&lt;br /&gt;
            &amp;quot;transaction_qr&amp;quot;: &amp;quot;R0lGODlhLAEsAfAAAAAAAP///ywAAAAALAEsAUAC/4yPqcvt...jTuqlbuqnjuqpruqrzuqt7uqvDutpWAAAOw==&amp;quot;,&lt;br /&gt;
            &amp;quot;status&amp;quot;: &amp;quot;initialized&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;answer_version&amp;quot;: 3&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Чтобы на устройство был отправлен пуш, при создании транзакции нужно указать следующий параметр в теле запроса&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;notification_type&amp;quot;: &amp;quot;Push&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для PC Pusher должны быть доступны адреса, пописанные по ссылке - https://repo.paycontrol.org/server/doc/latest/infrastructure/ru/#адреса-для-отправки-push-уведомлений&lt;br /&gt;
&lt;br /&gt;
3) После создания транзакции, подтвердите её в мобильном приложении.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=PayControl_PKI&amp;diff=881</id>
		<title>PayControl PKI</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=PayControl_PKI&amp;diff=881"/>
		<updated>2026-04-06T11:48:34Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Указание пути к файлу конфигурации PKI коннектора */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PC базово в своём составе имеет коннекторы к двум УЦ:&lt;br /&gt;
&lt;br /&gt;
* КриптоПро УЦ&lt;br /&gt;
* УЦ на базе OpenSSL&lt;br /&gt;
&lt;br /&gt;
= КриптоПро УЦ =&lt;br /&gt;
&lt;br /&gt;
С версии 6.9.0, PC может быть подключён к КриптоПро УЦ 2.0 (исполнение 15 и 16) для выпуска сертификатов пользователям PC.&lt;br /&gt;
&lt;br /&gt;
Коннектор к УЦ КриптоПро является модулем компонента PCS. Взаимодействие с УЦ КриптоПро ведётся через его компонент — центр регистрации.&lt;br /&gt;
&lt;br /&gt;
Для работы с УЦ КриптоПро необходимо включить коннектор, настроить его, добавить ключ для аутентификации запросов в центр регистрации (или два раздельных ключа, один для mTLS, второй для подписания запросов к ЦР), добавить корневой сертификат УЦ для проверки аутентичности сервера при подключении.&lt;br /&gt;
&lt;br /&gt;
== Конфигурирование PKI коннектора ==&lt;br /&gt;
&lt;br /&gt;
=== Указание пути к файлу конфигурации PKI коннектора ===&lt;br /&gt;
&lt;br /&gt;
Путь к файлу конфигурации устанавливается в настройках сервера PCS в параметре &amp;lt;code&amp;gt;PKI_SETTINGS_PATH&amp;lt;/code&amp;gt;. Значением по умолчанию является &amp;lt;code&amp;gt;/opt/pc/pki/pki-settings.properties&amp;lt;/code&amp;gt;. Способ установки описан в [https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/#установка-параметров|справочном руководстве].&lt;br /&gt;
&lt;br /&gt;
При изменении &amp;lt;code&amp;gt;pki-settings.properties&amp;lt;/code&amp;gt; требуется перезапуск PC Server.&lt;br /&gt;
&lt;br /&gt;
=== Состав файла конфигурации ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;# Connector type selection (MUST not be changed to use this connector)&lt;br /&gt;
# Указание типа коннектора (не подлежит изменению при использовании этого коннектора)&lt;br /&gt;
caType=CPCA20&lt;br /&gt;
&lt;br /&gt;
# Alias of the Operator&#039;s private key and certificate stored in HDImage&lt;br /&gt;
# Алиас закрытого ключа и сертификата оператора в HDImage хранилище (используется для установки mTLS и подписи запросов к УЦ)&lt;br /&gt;
cpca20OperatorKeyAlias=Operator-1&lt;br /&gt;
&lt;br /&gt;
# Password to the Operator&#039;s private key container&lt;br /&gt;
# Пароль закрытого ключа оператора&lt;br /&gt;
cpca20OperatorKeyPassword=&lt;br /&gt;
&lt;br /&gt;
# Trusted certificates in PEM for establishing TLS connection with CA&lt;br /&gt;
# Путь к файлу с доверенными сертификатами&lt;br /&gt;
cpca20TrustedCertificatesPath=/opt/pc/cp_ca/etc/904C46A177CC4BAA6B683AD47E4BF625FADD166B.pem&lt;br /&gt;
&lt;br /&gt;
# URL for the CA 2.0 instance&lt;br /&gt;
# Адрес центра регистрации УЦ КриптоПро для взаимодействия&lt;br /&gt;
cpca20InteractionUrl=https://cpca.loc&lt;br /&gt;
&lt;br /&gt;
# URL for the CA 2.0 distribution point&lt;br /&gt;
# Адрес распространения списков отзывов сертификатов&lt;br /&gt;
cpca20CrlDp=http://cpca.loc/cdp/904C46A177CC4BAA6B683AD47E4BF625FADD166B.crl&lt;br /&gt;
&lt;br /&gt;
# OID for the custom component in subject&#039;s DN (UnstructuredName)&lt;br /&gt;
# OID для поля UnstructuredName&lt;br /&gt;
cacp20UserNameOID=1.2.840.113549.1.9.2&lt;br /&gt;
&lt;br /&gt;
# OID for the certificate template to be included in the extensions of certificate requests&lt;br /&gt;
# OID шаблона сертификата для включения в расширение в запросе сертификата&lt;br /&gt;
cacp20CertTemplateOID=1.2.643.2.999.1.1.1&lt;br /&gt;
&lt;br /&gt;
# Folder to be used when creating users at RA&lt;br /&gt;
# Папка, в которой создаются сертификаты пользователей в ЦР УЦ КриптоПро&lt;br /&gt;
cacp20RegistrationFolder=Ra&lt;br /&gt;
&lt;br /&gt;
# Whether to use specified CRL DP for certificate checking (useful when CRL DP is not included into certificate extensions)&lt;br /&gt;
# Флаг разрешающий использование установленного в cpca20CrlDp адреса для получения списка отзыва сертификатов (для случаев, если в сертификате не указана точка распространения списка отзывов)&lt;br /&gt;
cacp20UseCrlDpForCertificateValidation=true&lt;br /&gt;
&lt;br /&gt;
# Timeout in milliseconds for establishing connection with CA&lt;br /&gt;
# Время ожидания установки TCP соединения с УЦ в мс&lt;br /&gt;
cacp20ConnectionTimeout=2000&lt;br /&gt;
&lt;br /&gt;
# Timeout in milliseconds for requesting connection from the connection manager&lt;br /&gt;
# Время ожидания готовности сервера принять запрос в мс&lt;br /&gt;
cacp20ConnectionRequestTimeout=2000&lt;br /&gt;
&lt;br /&gt;
# Timeout in milliseconds for getting response from CA&lt;br /&gt;
# Время ожидания ответа от УЦ в мс&lt;br /&gt;
cacp20ResponseTimeout=2000&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Сертификат УЦ ===&lt;br /&gt;
&lt;br /&gt;
Сертификат УЦ необходимо разместить в доступном для сервиса месте (например в &amp;lt;code&amp;gt;/opt/pc/cp_ca/etc/&amp;lt;/code&amp;gt;), и указать путь к этому файлу в параметре &amp;lt;code&amp;gt;cpca20TrustedCertificatesPath&amp;lt;/code&amp;gt; конфигурационного файла.&lt;br /&gt;
&lt;br /&gt;
== Размещение ключей ==&lt;br /&gt;
&lt;br /&gt;
Файлы ключа и сертификата оператора в формате КриптоПро CSP HDImage необходимо разместить по по пути  &amp;lt;code&amp;gt;/var/opt/cprocsp/keys/ProcessUsername/OperatorKeyAlias&amp;lt;/code&amp;gt;, где вместо значений:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;ProcessUsername&amp;lt;/code&amp;gt; должено быть указано имя пользователя, под которым запущен процесс PCS;&lt;br /&gt;
* &amp;lt;code&amp;gt;OperatorKeyAlias&amp;lt;/code&amp;gt; должен быть указан алиас оператора (для приведённого примера файла конфигурации это будет &amp;lt;code&amp;gt;Operator-1&amp;lt;/code&amp;gt; и путь будет следующий &amp;lt;code&amp;gt;/var/opt/cprocsp/keys/user/Operator-1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Владельцем директорий &amp;lt;code&amp;gt;ProcessUsername/OperatorKeyAlias&amp;lt;/code&amp;gt; и файлов ключей должен быть пользователь, под которым запущен процесс PCS. Если эти директории принадлежат другому пользователю, необходимо скорректировать принадлежность, например, с помощью &amp;lt;code&amp;gt;chown&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= OpenSSL =&lt;br /&gt;
&lt;br /&gt;
== Конфигурирование PKI коннектора ==&lt;br /&gt;
&lt;br /&gt;
=== Путь к конфигурационному файлу коннектора ===&lt;br /&gt;
&lt;br /&gt;
Настройку необходимо внести в pc_sys_property БД PCS.&lt;br /&gt;
&lt;br /&gt;
PKI_SETTINGS_PATH      | /opt/pc/pki/pki-settings.properties&lt;br /&gt;
&lt;br /&gt;
Пример для PostgreSQL:&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;PKI_SETTINGS_PATH&#039;, &#039;/opt/pc/pki/pki-settings.properties&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Пример конфигурационного файла ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
# check certificate&#039;s expiration, cert path and other constrains during each cert use&lt;br /&gt;
checkCertificates=true&lt;br /&gt;
&lt;br /&gt;
# check certificate revocation status, to use checkCertificates must be true&lt;br /&gt;
checkRevocation=true&lt;br /&gt;
useCRL=true&lt;br /&gt;
useOCSP=false&lt;br /&gt;
&lt;br /&gt;
# -- OpenSSL Settings&lt;br /&gt;
caType=OpenSSL&lt;br /&gt;
issueCertificateCmd=/opt/pc/pki/issue_cert.sh&lt;br /&gt;
revokeCertificateCmd=/opt/pc/pki/revoke_cert.sh&lt;br /&gt;
&lt;br /&gt;
# files prefixes must contain path where tmp files will be stored&lt;br /&gt;
csrTmpFilePrefix=pc-openssl-connector-csr-&lt;br /&gt;
certTmpFilePrefix=pc-openssl-connector-cert-&lt;br /&gt;
&lt;br /&gt;
# certificate chain in PEM-format&lt;br /&gt;
#    the first certificate must be CA (self-signed), second - 1st intermediate, third - 2nd intermediate and so on&lt;br /&gt;
#    if checkRevocation is true, then each of intermediate certificates must contain OCSP url or CRL Distribution point&lt;br /&gt;
caChainFileName=/opt/pc/pki/Intermediate_CA/certs/intermediate.chain.pem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Пример файла выпуска сертификата ==&lt;br /&gt;
&lt;br /&gt;
=== ECDSA ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
CA_DIR=/opt/pc/pki/Intermediate_CA&lt;br /&gt;
KEY_PASS=secretpassword&lt;br /&gt;
&lt;br /&gt;
DER_CSR_FILE_NAME=$1&lt;br /&gt;
DER_CSR_BASE_FILE_NAME=&amp;quot;$(basename -- $DER_CSR_FILE_NAME)&amp;quot;&lt;br /&gt;
DER_CSR_BASE_FILE_NAME=&amp;quot;${DER_CSR_BASE_FILE_NAME%.*}&amp;quot;&lt;br /&gt;
PEM_CSR_FILE_NAME=csr/$DER_CSR_BASE_FILE_NAME.pem&lt;br /&gt;
PEM_CERT_FILE_NAME=certs/$DER_CSR_BASE_FILE_NAME.cert.pem&lt;br /&gt;
DER_CERT_FILE_NAME=certs/$DER_CSR_BASE_FILE_NAME.cert.der&lt;br /&gt;
&lt;br /&gt;
DEST_CERT_FILE_NAME=$2&lt;br /&gt;
&lt;br /&gt;
cd $CA_DIR&lt;br /&gt;
openssl req -inform DER -in $DER_CSR_FILE_NAME -out $PEM_CSR_FILE_NAME&lt;br /&gt;
openssl ca -config openssl.cnf -extensions usr_cert -days 375 -notext -md sha256 -in $PEM_CSR_FILE_NAME -out $PEM_CERT_FILE_NAME -passin pass:$KEY_PASS -batch&lt;br /&gt;
openssl x509 -outform der -in $PEM_CERT_FILE_NAME -out $DER_CERT_FILE_NAME&lt;br /&gt;
&lt;br /&gt;
cp $DER_CERT_FILE_NAME $DEST_CERT_FILE_NAME&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ГОСТ ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
CA_DIR=/opt/pc/pki/Intermediate_CA&lt;br /&gt;
KEY_PASS=secretpassword&lt;br /&gt;
&lt;br /&gt;
DER_CSR_FILE_NAME=$1&lt;br /&gt;
DER_CSR_BASE_FILE_NAME=&amp;quot;$(basename -- $DER_CSR_FILE_NAME)&amp;quot;&lt;br /&gt;
DER_CSR_BASE_FILE_NAME=&amp;quot;${DER_CSR_BASE_FILE_NAME%.*}&amp;quot;&lt;br /&gt;
PEM_CSR_FILE_NAME=csr/$DER_CSR_BASE_FILE_NAME.pem&lt;br /&gt;
PEM_CERT_FILE_NAME=certs/$DER_CSR_BASE_FILE_NAME.cert.pem&lt;br /&gt;
DER_CERT_FILE_NAME=certs/$DER_CSR_BASE_FILE_NAME.cert.der&lt;br /&gt;
&lt;br /&gt;
DEST_CERT_FILE_NAME=$2&lt;br /&gt;
&lt;br /&gt;
cd $CA_DIR&lt;br /&gt;
openssl req -inform DER -in $DER_CSR_FILE_NAME -out $PEM_CSR_FILE_NAME&lt;br /&gt;
openssl ca -config openssl.cnf -extensions usr_cert -days 375 -notext -md gost12_256 -in $PEM_CSR_FILE_NAME -out $PEM_CERT_FILE_NAME -passin pass:$KEY_PASS -batch&lt;br /&gt;
openssl x509 -outform der -in $PEM_CERT_FILE_NAME -out $DER_CERT_FILE_NAME&lt;br /&gt;
&lt;br /&gt;
cp $DER_CERT_FILE_NAME $DEST_CERT_FILE_NAME&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Пример файла отзыва сертификата ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
CERT_FILE_NAME=$1&lt;br /&gt;
KEY_PASS=secretpassword&lt;br /&gt;
CA_DIR=/opt/pc/pki/Intermediate_CA&lt;br /&gt;
INTERMEDIATE_CRL_LOCATION=crl/intermediate.crl&lt;br /&gt;
&lt;br /&gt;
cd $CA_DIR&lt;br /&gt;
&lt;br /&gt;
#revoke&lt;br /&gt;
openssl ca -config openssl.cnf -revoke $CERT_FILE_NAME -passin pass:$KEY_PASS&lt;br /&gt;
#publish CRL&lt;br /&gt;
openssl ca -config openssl.cnf -gencrl -out $INTERMEDIATE_CRL_LOCATION -passin pass:$KEY_PASS&lt;br /&gt;
cp -v $INTERMEDIATE_CRL_LOCATION /opt/pc/pki/pub/crl/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Пример файла скрипта публикации списка отзыва корневого УЦ ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
openssl ca \&lt;br /&gt;
-config /opt/pc/pki/Root_CA/openssl_host.cnf \&lt;br /&gt;
-gencrl \&lt;br /&gt;
-out /opt/pc/pki/Root_CA/crl/root.crl \&lt;br /&gt;
-passin pass:secretpassword&lt;br /&gt;
cp /opt/pc/pki/Root_CA/crl/root.crl /opt/pc/pki/pub/crl/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Пример файла скрипта публикации списка отзыва промежуточного УЦ ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
openssl ca \&lt;br /&gt;
-config /opt/pc/pki/Intermediate_CA/openssl_host.cnf \&lt;br /&gt;
-gencrl \&lt;br /&gt;
-out /opt/pc/pki/Intermediate_CA/crl/intermediate.crl \&lt;br /&gt;
-passin pass:secretpassword&lt;br /&gt;
cp /opt/pc/pki/Intermediate_CA/crl/intermediate.crl /opt/pc/pki/pub/crl/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Включение ГОСТ в OpenSSL ==&lt;br /&gt;
&lt;br /&gt;
=== Установка модуля ГОСТ ===&lt;br /&gt;
&lt;br /&gt;
Для работы OpenSSL с криптоалгоритмами ГОСТ необходимо установить криптографическую библиотеку и настроить работу с этой библиотекой в конфигурационном файле, для этого:&lt;br /&gt;
&lt;br /&gt;
* Установите пакет &amp;lt;code&amp;gt;openssl-gost-engine&amp;lt;/code&amp;gt;, либо, если его нет в репозитории Вашего дистрибутива, скачайте по ссылке https://repo.paycontrol.org/cdn/artefacts/gost-engine/engine/gost.so (sha256sum: &amp;lt;code&amp;gt;435a0dee3273d924458c14ad57ac44b0711aa37fb3df9f2ba987a118f2339b1f  gost.so&amp;lt;/code&amp;gt;) и разместите скаченный файл криптобиблиотеки в директории модулей OpenSSL (в зависимости от дистрибутива это может быть &amp;lt;code&amp;gt;/usr/lib/engines-3/&amp;lt;/code&amp;gt;, или, например &amp;lt;code&amp;gt;/usr/lib64/engines-3/&amp;lt;/code&amp;gt;).&lt;br /&gt;
* В кофигурационный файл OpenSSL добавьте:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;openssl_conf = openssl_def&lt;br /&gt;
&lt;br /&gt;
[openssl_def]&lt;br /&gt;
engines = engine_section&lt;br /&gt;
&lt;br /&gt;
[engine_section]&lt;br /&gt;
gost = gost_section&lt;br /&gt;
&lt;br /&gt;
[gost_section]&lt;br /&gt;
engine_id = gost&lt;br /&gt;
dynamic_path = /usr/lib/engines-3/gost.so&lt;br /&gt;
default_algorithms = ALL &amp;lt;/syntaxhighlight&amp;gt;, где в качестве значения &amp;lt;code&amp;gt;dynamic_path&amp;lt;/code&amp;gt; должен быть указан путь к библиотеке &amp;lt;code&amp;gt;gost.so&amp;lt;/code&amp;gt;.&lt;br /&gt;
* В кофигурационном файле OpenSSL параметру &amp;lt;code&amp;gt;default_md&amp;lt;/code&amp;gt; необходимо установить значение &amp;lt;code&amp;gt;md_gost12_256&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Пример команд для создания корневого и промежуточного ГОСТ-УЦ в OpenSSL ==&lt;br /&gt;
&lt;br /&gt;
=== Создание корневого сертификата ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
openssl genpkey -config openssl_intermediate.cnf -pass pass:$KEY_PASS -algorithm gost2012_256 -pkeyopt paramset:A -out private/root.key.pem&lt;br /&gt;
openssl req -config openssl_intermediate.cnf -key private/root.key.pem -passin pass:${PKI_KEY_PASS} -new -x509 -days 7300 -md_gost12_256 -extensions v3_ca -subj &amp;quot;${PKI_ROOT_SUBJECT}&amp;quot; -out certs/root.cert.pem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Создание ключа и запроса для промежуточного УЦ ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
openssl genpkey -config openssl_root.cnf -pass pass:$KEY_PASS -algorithm gost2012_256 -pkeyopt paramset:A -out private/intermediate.key.pem&lt;br /&gt;
openssl req -config openssl_root.cnf -key private/intermediate.key.pem -passin pass:${PKI_KEY_PASS} -new -md_gost12_256 -subj &amp;quot;${PKI_INTERMEDIATE_SUBJECT}&amp;quot; -out csr/intermediate.csr.pem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Выпуск сертификата для промежуточного УЦ ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
openssl ca -config openssl_intermediate.cnf -extensions v3_intermediate_ca -passin pass:${PKI_KEY_PASS} -days 3650 -notext -md gost12_256 -in ../Intermediate_CA/csr/intermediate.csr.pem -out ../Intermediate_CA/certs/intermediate.cert.pem -out certs/intermediate.cert.pem -batch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:OpenSSL]]&lt;br /&gt;
[[Категория:PKI]]&lt;br /&gt;
[[Категория:Сертификаты]]&lt;br /&gt;
[[Категория:КриптоПро УЦ]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=873</id>
		<title>Обновление PayControl с версии 3 на версию 6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=873"/>
		<updated>2026-01-28T11:19:35Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Правки для корректной отправки пушей */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Введение =&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Перед обновлением необходимо выполнить резервное копирование БД PCS.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC &#039;&#039;&#039;требуется&#039;&#039;&#039; остановить Wildfly и обновить Java до версии 17. Версия 11 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и PC может продолжить работать на версии 11, что приведёт к ошибкам. &lt;br /&gt;
&lt;br /&gt;
Для того чтобы компоненты работали под Java 17, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 6 изменены названия серверов:&lt;br /&gt;
&lt;br /&gt;
* PC Server (PCS) — без изменений;&lt;br /&gt;
* PC Interaction Internal — PC Pusher (PCP);&lt;br /&gt;
* PC Interaction External — PC External (PCE).&lt;br /&gt;
&lt;br /&gt;
= Изменения в БД =&lt;br /&gt;
&lt;br /&gt;
== Правки структуры таблиц БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== Postgre ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_delayedkeyinfo drop column type;&lt;br /&gt;
alter table pc_delayedkeyinfo add column renew_challenge varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_device alter column is_deleted set not null;&lt;br /&gt;
alter table pc_device alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_device add column app_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_event alter column is_deleted set not null;&lt;br /&gt;
alter table pc_event alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_event alter column requester_ip type varchar(64);&lt;br /&gt;
alter table pc_event add column event_data text;&lt;br /&gt;
alter table pc_event drop column eventposturl;&lt;br /&gt;
&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_keyinfo drop column type;&lt;br /&gt;
alter table pc_keyinfo drop column key_container_id;&lt;br /&gt;
alter table pc_keyinfo add column external_approve_data_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_publickey alter column is_deleted set not null;&lt;br /&gt;
alter table pc_publickey alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_publickey add column autosign_public_key bytea;&lt;br /&gt;
&lt;br /&gt;
alter table pc_system alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system add column callback_url varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_system_params alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system_params alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system_params alter column license type varchar(4096);&lt;br /&gt;
alter table pc_system_params add column qr_url_scheme varchar(24);&lt;br /&gt;
&lt;br /&gt;
alter table pc_transaction alter column is_deleted set not null;&lt;br /&gt;
alter table pc_transaction alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_transaction add column autosign_enabled int2;&lt;br /&gt;
alter table pc_transaction add column ext_pulp bytea;&lt;br /&gt;
alter table pc_transaction add column extended_check int2;&lt;br /&gt;
alter table pc_transaction add column render_type int4;&lt;br /&gt;
alter table pc_transaction add column scoring_settings varchar(1023);&lt;br /&gt;
alter table pc_transaction add column transaction_type int4;&lt;br /&gt;
&lt;br /&gt;
alter table pc_user alter column is_deleted set not null;&lt;br /&gt;
alter table pc_user alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_user add column blocked int2;&lt;br /&gt;
&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_results varchar(512);&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_settings varchar(512);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MS SQL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;transaction_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        transaction_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_SYSTEM]&#039;)&lt;br /&gt;
          AND name = &#039;callback_url&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_SYSTEM&lt;br /&gt;
    ADD&lt;br /&gt;
        callback_url character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_USER]&#039;)&lt;br /&gt;
          AND name = &#039;blocked&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_USER&lt;br /&gt;
    ADD&lt;br /&gt;
        blocked smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;external_approve_data_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        external_approve_data_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_PUBLICKEY]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_public_key&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_public_key varbinary(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;renew_challenge&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        renew_challenge character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DEVICE]&#039;)&lt;br /&gt;
          AND name = &#039;app_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DEVICE&lt;br /&gt;
    ADD&lt;br /&gt;
        app_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_enabled&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_enabled smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;ext_pulp&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        ext_pulp character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;extended_check&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        extended_check smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;render_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        render_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(1023);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_results&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_results character varying(512);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(512);&lt;br /&gt;
		&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_EVENT]&#039;)&lt;br /&gt;
          AND name = &#039;event_data&#039;&lt;br /&gt;
    )&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ADD&lt;br /&gt;
            event_data VARCHAR(MAX);&lt;br /&gt;
ELSE&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ALTER COLUMN event_data VARCHAR(MAX);&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE PC_EVENT ALTER COLUMN requester_ip varchar(64);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oracle ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo DROP COLUMN type;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo ADD renew_challenge VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_device MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_device MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_device ADD app_id VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_event MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_event MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_event MODIFY requester_ip VARCHAR2(64);&lt;br /&gt;
ALTER TABLE pc_event ADD event_data CLOB;&lt;br /&gt;
ALTER TABLE pc_event DROP COLUMN eventposturl;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_keyinfo MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_keyinfo MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_keyinfo DROP COLUMN type;&lt;br /&gt;
ALTER TABLE pc_keyinfo DROP COLUMN key_container_id;&lt;br /&gt;
ALTER TABLE pc_keyinfo ADD external_approve_data_id VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_publickey MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_publickey MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_publickey ADD autosign_public_key BLOB;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_system MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_system MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_system ADD callback_url VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY license VARCHAR2(4000);&lt;br /&gt;
ALTER TABLE pc_system_params ADD qr_url_scheme VARCHAR2(24);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_transaction MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_transaction MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_transaction ADD autosign_enabled NUMBER(5);&lt;br /&gt;
ALTER TABLE pc_transaction ADD ext_pulp BLOB;&lt;br /&gt;
ALTER TABLE pc_transaction ADD extended_check NUMBER(5);&lt;br /&gt;
ALTER TABLE pc_transaction ADD render_type NUMBER(10);&lt;br /&gt;
ALTER TABLE pc_transaction ADD scoring_settings VARCHAR2(1023);&lt;br /&gt;
ALTER TABLE pc_transaction ADD transaction_type NUMBER(10);&lt;br /&gt;
ALTER TABLE pc_transaction ADD snipped_text VARCHAR2(1023);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_user MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_user MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_user ADD blocked NUMBER(5);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_confirm_attempt ADD scoring_results VARCHAR2(512);&lt;br /&gt;
ALTER TABLE pc_confirm_attempt ADD scoring_settings VARCHAR2(512);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_sys_property MODIFY SETTING_VALUE VARCHAR2(1023);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запрос на регистрацию и лицензия ==&lt;br /&gt;
&lt;br /&gt;
=== Получение нового запроса и лицензии ===&lt;br /&gt;
&lt;br /&gt;
Для получения обновленного запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
=== Замена запроса в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%REGISTERREQUEST%&amp;lt;/code&amp;gt; на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%REGISTERREQUEST%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замена лицензии(при наличии) в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%LICENSE%&amp;lt;/code&amp;gt; на реальные данные лицензии, созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;{&amp;quot;request&amp;quot;:{&amp;quot;systemId&amp;quot;:&amp;quot;99000000-e00e-0ad0-00ab-f00f0000a0b0&amp;quot;,&amp;quot;dateTime&amp;quot;:1700000000000,&amp;quot;usersCount&amp;quot;:100,&amp;quot;licenseID&amp;quot;:&amp;quot;0000e000-0000-0000-b0ec-c0f0000000f0&amp;quot;,&amp;quot;type&amp;quot;:2,&amp;quot;features&amp;quot;:{&amp;quot;gost_crypto&amp;quot;:false,&amp;quot;pki&amp;quot;:{&amp;quot;openssl&amp;quot;:false},&amp;quot;binary_data&amp;quot;:{&amp;quot;raw&amp;quot;:true,&amp;quot;pdf&amp;quot;:true},&amp;quot;server_signer&amp;quot;:false,&amp;quot;rks&amp;quot;:false}},&amp;quot;signature&amp;quot;:&amp;quot;MEYCIQDy7OUT6iiligbiugYcpK9fjkU/GDRIUiJtB+UcHppVwIhAKzS+EcktxyRikvqEThPyo1jHlPuAfgxW+EEo5gioW7Y&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set license=&#039;%LICENSE%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Обновление модулей PC =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для установки PC 6-й версии воспользуйтесь инструкцией по ссылке - https://repo.paycontrol.org/server/doc/latest/pc-install-guide/ru/#перед-установкой&lt;br /&gt;
&lt;br /&gt;
После обновления &#039;&#039;&#039;необходимо&#039;&#039;&#039; отключить автозапуск Wildfly и выполнить запрос к БД:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_keyinfo set is_activated=1;&lt;br /&gt;
update pc_transaction set transaction_type=0;&lt;br /&gt;
update pc_transaction set render_type=0;&lt;br /&gt;
update pc_transaction set status=6 where status=4;&lt;br /&gt;
update pc_transaction set status=7 where status=5;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректировка (смена) адресов компонентов серверов PC ==&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCP для подключения с PCS ===&lt;br /&gt;
&lt;br /&gt;
Для изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;:8082/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса для внешних подключений (PCE) с мобильных устройств ===&lt;br /&gt;
&lt;br /&gt;
Для изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-client-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Не требуется начиная с версии 6.9.1&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Для работы старых ключей, обращающихся по эндпоинту &amp;lt;code&amp;gt;/PayControl-interaction-rest/&amp;lt;/code&amp;gt; нужно установить проксирование на эндпоинт &amp;lt;code&amp;gt;/pc-client-api/&amp;lt;/code&amp;gt;, любым удобным способом.&lt;br /&gt;
&lt;br /&gt;
Пример для nginx:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
        location /PayControl-interaction-rest/ {&lt;br /&gt;
                proxy_pass http://o-pc-ext-example.com:8081/pc-client-api/;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Правки для корректной отправки пушей ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=1;&lt;br /&gt;
!!!Запрос выше для Android при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;Android&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=2;&lt;br /&gt;
!!!Запрос выше для iOS при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;iOS&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PostgreSQL&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oracle&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
create or replace function split_part(pString varchar2, pDelimiter varchar2, pPartNumber integer) return varchar2 deterministic is&lt;br /&gt;
  vStart number; &lt;br /&gt;
  vEnd   number;&lt;br /&gt;
begin&lt;br /&gt;
  if pPartNumber &amp;lt;&amp;gt; 0 and pDelimiter is not null then&lt;br /&gt;
    vStart := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber));&lt;br /&gt;
    vEnd   := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber) + 1);&lt;br /&gt;
  end if;&lt;br /&gt;
  return case         &lt;br /&gt;
           when pDelimiter is null and abs(pPartNumber) = 1 then pString&lt;br /&gt;
           when pPartNumber &amp;gt; 0 then substr(pString, vStart, vEnd - vStart - length(pDelimiter))                       &lt;br /&gt;
           when pPartNumber &amp;lt; 0 then substr(pString, vEnd, vStart - vEnd - length(pDelimiter))          &lt;br /&gt;
           else null&lt;br /&gt;
         end;&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MS SQL&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CREATE OR ALTER FUNCTION dbo.split_part&lt;br /&gt;
(&lt;br /&gt;
    @str   NVARCHAR(MAX),&lt;br /&gt;
    @delim NVARCHAR(100),&lt;br /&gt;
    @idx   INT&lt;br /&gt;
)&lt;br /&gt;
RETURNS NVARCHAR(MAX)&lt;br /&gt;
AS&lt;br /&gt;
BEGIN&lt;br /&gt;
&lt;br /&gt;
    IF @str IS NULL RETURN NULL;&lt;br /&gt;
    IF @idx IS NULL OR @idx &amp;lt;= 0 RETURN NULL;&lt;br /&gt;
    IF @delim IS NULL OR LEN(@delim) = 0 RETURN NULL;&lt;br /&gt;
&lt;br /&gt;
    DECLARE @dlen INT = LEN(@delim);&lt;br /&gt;
&lt;br /&gt;
    DECLARE @start INT = 1;&lt;br /&gt;
    DECLARE @pos   INT;&lt;br /&gt;
    DECLARE @cur   INT = 1;&lt;br /&gt;
&lt;br /&gt;
    WHILE 1 = 1&lt;br /&gt;
    BEGIN&lt;br /&gt;
        SET @pos = CHARINDEX(@delim, @str, @start);&lt;br /&gt;
&lt;br /&gt;
        IF @pos = 0&lt;br /&gt;
        BEGIN&lt;br /&gt;
            IF @cur = @idx&lt;br /&gt;
                RETURN SUBSTRING(@str, @start, LEN(@str) - @start + 1);&lt;br /&gt;
            RETURN NULL;&lt;br /&gt;
        END&lt;br /&gt;
&lt;br /&gt;
        IF @cur = @idx&lt;br /&gt;
            RETURN SUBSTRING(@str, @start, @pos - @start);&lt;br /&gt;
&lt;br /&gt;
        SET @start = @pos + @dlen;&lt;br /&gt;
        SET @cur += 1;&lt;br /&gt;
    END&lt;br /&gt;
&lt;br /&gt;
    RETURN NULL;&lt;br /&gt;
END;&lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
UPDATE pc_device SET app_id = dbo.split_part(device_push_id, &#039;####&#039;, 2) WHERE app_id IS NULL;&lt;br /&gt;
UPDATE pc_device SET device_push_id = dbo.split_part(device_push_id, &#039;####&#039;, 1) WHERE app_id IS NOT NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
* Вся документация - https://repo.paycontrol.org/&lt;br /&gt;
&lt;br /&gt;
* Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
&lt;br /&gt;
* Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
&lt;br /&gt;
== Доступ к сервисам ==&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/&lt;br /&gt;
&lt;br /&gt;
=== Health Check ===&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек health check:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/health_check&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите сервисы PC.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
Переключитесь на Java 11.&lt;br /&gt;
&lt;br /&gt;
Запустите wildfly и включите автозапуск.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=PC_via_queues&amp;diff=868</id>
		<title>PC via queues</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=PC_via_queues&amp;diff=868"/>
		<updated>2025-10-08T12:01:11Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Настройка PC External */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Описание=&lt;br /&gt;
Описание схемы встраивания, в которой используются очереди, доступно по ссылке:&lt;br /&gt;
&lt;br /&gt;
https://repo.paycontrol.org/server/doc/latest/pc-handbook/ru/#использование-очередей-для-ограничения-соединений-от-pce-к-pcs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Экземпляр RabbitMQ, в котором будут автоматически созданы две очереди, загружается и разворачивается заказчиком.&lt;br /&gt;
&lt;br /&gt;
Загрузить RabbitMQ можно на сайте: https://www.rabbitmq.com&lt;br /&gt;
&lt;br /&gt;
Для корректной работы с очередями нужно создать админ-пользователя помимо guest и настроить подключение через этого нового пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Приложение состоит из двух модулей:&lt;br /&gt;
* для зоны DMZ - &#039;&#039;pc-queue-dmz-1.0.jar&#039;&#039;;&lt;br /&gt;
* для внутренней сети &#039;&#039;pc-queue-lan-1.0.jar&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Файлы для запуска=&lt;br /&gt;
==Linux==&lt;br /&gt;
Файлы запуска имеют разрешение &#039;&#039;.service&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Для корректной работы приложения необходимо их отредактировать под конкретное окружение.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;WorkingDirectory=/opt/clientSide&#039;&#039; - директория в которой располагается исполняемый файл конкретного приложения&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ExecStart=java -Xms256m -Xmx512m -jar /opt/clientSide/clientSide-1.0.jar /opt/clientSide/application.yml&#039;&#039; - строка для запуска приложения&lt;br /&gt;
&lt;br /&gt;
Также необходимо обратить на пути до приложения и файла настроек&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;User=pcontrol&#039;&#039; - пользователь под которым будет запускаться приложение.&lt;br /&gt;
&lt;br /&gt;
=Установка=&lt;br /&gt;
==pc-dmz-queue==&lt;br /&gt;
===Windows===&lt;br /&gt;
Распакуйте архив в корень диска, так, чтобы файл &#039;&#039;winsw.exe&#039;&#039; был доступен по пути &#039;&#039;C:\pc-dmz-queue\winsw.exe&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
В командной строке выполните следующие команды&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cmd&amp;quot;&amp;gt;&lt;br /&gt;
cd C:\pc-queue-dmz\&lt;br /&gt;
winsw.exe install pc-queue-dmz-1.0.jar&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Логи пишутся в &#039;&#039;C:\pc-queue-dmz\&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Созданной службой можно управлять из приложения Службы(Services).&lt;br /&gt;
&lt;br /&gt;
Настройка подключений производится в &#039;&#039;application.yml&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
Создать папку&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /opt/pc-queue-dmz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
В настройках файлов `.service` указать пользователя wildfly или создать нового, с аналогичными параметрами.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
groupadd -r username&lt;br /&gt;
useradd -r -g username -d /opt/pc-queue-dmz -s /sbin/nologin username&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Предоставить доступ на запуск файлу start.sh&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod +x start.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Скопировать файл сервиса, запустить его и включить автозапуск&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo cp -v pc-dmz-queue.service /etc/systemd/system/&lt;br /&gt;
sudo systemctl enable pc-queue-dmz.service&lt;br /&gt;
sudo systemctl start pc-queue-dmz.service&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Для просмотра журнала работы сервиса необходимо использовать &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
journalctl -u pc-queue-dmz.service&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==pc-queue-lan==&lt;br /&gt;
===Windows===&lt;br /&gt;
Распакуйте архив в корень диска, так, чтобы файл &#039;&#039;winsw.exe&#039;&#039; был доступен по пути &#039;&#039;C:\pc-queue-lan\winsw.exe&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
В командной строке выполните следующие команды&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cmd&amp;quot;&amp;gt;&lt;br /&gt;
cd C:\pc-queue-lan\&lt;br /&gt;
winsw.exe install pc-queue-lan-1.0.jar&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Логи пишутся в &#039;&#039;C:\pc-queue-lan\&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Созданной службой можно управлять из приложения Службы(Services).&lt;br /&gt;
&lt;br /&gt;
Настройка подключений производится в &#039;&#039;application.yml&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
Создать папку&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /opt/pc-queue-lan&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В настройках файлов `.service` указать пользователя wildfly или создать нового, с аналогичными параметрами.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
groupadd -r username&lt;br /&gt;
useradd -r -g username -d /opt/pc-queue-lan -s /sbin/nologin username&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предоставить доступ на запуск файлу start.sh&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod +x start.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Скопировать файл сервиса, запустить его и включить автозапуск&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo cp -v pc-queue-lan.service /etc/systemd/system/&lt;br /&gt;
sudo systemctl start pc-queue-lan.service&lt;br /&gt;
sudo systemctl enable pc-queue-lan.service&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для просмотра журнала работы сервиса необходимо использовать &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
journalctl -u pc-queue-lan.service&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Конфигурирование модулей=&lt;br /&gt;
Установка параметров работы модулей производится в файле application.yml.&lt;br /&gt;
&lt;br /&gt;
==Настройка входящих соединений==&lt;br /&gt;
Можно уточнить сетевой порт и адрес, который  будет слушать модуль.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;yml&amp;quot;&amp;gt;&lt;br /&gt;
server:&lt;br /&gt;
  port: 8090&lt;br /&gt;
  address: 0.0.0.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0.0.0.0 - означает что модуль будет принимать все запросы на любых сетевых интерфейсах&lt;br /&gt;
&lt;br /&gt;
==Настройка подключения к брокеру очередей==&lt;br /&gt;
Модули работают с брокером RabbitMQ. Пример параметров подключения:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;yml&amp;quot;&amp;gt;&lt;br /&gt;
spring:&lt;br /&gt;
  rabbitmq:&lt;br /&gt;
    username: exampleuser&lt;br /&gt;
    password: examplepass&lt;br /&gt;
    virtual-host: /&lt;br /&gt;
    host: example.rabbit.loc&lt;br /&gt;
    port: 5672&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Настройка модуля pc-queue-lan для подключения к серверу PCS==&lt;br /&gt;
Адрес и порт сервера PCS:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;yml&amp;quot;&amp;gt;&lt;br /&gt;
paycontrol:&lt;br /&gt;
  url: example.pcs.loc&lt;br /&gt;
  port: 8080&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Настройка PC на работу через очередь=&lt;br /&gt;
==Настройка PC External==&lt;br /&gt;
Для настройки PC External на отправку сообщений в очередь, необхоимо в файле &lt;br /&gt;
* Linux - `/opt/wildfly/bin/standalone.conf`&lt;br /&gt;
* Windows - `wildfly\bin\standalone.conf.bat`&lt;br /&gt;
в параметрах переменных окружения, вместо адреса сервера PCS задать адрес модуля pc-queue-dmz, например:&lt;br /&gt;
&lt;br /&gt;
===v3===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
-Dpcservice.endpoint=http://localhost:8090/ws/PayControlServiceV3?wsdl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===v5===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
-Dpc_url=http://localhost:8090/pc-api/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===v6===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;yml&amp;quot;&amp;gt;&lt;br /&gt;
pc:&lt;br /&gt;
  external:&lt;br /&gt;
    server:&lt;br /&gt;
      url: http://localhost:8090/pc-api/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При этом адрес эндпоинта должен оставаться таким-же как и для сервера PC Server.&lt;br /&gt;
&lt;br /&gt;
==Настройка PC Server==&lt;br /&gt;
Внесение настроек на сервер PC Server не требуется.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=867</id>
		<title>Обновление PayControl с версии 3 на версию 6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=867"/>
		<updated>2025-09-25T08:31:27Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Изменение адреса для внешних подключений (PCE) с мобильных устройств */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Введение =&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Перед обновлением необходимо выполнить резервное копирование БД PCS.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC &#039;&#039;&#039;требуется&#039;&#039;&#039; остановить Wildfly и обновить Java до версии 17. Версия 11 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и PC может продолжить работать на версии 11, что приведёт к ошибкам. &lt;br /&gt;
&lt;br /&gt;
Для того чтобы компоненты работали под Java 17, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 6 изменены названия серверов:&lt;br /&gt;
&lt;br /&gt;
* PC Server (PCS) — без изменений;&lt;br /&gt;
* PC Interaction Internal — PC Pusher (PCP);&lt;br /&gt;
* PC Interaction External — PC External (PCE).&lt;br /&gt;
&lt;br /&gt;
= Изменения в БД =&lt;br /&gt;
&lt;br /&gt;
== Правки структуры таблиц БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== Postgre ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_delayedkeyinfo drop column type;&lt;br /&gt;
alter table pc_delayedkeyinfo add column renew_challenge varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_device alter column is_deleted set not null;&lt;br /&gt;
alter table pc_device alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_device add column app_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_event alter column is_deleted set not null;&lt;br /&gt;
alter table pc_event alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_event alter column requester_ip type varchar(64);&lt;br /&gt;
alter table pc_event add column event_data text;&lt;br /&gt;
alter table pc_event drop column eventposturl;&lt;br /&gt;
&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_keyinfo drop column type;&lt;br /&gt;
alter table pc_keyinfo drop column key_container_id;&lt;br /&gt;
alter table pc_keyinfo add column external_approve_data_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_publickey alter column is_deleted set not null;&lt;br /&gt;
alter table pc_publickey alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_publickey add column autosign_public_key bytea;&lt;br /&gt;
&lt;br /&gt;
alter table pc_system alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system add column callback_url varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_system_params alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system_params alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system_params alter column license type varchar(4096);&lt;br /&gt;
alter table pc_system_params add column qr_url_scheme varchar(24);&lt;br /&gt;
&lt;br /&gt;
alter table pc_transaction alter column is_deleted set not null;&lt;br /&gt;
alter table pc_transaction alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_transaction add column autosign_enabled int2;&lt;br /&gt;
alter table pc_transaction add column ext_pulp bytea;&lt;br /&gt;
alter table pc_transaction add column extended_check int2;&lt;br /&gt;
alter table pc_transaction add column render_type int4;&lt;br /&gt;
alter table pc_transaction add column scoring_settings varchar(1023);&lt;br /&gt;
alter table pc_transaction add column transaction_type int4;&lt;br /&gt;
&lt;br /&gt;
alter table pc_user alter column is_deleted set not null;&lt;br /&gt;
alter table pc_user alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_user add column blocked int2;&lt;br /&gt;
&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_results varchar(512);&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_settings varchar(512);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MS SQL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;transaction_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        transaction_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_SYSTEM]&#039;)&lt;br /&gt;
          AND name = &#039;callback_url&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_SYSTEM&lt;br /&gt;
    ADD&lt;br /&gt;
        callback_url character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_USER]&#039;)&lt;br /&gt;
          AND name = &#039;blocked&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_USER&lt;br /&gt;
    ADD&lt;br /&gt;
        blocked smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;external_approve_data_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        external_approve_data_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_PUBLICKEY]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_public_key&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_public_key varbinary(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;renew_challenge&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        renew_challenge character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DEVICE]&#039;)&lt;br /&gt;
          AND name = &#039;app_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DEVICE&lt;br /&gt;
    ADD&lt;br /&gt;
        app_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_enabled&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_enabled smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;ext_pulp&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        ext_pulp character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;extended_check&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        extended_check smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;render_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        render_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(1023);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_results&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_results character varying(512);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(512);&lt;br /&gt;
		&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_EVENT]&#039;)&lt;br /&gt;
          AND name = &#039;event_data&#039;&lt;br /&gt;
    )&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ADD&lt;br /&gt;
            event_data VARCHAR(MAX);&lt;br /&gt;
ELSE&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ALTER COLUMN event_data VARCHAR(MAX);&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE PC_EVENT ALTER COLUMN requester_ip varchar(64);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oracle ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo DROP COLUMN type;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo ADD renew_challenge VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_device MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_device MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_device ADD app_id VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_event MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_event MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_event MODIFY requester_ip VARCHAR2(64);&lt;br /&gt;
ALTER TABLE pc_event ADD event_data CLOB;&lt;br /&gt;
ALTER TABLE pc_event DROP COLUMN eventposturl;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_keyinfo MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_keyinfo MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_keyinfo DROP COLUMN type;&lt;br /&gt;
ALTER TABLE pc_keyinfo DROP COLUMN key_container_id;&lt;br /&gt;
ALTER TABLE pc_keyinfo ADD external_approve_data_id VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_publickey MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_publickey MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_publickey ADD autosign_public_key BLOB;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_system MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_system MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_system ADD callback_url VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY license VARCHAR2(4000);&lt;br /&gt;
ALTER TABLE pc_system_params ADD qr_url_scheme VARCHAR2(24);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_transaction MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_transaction MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_transaction ADD autosign_enabled NUMBER(5);&lt;br /&gt;
ALTER TABLE pc_transaction ADD ext_pulp BLOB;&lt;br /&gt;
ALTER TABLE pc_transaction ADD extended_check NUMBER(5);&lt;br /&gt;
ALTER TABLE pc_transaction ADD render_type NUMBER(10);&lt;br /&gt;
ALTER TABLE pc_transaction ADD scoring_settings VARCHAR2(1023);&lt;br /&gt;
ALTER TABLE pc_transaction ADD transaction_type NUMBER(10);&lt;br /&gt;
ALTER TABLE pc_transaction ADD snipped_text VARCHAR2(1023);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_user MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_user MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_user ADD blocked NUMBER(5);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_confirm_attempt ADD scoring_results VARCHAR2(512);&lt;br /&gt;
ALTER TABLE pc_confirm_attempt ADD scoring_settings VARCHAR2(512);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_sys_property MODIFY SETTING_VALUE VARCHAR2(1023);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запрос на регистрацию и лицензия ==&lt;br /&gt;
&lt;br /&gt;
=== Получение нового запроса и лицензии ===&lt;br /&gt;
&lt;br /&gt;
Для получения обновленного запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
=== Замена запроса в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%REGISTERREQUEST%&amp;lt;/code&amp;gt; на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%REGISTERREQUEST%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замена лицензии(при наличии) в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%LICENSE%&amp;lt;/code&amp;gt; на реальные данные лицензии, созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;{&amp;quot;request&amp;quot;:{&amp;quot;systemId&amp;quot;:&amp;quot;99000000-e00e-0ad0-00ab-f00f0000a0b0&amp;quot;,&amp;quot;dateTime&amp;quot;:1700000000000,&amp;quot;usersCount&amp;quot;:100,&amp;quot;licenseID&amp;quot;:&amp;quot;0000e000-0000-0000-b0ec-c0f0000000f0&amp;quot;,&amp;quot;type&amp;quot;:2,&amp;quot;features&amp;quot;:{&amp;quot;gost_crypto&amp;quot;:false,&amp;quot;pki&amp;quot;:{&amp;quot;openssl&amp;quot;:false},&amp;quot;binary_data&amp;quot;:{&amp;quot;raw&amp;quot;:true,&amp;quot;pdf&amp;quot;:true},&amp;quot;server_signer&amp;quot;:false,&amp;quot;rks&amp;quot;:false}},&amp;quot;signature&amp;quot;:&amp;quot;MEYCIQDy7OUT6iiligbiugYcpK9fjkU/GDRIUiJtB+UcHppVwIhAKzS+EcktxyRikvqEThPyo1jHlPuAfgxW+EEo5gioW7Y&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set license=&#039;%LICENSE%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Обновление модулей PC =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для установки PC 6-й версии воспользуйтесь инструкцией по ссылке - https://repo.paycontrol.org/server/doc/latest/pc-install-guide/ru/#перед-установкой&lt;br /&gt;
&lt;br /&gt;
После обновления &#039;&#039;&#039;необходимо&#039;&#039;&#039; отключить автозапуск Wildfly и выполнить запрос к БД:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_keyinfo set is_activated=1;&lt;br /&gt;
update pc_transaction set transaction_type=0;&lt;br /&gt;
update pc_transaction set render_type=0;&lt;br /&gt;
update pc_transaction set status=6 where status=4;&lt;br /&gt;
update pc_transaction set status=7 where status=5;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректировка (смена) адресов компонентов серверов PC ==&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCP для подключения с PCS ===&lt;br /&gt;
&lt;br /&gt;
Для изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;:8082/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса для внешних подключений (PCE) с мобильных устройств ===&lt;br /&gt;
&lt;br /&gt;
Для изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-client-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Не требуется начиная с версии 6.9.1&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Для работы старых ключей, обращающихся по эндпоинту &amp;lt;code&amp;gt;/PayControl-interaction-rest/&amp;lt;/code&amp;gt; нужно установить проксирование на эндпоинт &amp;lt;code&amp;gt;/pc-client-api/&amp;lt;/code&amp;gt;, любым удобным способом.&lt;br /&gt;
&lt;br /&gt;
Пример для nginx:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
        location /PayControl-interaction-rest/ {&lt;br /&gt;
                proxy_pass http://o-pc-ext-example.com:8081/pc-client-api/;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Правки для корректной отправки пушей ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=1;&lt;br /&gt;
!!!Запрос выше для Android при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;Android&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=2;&lt;br /&gt;
!!!Запрос выше для iOS при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;iOS&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&lt;br /&gt;
!!! &#039;&#039;&#039;Обратите внимание&#039;&#039;&#039;, что для выполнения запросов со split_part на Oracle нужно сначала выполнить запрос ниже:&lt;br /&gt;
create or replace function split_part(pString varchar2, pDelimiter varchar2, pPartNumber integer) return varchar2 deterministic is&lt;br /&gt;
  vStart number; &lt;br /&gt;
  vEnd   number;&lt;br /&gt;
begin&lt;br /&gt;
  if pPartNumber &amp;lt;&amp;gt; 0 and pDelimiter is not null then&lt;br /&gt;
    vStart := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber));&lt;br /&gt;
    vEnd   := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber) + 1);&lt;br /&gt;
  end if;&lt;br /&gt;
  return case         &lt;br /&gt;
           when pDelimiter is null and abs(pPartNumber) = 1 then pString&lt;br /&gt;
           when pPartNumber &amp;gt; 0 then substr(pString, vStart, vEnd - vStart - length(pDelimiter))                       &lt;br /&gt;
           when pPartNumber &amp;lt; 0 then substr(pString, vEnd, vStart - vEnd - length(pDelimiter))          &lt;br /&gt;
           else null&lt;br /&gt;
         end;&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
* Вся документация - https://repo.paycontrol.org/&lt;br /&gt;
&lt;br /&gt;
* Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
&lt;br /&gt;
* Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
&lt;br /&gt;
== Доступ к сервисам ==&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/&lt;br /&gt;
&lt;br /&gt;
=== Health Check ===&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек health check:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/health_check&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите сервисы PC.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
Переключитесь на Java 11.&lt;br /&gt;
&lt;br /&gt;
Запустите wildfly и включите автозапуск.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=865</id>
		<title>Обновление PayControl с версии 3 на версию 6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=865"/>
		<updated>2025-08-07T11:40:15Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Обновление модулей PC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Введение =&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Перед обновлением необходимо выполнить резервное копирование БД PCS и PCIS Internal.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC &#039;&#039;&#039;требуется&#039;&#039;&#039; остановить Wildfly и обновить Java до версии 17. Версия 11 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и PC может продолжить работать на версии 11, что приведёт к ошибкам. &lt;br /&gt;
&lt;br /&gt;
Для того чтобы компоненты работали под Java 17, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 6 изменены названия серверов:&lt;br /&gt;
&lt;br /&gt;
* PC Server (PCS) — без изменений;&lt;br /&gt;
* PC Interaction Internal — PC Pusher (PCP);&lt;br /&gt;
* PC Interaction External — PC External (PCE).&lt;br /&gt;
&lt;br /&gt;
= Изменения в БД =&lt;br /&gt;
&lt;br /&gt;
== Правки структуры таблиц БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== Postgre ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_delayedkeyinfo drop column type;&lt;br /&gt;
alter table pc_delayedkeyinfo add column renew_challenge varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_device alter column is_deleted set not null;&lt;br /&gt;
alter table pc_device alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_device add column app_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_event alter column is_deleted set not null;&lt;br /&gt;
alter table pc_event alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_event alter column requester_ip type varchar(64);&lt;br /&gt;
alter table pc_event add column event_data text;&lt;br /&gt;
alter table pc_event drop column eventposturl;&lt;br /&gt;
&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_keyinfo drop column type;&lt;br /&gt;
alter table pc_keyinfo drop column key_container_id;&lt;br /&gt;
alter table pc_keyinfo add column external_approve_data_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_publickey alter column is_deleted set not null;&lt;br /&gt;
alter table pc_publickey alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_publickey add column autosign_public_key bytea;&lt;br /&gt;
&lt;br /&gt;
alter table pc_system alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system add column callback_url varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_system_params alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system_params alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system_params alter column license type varchar(4096);&lt;br /&gt;
alter table pc_system_params add column qr_url_scheme varchar(24);&lt;br /&gt;
&lt;br /&gt;
alter table pc_transaction alter column is_deleted set not null;&lt;br /&gt;
alter table pc_transaction alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_transaction add column autosign_enabled int2;&lt;br /&gt;
alter table pc_transaction add column ext_pulp bytea;&lt;br /&gt;
alter table pc_transaction add column extended_check int2;&lt;br /&gt;
alter table pc_transaction add column render_type int4;&lt;br /&gt;
alter table pc_transaction add column scoring_settings varchar(1023);&lt;br /&gt;
alter table pc_transaction add column transaction_type int4;&lt;br /&gt;
&lt;br /&gt;
alter table pc_user alter column is_deleted set not null;&lt;br /&gt;
alter table pc_user alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_user add column blocked int2;&lt;br /&gt;
&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_results varchar(512);&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_settings varchar(512);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MS SQL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;transaction_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        transaction_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_SYSTEM]&#039;)&lt;br /&gt;
          AND name = &#039;callback_url&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_SYSTEM&lt;br /&gt;
    ADD&lt;br /&gt;
        callback_url character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_USER]&#039;)&lt;br /&gt;
          AND name = &#039;blocked&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_USER&lt;br /&gt;
    ADD&lt;br /&gt;
        blocked smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;external_approve_data_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        external_approve_data_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_PUBLICKEY]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_public_key&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_public_key varbinary(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;renew_challenge&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        renew_challenge character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DEVICE]&#039;)&lt;br /&gt;
          AND name = &#039;app_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DEVICE&lt;br /&gt;
    ADD&lt;br /&gt;
        app_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_enabled&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_enabled smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;ext_pulp&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        ext_pulp character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;extended_check&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        extended_check smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;render_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        render_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(1023);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_results&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_results character varying(512);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(512);&lt;br /&gt;
		&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_EVENT]&#039;)&lt;br /&gt;
          AND name = &#039;event_data&#039;&lt;br /&gt;
    )&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ADD&lt;br /&gt;
            event_data VARCHAR(MAX);&lt;br /&gt;
ELSE&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ALTER COLUMN event_data VARCHAR(MAX);&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE PC_EVENT ALTER COLUMN requester_ip varchar(64);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oracle ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo DROP COLUMN type;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo ADD renew_challenge VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_device MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_device MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_device ADD app_id VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_event MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_event MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_event MODIFY requester_ip VARCHAR2(64);&lt;br /&gt;
ALTER TABLE pc_event ADD event_data CLOB;&lt;br /&gt;
ALTER TABLE pc_event DROP COLUMN eventposturl;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_keyinfo MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_keyinfo MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_keyinfo DROP COLUMN type;&lt;br /&gt;
ALTER TABLE pc_keyinfo DROP COLUMN key_container_id;&lt;br /&gt;
ALTER TABLE pc_keyinfo ADD external_approve_data_id VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_publickey MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_publickey MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_publickey ADD autosign_public_key BLOB;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_system MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_system MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_system ADD callback_url VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY license VARCHAR2(4000);&lt;br /&gt;
ALTER TABLE pc_system_params ADD qr_url_scheme VARCHAR2(24);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_transaction MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_transaction MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_transaction ADD autosign_enabled NUMBER(5);&lt;br /&gt;
ALTER TABLE pc_transaction ADD ext_pulp BLOB;&lt;br /&gt;
ALTER TABLE pc_transaction ADD extended_check NUMBER(5);&lt;br /&gt;
ALTER TABLE pc_transaction ADD render_type NUMBER(10);&lt;br /&gt;
ALTER TABLE pc_transaction ADD scoring_settings VARCHAR2(1023);&lt;br /&gt;
ALTER TABLE pc_transaction ADD transaction_type NUMBER(10);&lt;br /&gt;
ALTER TABLE pc_transaction ADD snipped_text VARCHAR2(1023);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_user MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_user MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_user ADD blocked NUMBER(5);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_confirm_attempt ADD scoring_results VARCHAR2(512);&lt;br /&gt;
ALTER TABLE pc_confirm_attempt ADD scoring_settings VARCHAR2(512);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_sys_property MODIFY SETTING_VALUE VARCHAR2(1023);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запрос на регистрацию и лицензия ==&lt;br /&gt;
&lt;br /&gt;
=== Получение нового запроса и лицензии ===&lt;br /&gt;
&lt;br /&gt;
Для получения обновленного запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
=== Замена запроса в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%REGISTERREQUEST%&amp;lt;/code&amp;gt; на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%REGISTERREQUEST%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замена лицензии(при наличии) в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%LICENSE%&amp;lt;/code&amp;gt; на реальные данные лицензии, созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;{&amp;quot;request&amp;quot;:{&amp;quot;systemId&amp;quot;:&amp;quot;99000000-e00e-0ad0-00ab-f00f0000a0b0&amp;quot;,&amp;quot;dateTime&amp;quot;:1700000000000,&amp;quot;usersCount&amp;quot;:100,&amp;quot;licenseID&amp;quot;:&amp;quot;0000e000-0000-0000-b0ec-c0f0000000f0&amp;quot;,&amp;quot;type&amp;quot;:2,&amp;quot;features&amp;quot;:{&amp;quot;gost_crypto&amp;quot;:false,&amp;quot;pki&amp;quot;:{&amp;quot;openssl&amp;quot;:false},&amp;quot;binary_data&amp;quot;:{&amp;quot;raw&amp;quot;:true,&amp;quot;pdf&amp;quot;:true},&amp;quot;server_signer&amp;quot;:false,&amp;quot;rks&amp;quot;:false}},&amp;quot;signature&amp;quot;:&amp;quot;MEYCIQDy7OUT6iiligbiugYcpK9fjkU/GDRIUiJtB+UcHppVwIhAKzS+EcktxyRikvqEThPyo1jHlPuAfgxW+EEo5gioW7Y&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set license=&#039;%LICENSE%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Обновление модулей PC =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для установки PC 6-й версии воспользуйтесь инструкцией по ссылке - https://repo.paycontrol.org/server/doc/latest/pc-install-guide/ru/#перед-установкой&lt;br /&gt;
&lt;br /&gt;
После обновления &#039;&#039;&#039;необходимо&#039;&#039;&#039; отключить автозапуск Wildfly и выполнить запрос к БД:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_keyinfo set is_activated=1;&lt;br /&gt;
update pc_transaction set transaction_type=0;&lt;br /&gt;
update pc_transaction set render_type=0;&lt;br /&gt;
update pc_transaction set status=6 where status=4;&lt;br /&gt;
update pc_transaction set status=7 where status=5;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректировка (смена) адресов компонентов серверов PC ==&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCP для подключения с PCS ===&lt;br /&gt;
&lt;br /&gt;
Для изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;:8082/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса для внешних подключений (PCE) с мобильных устройств ===&lt;br /&gt;
&lt;br /&gt;
Для изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-client-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
На версии сервера 6.0.0-6.9.0 &#039;&#039;&#039;для работы старых ключей&#039;&#039;&#039;, обращающихся по эндпоинту &amp;lt;code&amp;gt;/PayControl-interaction-rest/&amp;lt;/code&amp;gt; нужно установить проксирование на эндпоинт &amp;lt;code&amp;gt;/pc-client-api/&amp;lt;/code&amp;gt;, любым удобным способом.&lt;br /&gt;
&lt;br /&gt;
Пример для nginx:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
        location /PayControl-interaction-rest/ {&lt;br /&gt;
                proxy_pass http://o-pc-ext-example.com:8081/pc-client-api/;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Правки для корректной отправки пушей ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=1;&lt;br /&gt;
!!!Запрос выше для Android при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;Android&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=2;&lt;br /&gt;
!!!Запрос выше для iOS при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;iOS&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&lt;br /&gt;
!!! &#039;&#039;&#039;Обратите внимание&#039;&#039;&#039;, что для выполнения запросов со split_part на Oracle нужно сначала выполнить запрос ниже:&lt;br /&gt;
create or replace function split_part(pString varchar2, pDelimiter varchar2, pPartNumber integer) return varchar2 deterministic is&lt;br /&gt;
  vStart number; &lt;br /&gt;
  vEnd   number;&lt;br /&gt;
begin&lt;br /&gt;
  if pPartNumber &amp;lt;&amp;gt; 0 and pDelimiter is not null then&lt;br /&gt;
    vStart := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber));&lt;br /&gt;
    vEnd   := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber) + 1);&lt;br /&gt;
  end if;&lt;br /&gt;
  return case         &lt;br /&gt;
           when pDelimiter is null and abs(pPartNumber) = 1 then pString&lt;br /&gt;
           when pPartNumber &amp;gt; 0 then substr(pString, vStart, vEnd - vStart - length(pDelimiter))                       &lt;br /&gt;
           when pPartNumber &amp;lt; 0 then substr(pString, vEnd, vStart - vEnd - length(pDelimiter))          &lt;br /&gt;
           else null&lt;br /&gt;
         end;&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
* Вся документация - https://repo.paycontrol.org/&lt;br /&gt;
&lt;br /&gt;
* Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
&lt;br /&gt;
* Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
&lt;br /&gt;
== Доступ к сервисам ==&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/&lt;br /&gt;
&lt;br /&gt;
=== Health Check ===&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек health check:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/health_check&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите сервисы PC.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
Переключитесь на Java 11.&lt;br /&gt;
&lt;br /&gt;
Запустите wildfly и включите автозапуск.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_5_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=864</id>
		<title>Обновление PayControl с версии 5 на версию 6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_5_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=864"/>
		<updated>2025-08-05T11:02:59Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Замена лицензии(при наличии) в БД */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC &#039;&#039;&#039;требуется&#039;&#039;&#039; остановить Wildfly и обновить Java до версии 17. Версия 11 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и PC может продолжить работать на версии 11, что приведёт к ошибкам. &lt;br /&gt;
&lt;br /&gt;
Для того чтобы компоненты работали под Java 17, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Изменения в БД =&lt;br /&gt;
&lt;br /&gt;
== Запрос на регистрацию и лицензия ==&lt;br /&gt;
&lt;br /&gt;
=== Получение нового запроса и лицензии ===&lt;br /&gt;
&lt;br /&gt;
Для получения нового запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
=== Замена запроса в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%REGISTERREQUEST%&amp;lt;/code&amp;gt; на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%REGISTERREQUEST%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замена лицензии(при наличии) в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%LICENSE%&amp;lt;/code&amp;gt; на реальные данные лицензии, созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;{&amp;quot;request&amp;quot;:{&amp;quot;systemId&amp;quot;:&amp;quot;99000000-e00e-0ad0-00ab-f00f0000a0b0&amp;quot;,&amp;quot;dateTime&amp;quot;:1700000000000,&amp;quot;usersCount&amp;quot;:100,&amp;quot;licenseID&amp;quot;:&amp;quot;0000e000-0000-0000-b0ec-c0f0000000f0&amp;quot;,&amp;quot;type&amp;quot;:2,&amp;quot;features&amp;quot;:{&amp;quot;gost_crypto&amp;quot;:false,&amp;quot;pki&amp;quot;:{&amp;quot;openssl&amp;quot;:false},&amp;quot;binary_data&amp;quot;:{&amp;quot;raw&amp;quot;:true,&amp;quot;pdf&amp;quot;:true},&amp;quot;server_signer&amp;quot;:false,&amp;quot;rks&amp;quot;:false}},&amp;quot;signature&amp;quot;:&amp;quot;MEYCIQDy7OUT6iiligbiugYcpK9fjkU/GDRIUiJtB+UcHppVwIhAKzS+EcktxyRikvqEThPyo1jHlPuAfgxW+EEo5gioW7Y&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set license=&#039;%LICENSE%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Обновление модулей PC =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для установки PC 6-й версии воспользуйтесь инструкцией по ссылке - https://repo.paycontrol.org/server/doc/latest/pc-install-guide/ru/#перед-установкой&lt;br /&gt;
&lt;br /&gt;
После обновления &#039;&#039;&#039;необходимо&#039;&#039;&#039; отключить автозапуск Wildfly.&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
* Вся документация - https://repo.paycontrol.org/&lt;br /&gt;
&lt;br /&gt;
* Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
&lt;br /&gt;
* Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=863</id>
		<title>Обновление PayControl с версии 3 на версию 6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=863"/>
		<updated>2025-07-09T07:25:46Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Получение нового запроса и лицензии */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Введение =&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Перед обновлением необходимо выполнить резервное копирование БД PCS и PCIS Internal.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC &#039;&#039;&#039;требуется&#039;&#039;&#039; остановить Wildfly и обновить Java до версии 17. Версия 11 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и PC может продолжить работать на версии 11, что приведёт к ошибкам. &lt;br /&gt;
&lt;br /&gt;
Для того чтобы компоненты работали под Java 17, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 6 изменены названия серверов:&lt;br /&gt;
&lt;br /&gt;
* PC Server (PCS) — без изменений;&lt;br /&gt;
* PC Interaction Internal — PC Pusher (PCP);&lt;br /&gt;
* PC Interaction External — PC External (PCE).&lt;br /&gt;
&lt;br /&gt;
= Изменения в БД =&lt;br /&gt;
&lt;br /&gt;
== Правки структуры таблиц БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== Postgre ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_delayedkeyinfo drop column type;&lt;br /&gt;
alter table pc_delayedkeyinfo add column renew_challenge varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_device alter column is_deleted set not null;&lt;br /&gt;
alter table pc_device alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_device add column app_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_event alter column is_deleted set not null;&lt;br /&gt;
alter table pc_event alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_event alter column requester_ip type varchar(64);&lt;br /&gt;
alter table pc_event add column event_data text;&lt;br /&gt;
alter table pc_event drop column eventposturl;&lt;br /&gt;
&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_keyinfo drop column type;&lt;br /&gt;
alter table pc_keyinfo drop column key_container_id;&lt;br /&gt;
alter table pc_keyinfo add column external_approve_data_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_publickey alter column is_deleted set not null;&lt;br /&gt;
alter table pc_publickey alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_publickey add column autosign_public_key bytea;&lt;br /&gt;
&lt;br /&gt;
alter table pc_system alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system add column callback_url varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_system_params alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system_params alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system_params alter column license type varchar(4096);&lt;br /&gt;
alter table pc_system_params add column qr_url_scheme varchar(24);&lt;br /&gt;
&lt;br /&gt;
alter table pc_transaction alter column is_deleted set not null;&lt;br /&gt;
alter table pc_transaction alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_transaction add column autosign_enabled int2;&lt;br /&gt;
alter table pc_transaction add column ext_pulp bytea;&lt;br /&gt;
alter table pc_transaction add column extended_check int2;&lt;br /&gt;
alter table pc_transaction add column render_type int4;&lt;br /&gt;
alter table pc_transaction add column scoring_settings varchar(1023);&lt;br /&gt;
alter table pc_transaction add column transaction_type int4;&lt;br /&gt;
&lt;br /&gt;
alter table pc_user alter column is_deleted set not null;&lt;br /&gt;
alter table pc_user alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_user add column blocked int2;&lt;br /&gt;
&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_results varchar(512);&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_settings varchar(512);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MS SQL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;transaction_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        transaction_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_SYSTEM]&#039;)&lt;br /&gt;
          AND name = &#039;callback_url&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_SYSTEM&lt;br /&gt;
    ADD&lt;br /&gt;
        callback_url character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_USER]&#039;)&lt;br /&gt;
          AND name = &#039;blocked&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_USER&lt;br /&gt;
    ADD&lt;br /&gt;
        blocked smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;external_approve_data_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        external_approve_data_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_PUBLICKEY]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_public_key&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_public_key varbinary(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;renew_challenge&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        renew_challenge character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DEVICE]&#039;)&lt;br /&gt;
          AND name = &#039;app_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DEVICE&lt;br /&gt;
    ADD&lt;br /&gt;
        app_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_enabled&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_enabled smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;ext_pulp&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        ext_pulp character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;extended_check&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        extended_check smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;render_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        render_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(1023);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_results&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_results character varying(512);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(512);&lt;br /&gt;
		&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_EVENT]&#039;)&lt;br /&gt;
          AND name = &#039;event_data&#039;&lt;br /&gt;
    )&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ADD&lt;br /&gt;
            event_data VARCHAR(MAX);&lt;br /&gt;
ELSE&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ALTER COLUMN event_data VARCHAR(MAX);&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE PC_EVENT ALTER COLUMN requester_ip varchar(64);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oracle ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo DROP COLUMN type;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo ADD renew_challenge VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_device MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_device MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_device ADD app_id VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_event MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_event MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_event MODIFY requester_ip VARCHAR2(64);&lt;br /&gt;
ALTER TABLE pc_event ADD event_data CLOB;&lt;br /&gt;
ALTER TABLE pc_event DROP COLUMN eventposturl;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_keyinfo MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_keyinfo MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_keyinfo DROP COLUMN type;&lt;br /&gt;
ALTER TABLE pc_keyinfo DROP COLUMN key_container_id;&lt;br /&gt;
ALTER TABLE pc_keyinfo ADD external_approve_data_id VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_publickey MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_publickey MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_publickey ADD autosign_public_key BLOB;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_system MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_system MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_system ADD callback_url VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY license VARCHAR2(4000);&lt;br /&gt;
ALTER TABLE pc_system_params ADD qr_url_scheme VARCHAR2(24);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_transaction MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_transaction MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_transaction ADD autosign_enabled NUMBER(5);&lt;br /&gt;
ALTER TABLE pc_transaction ADD ext_pulp BLOB;&lt;br /&gt;
ALTER TABLE pc_transaction ADD extended_check NUMBER(5);&lt;br /&gt;
ALTER TABLE pc_transaction ADD render_type NUMBER(10);&lt;br /&gt;
ALTER TABLE pc_transaction ADD scoring_settings VARCHAR2(1023);&lt;br /&gt;
ALTER TABLE pc_transaction ADD transaction_type NUMBER(10);&lt;br /&gt;
ALTER TABLE pc_transaction ADD snipped_text VARCHAR2(1023);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_user MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_user MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_user ADD blocked NUMBER(5);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_confirm_attempt ADD scoring_results VARCHAR2(512);&lt;br /&gt;
ALTER TABLE pc_confirm_attempt ADD scoring_settings VARCHAR2(512);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_sys_property MODIFY SETTING_VALUE VARCHAR2(1023);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запрос на регистрацию и лицензия ==&lt;br /&gt;
&lt;br /&gt;
=== Получение нового запроса и лицензии ===&lt;br /&gt;
&lt;br /&gt;
Для получения обновленного запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
=== Замена запроса в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%REGISTERREQUEST%&amp;lt;/code&amp;gt; на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%REGISTERREQUEST%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замена лицензии(при наличии) в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%LICENSE%&amp;lt;/code&amp;gt; на реальные данные лицензии, созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;{&amp;quot;request&amp;quot;:{&amp;quot;systemId&amp;quot;:&amp;quot;99000000-e00e-0ad0-00ab-f00f0000a0b0&amp;quot;,&amp;quot;dateTime&amp;quot;:1700000000000,&amp;quot;usersCount&amp;quot;:100,&amp;quot;licenseID&amp;quot;:&amp;quot;0000e000-0000-0000-b0ec-c0f0000000f0&amp;quot;,&amp;quot;type&amp;quot;:2,&amp;quot;features&amp;quot;:{&amp;quot;gost_crypto&amp;quot;:false,&amp;quot;pki&amp;quot;:{&amp;quot;openssl&amp;quot;:false},&amp;quot;binary_data&amp;quot;:{&amp;quot;raw&amp;quot;:true,&amp;quot;pdf&amp;quot;:true},&amp;quot;server_signer&amp;quot;:false,&amp;quot;rks&amp;quot;:false}},&amp;quot;signature&amp;quot;:&amp;quot;MEYCIQDy7OUT6iiligbiugYcpK9fjkU/GDRIUiJtB+UcHppVwIhAKzS+EcktxyRikvqEThPyo1jHlPuAfgxW+EEo5gioW7Y&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set license=&#039;%LICENSE%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Обновление модулей PC =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для установки PC 6-й версии воспользуйтесь инструкцией по ссылке - https://repo.paycontrol.org/server/doc/latest/pc-install-guide/ru/#перед-установкой&lt;br /&gt;
&lt;br /&gt;
После обновления &#039;&#039;&#039;необходимо&#039;&#039;&#039; отключить автозапуск Wildfly и выполнить запрос к БД:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_keyinfo set is_activated=1;&lt;br /&gt;
update pc_transaction set transaction_type=0;&lt;br /&gt;
update pc_transaction set render_type=0;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректировка (смена) адресов компонентов серверов PC ==&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCP для подключения с PCS ===&lt;br /&gt;
&lt;br /&gt;
Для изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;:8082/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса для внешних подключений (PCE) с мобильных устройств ===&lt;br /&gt;
&lt;br /&gt;
Для изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-client-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
На версии сервера 6.0.0-6.9.0 &#039;&#039;&#039;для работы старых ключей&#039;&#039;&#039;, обращающихся по эндпоинту &amp;lt;code&amp;gt;/PayControl-interaction-rest/&amp;lt;/code&amp;gt; нужно установить проксирование на эндпоинт &amp;lt;code&amp;gt;/pc-client-api/&amp;lt;/code&amp;gt;, любым удобным способом.&lt;br /&gt;
&lt;br /&gt;
Пример для nginx:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
        location /PayControl-interaction-rest/ {&lt;br /&gt;
                proxy_pass http://o-pc-ext-example.com:8081/pc-client-api/;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Правки для корректной отправки пушей ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=1;&lt;br /&gt;
!!!Запрос выше для Android при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;Android&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=2;&lt;br /&gt;
!!!Запрос выше для iOS при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;iOS&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&lt;br /&gt;
!!! &#039;&#039;&#039;Обратите внимание&#039;&#039;&#039;, что для выполнения запросов со split_part на Oracle нужно сначала выполнить запрос ниже:&lt;br /&gt;
create or replace function split_part(pString varchar2, pDelimiter varchar2, pPartNumber integer) return varchar2 deterministic is&lt;br /&gt;
  vStart number; &lt;br /&gt;
  vEnd   number;&lt;br /&gt;
begin&lt;br /&gt;
  if pPartNumber &amp;lt;&amp;gt; 0 and pDelimiter is not null then&lt;br /&gt;
    vStart := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber));&lt;br /&gt;
    vEnd   := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber) + 1);&lt;br /&gt;
  end if;&lt;br /&gt;
  return case         &lt;br /&gt;
           when pDelimiter is null and abs(pPartNumber) = 1 then pString&lt;br /&gt;
           when pPartNumber &amp;gt; 0 then substr(pString, vStart, vEnd - vStart - length(pDelimiter))                       &lt;br /&gt;
           when pPartNumber &amp;lt; 0 then substr(pString, vEnd, vStart - vEnd - length(pDelimiter))          &lt;br /&gt;
           else null&lt;br /&gt;
         end;&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
* Вся документация - https://repo.paycontrol.org/&lt;br /&gt;
&lt;br /&gt;
* Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
&lt;br /&gt;
* Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
&lt;br /&gt;
== Доступ к сервисам ==&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/&lt;br /&gt;
&lt;br /&gt;
=== Health Check ===&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек health check:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/health_check&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите сервисы PC.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
Переключитесь на Java 11.&lt;br /&gt;
&lt;br /&gt;
Запустите wildfly и включите автозапуск.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=862</id>
		<title>Обновление PayControl с версии 3 на версию 6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=862"/>
		<updated>2025-07-09T07:25:35Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Получение нового запроса и лицензии */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Введение =&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Перед обновлением необходимо выполнить резервное копирование БД PCS и PCIS Internal.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC &#039;&#039;&#039;требуется&#039;&#039;&#039; остановить Wildfly и обновить Java до версии 17. Версия 11 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и PC может продолжить работать на версии 11, что приведёт к ошибкам. &lt;br /&gt;
&lt;br /&gt;
Для того чтобы компоненты работали под Java 17, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 6 изменены названия серверов:&lt;br /&gt;
&lt;br /&gt;
* PC Server (PCS) — без изменений;&lt;br /&gt;
* PC Interaction Internal — PC Pusher (PCP);&lt;br /&gt;
* PC Interaction External — PC External (PCE).&lt;br /&gt;
&lt;br /&gt;
= Изменения в БД =&lt;br /&gt;
&lt;br /&gt;
== Правки структуры таблиц БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== Postgre ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_delayedkeyinfo drop column type;&lt;br /&gt;
alter table pc_delayedkeyinfo add column renew_challenge varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_device alter column is_deleted set not null;&lt;br /&gt;
alter table pc_device alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_device add column app_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_event alter column is_deleted set not null;&lt;br /&gt;
alter table pc_event alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_event alter column requester_ip type varchar(64);&lt;br /&gt;
alter table pc_event add column event_data text;&lt;br /&gt;
alter table pc_event drop column eventposturl;&lt;br /&gt;
&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_keyinfo drop column type;&lt;br /&gt;
alter table pc_keyinfo drop column key_container_id;&lt;br /&gt;
alter table pc_keyinfo add column external_approve_data_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_publickey alter column is_deleted set not null;&lt;br /&gt;
alter table pc_publickey alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_publickey add column autosign_public_key bytea;&lt;br /&gt;
&lt;br /&gt;
alter table pc_system alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system add column callback_url varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_system_params alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system_params alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system_params alter column license type varchar(4096);&lt;br /&gt;
alter table pc_system_params add column qr_url_scheme varchar(24);&lt;br /&gt;
&lt;br /&gt;
alter table pc_transaction alter column is_deleted set not null;&lt;br /&gt;
alter table pc_transaction alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_transaction add column autosign_enabled int2;&lt;br /&gt;
alter table pc_transaction add column ext_pulp bytea;&lt;br /&gt;
alter table pc_transaction add column extended_check int2;&lt;br /&gt;
alter table pc_transaction add column render_type int4;&lt;br /&gt;
alter table pc_transaction add column scoring_settings varchar(1023);&lt;br /&gt;
alter table pc_transaction add column transaction_type int4;&lt;br /&gt;
&lt;br /&gt;
alter table pc_user alter column is_deleted set not null;&lt;br /&gt;
alter table pc_user alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_user add column blocked int2;&lt;br /&gt;
&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_results varchar(512);&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_settings varchar(512);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MS SQL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;transaction_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        transaction_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_SYSTEM]&#039;)&lt;br /&gt;
          AND name = &#039;callback_url&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_SYSTEM&lt;br /&gt;
    ADD&lt;br /&gt;
        callback_url character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_USER]&#039;)&lt;br /&gt;
          AND name = &#039;blocked&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_USER&lt;br /&gt;
    ADD&lt;br /&gt;
        blocked smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;external_approve_data_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        external_approve_data_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_PUBLICKEY]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_public_key&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_public_key varbinary(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;renew_challenge&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        renew_challenge character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DEVICE]&#039;)&lt;br /&gt;
          AND name = &#039;app_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DEVICE&lt;br /&gt;
    ADD&lt;br /&gt;
        app_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_enabled&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_enabled smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;ext_pulp&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        ext_pulp character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;extended_check&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        extended_check smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;render_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        render_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(1023);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_results&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_results character varying(512);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(512);&lt;br /&gt;
		&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_EVENT]&#039;)&lt;br /&gt;
          AND name = &#039;event_data&#039;&lt;br /&gt;
    )&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ADD&lt;br /&gt;
            event_data VARCHAR(MAX);&lt;br /&gt;
ELSE&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ALTER COLUMN event_data VARCHAR(MAX);&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE PC_EVENT ALTER COLUMN requester_ip varchar(64);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oracle ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo DROP COLUMN type;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo ADD renew_challenge VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_device MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_device MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_device ADD app_id VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_event MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_event MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_event MODIFY requester_ip VARCHAR2(64);&lt;br /&gt;
ALTER TABLE pc_event ADD event_data CLOB;&lt;br /&gt;
ALTER TABLE pc_event DROP COLUMN eventposturl;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_keyinfo MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_keyinfo MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_keyinfo DROP COLUMN type;&lt;br /&gt;
ALTER TABLE pc_keyinfo DROP COLUMN key_container_id;&lt;br /&gt;
ALTER TABLE pc_keyinfo ADD external_approve_data_id VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_publickey MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_publickey MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_publickey ADD autosign_public_key BLOB;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_system MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_system MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_system ADD callback_url VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY license VARCHAR2(4000);&lt;br /&gt;
ALTER TABLE pc_system_params ADD qr_url_scheme VARCHAR2(24);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_transaction MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_transaction MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_transaction ADD autosign_enabled NUMBER(5);&lt;br /&gt;
ALTER TABLE pc_transaction ADD ext_pulp BLOB;&lt;br /&gt;
ALTER TABLE pc_transaction ADD extended_check NUMBER(5);&lt;br /&gt;
ALTER TABLE pc_transaction ADD render_type NUMBER(10);&lt;br /&gt;
ALTER TABLE pc_transaction ADD scoring_settings VARCHAR2(1023);&lt;br /&gt;
ALTER TABLE pc_transaction ADD transaction_type NUMBER(10);&lt;br /&gt;
ALTER TABLE pc_transaction ADD snipped_text VARCHAR2(1023);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_user MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_user MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_user ADD blocked NUMBER(5);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_confirm_attempt ADD scoring_results VARCHAR2(512);&lt;br /&gt;
ALTER TABLE pc_confirm_attempt ADD scoring_settings VARCHAR2(512);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_sys_property MODIFY SETTING_VALUE VARCHAR2(1023);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запрос на регистрацию и лицензия ==&lt;br /&gt;
&lt;br /&gt;
=== Получение нового запроса и лицензии ===&lt;br /&gt;
&lt;br /&gt;
Для получения обновленого запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
=== Замена запроса в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%REGISTERREQUEST%&amp;lt;/code&amp;gt; на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%REGISTERREQUEST%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замена лицензии(при наличии) в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%LICENSE%&amp;lt;/code&amp;gt; на реальные данные лицензии, созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;{&amp;quot;request&amp;quot;:{&amp;quot;systemId&amp;quot;:&amp;quot;99000000-e00e-0ad0-00ab-f00f0000a0b0&amp;quot;,&amp;quot;dateTime&amp;quot;:1700000000000,&amp;quot;usersCount&amp;quot;:100,&amp;quot;licenseID&amp;quot;:&amp;quot;0000e000-0000-0000-b0ec-c0f0000000f0&amp;quot;,&amp;quot;type&amp;quot;:2,&amp;quot;features&amp;quot;:{&amp;quot;gost_crypto&amp;quot;:false,&amp;quot;pki&amp;quot;:{&amp;quot;openssl&amp;quot;:false},&amp;quot;binary_data&amp;quot;:{&amp;quot;raw&amp;quot;:true,&amp;quot;pdf&amp;quot;:true},&amp;quot;server_signer&amp;quot;:false,&amp;quot;rks&amp;quot;:false}},&amp;quot;signature&amp;quot;:&amp;quot;MEYCIQDy7OUT6iiligbiugYcpK9fjkU/GDRIUiJtB+UcHppVwIhAKzS+EcktxyRikvqEThPyo1jHlPuAfgxW+EEo5gioW7Y&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set license=&#039;%LICENSE%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Обновление модулей PC =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для установки PC 6-й версии воспользуйтесь инструкцией по ссылке - https://repo.paycontrol.org/server/doc/latest/pc-install-guide/ru/#перед-установкой&lt;br /&gt;
&lt;br /&gt;
После обновления &#039;&#039;&#039;необходимо&#039;&#039;&#039; отключить автозапуск Wildfly и выполнить запрос к БД:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_keyinfo set is_activated=1;&lt;br /&gt;
update pc_transaction set transaction_type=0;&lt;br /&gt;
update pc_transaction set render_type=0;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректировка (смена) адресов компонентов серверов PC ==&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCP для подключения с PCS ===&lt;br /&gt;
&lt;br /&gt;
Для изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;:8082/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса для внешних подключений (PCE) с мобильных устройств ===&lt;br /&gt;
&lt;br /&gt;
Для изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-client-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
На версии сервера 6.0.0-6.9.0 &#039;&#039;&#039;для работы старых ключей&#039;&#039;&#039;, обращающихся по эндпоинту &amp;lt;code&amp;gt;/PayControl-interaction-rest/&amp;lt;/code&amp;gt; нужно установить проксирование на эндпоинт &amp;lt;code&amp;gt;/pc-client-api/&amp;lt;/code&amp;gt;, любым удобным способом.&lt;br /&gt;
&lt;br /&gt;
Пример для nginx:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
        location /PayControl-interaction-rest/ {&lt;br /&gt;
                proxy_pass http://o-pc-ext-example.com:8081/pc-client-api/;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Правки для корректной отправки пушей ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=1;&lt;br /&gt;
!!!Запрос выше для Android при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;Android&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=2;&lt;br /&gt;
!!!Запрос выше для iOS при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;iOS&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&lt;br /&gt;
!!! &#039;&#039;&#039;Обратите внимание&#039;&#039;&#039;, что для выполнения запросов со split_part на Oracle нужно сначала выполнить запрос ниже:&lt;br /&gt;
create or replace function split_part(pString varchar2, pDelimiter varchar2, pPartNumber integer) return varchar2 deterministic is&lt;br /&gt;
  vStart number; &lt;br /&gt;
  vEnd   number;&lt;br /&gt;
begin&lt;br /&gt;
  if pPartNumber &amp;lt;&amp;gt; 0 and pDelimiter is not null then&lt;br /&gt;
    vStart := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber));&lt;br /&gt;
    vEnd   := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber) + 1);&lt;br /&gt;
  end if;&lt;br /&gt;
  return case         &lt;br /&gt;
           when pDelimiter is null and abs(pPartNumber) = 1 then pString&lt;br /&gt;
           when pPartNumber &amp;gt; 0 then substr(pString, vStart, vEnd - vStart - length(pDelimiter))                       &lt;br /&gt;
           when pPartNumber &amp;lt; 0 then substr(pString, vEnd, vStart - vEnd - length(pDelimiter))          &lt;br /&gt;
           else null&lt;br /&gt;
         end;&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
* Вся документация - https://repo.paycontrol.org/&lt;br /&gt;
&lt;br /&gt;
* Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
&lt;br /&gt;
* Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
&lt;br /&gt;
== Доступ к сервисам ==&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/&lt;br /&gt;
&lt;br /&gt;
=== Health Check ===&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек health check:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/health_check&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите сервисы PC.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
Переключитесь на Java 11.&lt;br /&gt;
&lt;br /&gt;
Запустите wildfly и включите автозапуск.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=855</id>
		<title>Обновление PayControl с версии 3 на версию 6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=855"/>
		<updated>2025-06-19T12:34:39Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Изменение адреса для внешних подключений (PCE) с мобильных устройств */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Введение =&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Перед обновлением необходимо выполнить резервное копирование БД PCS и PCIS Internal.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC &#039;&#039;&#039;требуется&#039;&#039;&#039; остановить Wildfly и обновить Java до версии 17. Версия 11 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и PC может продолжить работать на версии 11, что приведёт к ошибкам. &lt;br /&gt;
&lt;br /&gt;
Для того чтобы компоненты работали под Java 17, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 6 изменены названия серверов:&lt;br /&gt;
&lt;br /&gt;
* PC Server (PCS) — без изменений;&lt;br /&gt;
* PC Interaction Internal — PC Pusher (PCP);&lt;br /&gt;
* PC Interaction External — PC External (PCE).&lt;br /&gt;
&lt;br /&gt;
= Изменения в БД =&lt;br /&gt;
&lt;br /&gt;
== Правки структуры таблиц БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== Postgre ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_delayedkeyinfo drop column type;&lt;br /&gt;
alter table pc_delayedkeyinfo add column renew_challenge varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_device alter column is_deleted set not null;&lt;br /&gt;
alter table pc_device alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_device add column app_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_event alter column is_deleted set not null;&lt;br /&gt;
alter table pc_event alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_event alter column requester_ip type varchar(64);&lt;br /&gt;
alter table pc_event add column event_data text;&lt;br /&gt;
alter table pc_event drop column eventposturl;&lt;br /&gt;
&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_keyinfo drop column type;&lt;br /&gt;
alter table pc_keyinfo drop column key_container_id;&lt;br /&gt;
alter table pc_keyinfo add column external_approve_data_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_publickey alter column is_deleted set not null;&lt;br /&gt;
alter table pc_publickey alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_publickey add column autosign_public_key bytea;&lt;br /&gt;
&lt;br /&gt;
alter table pc_system alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system add column callback_url varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_system_params alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system_params alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system_params alter column license type varchar(4096);&lt;br /&gt;
alter table pc_system_params add column qr_url_scheme varchar(24);&lt;br /&gt;
&lt;br /&gt;
alter table pc_transaction alter column is_deleted set not null;&lt;br /&gt;
alter table pc_transaction alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_transaction add column autosign_enabled int2;&lt;br /&gt;
alter table pc_transaction add column ext_pulp bytea;&lt;br /&gt;
alter table pc_transaction add column extended_check int2;&lt;br /&gt;
alter table pc_transaction add column render_type int4;&lt;br /&gt;
alter table pc_transaction add column scoring_settings varchar(1023);&lt;br /&gt;
alter table pc_transaction add column transaction_type int4;&lt;br /&gt;
&lt;br /&gt;
alter table pc_user alter column is_deleted set not null;&lt;br /&gt;
alter table pc_user alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_user add column blocked int2;&lt;br /&gt;
&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_results varchar(512);&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_settings varchar(512);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MS SQL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;transaction_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        transaction_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_SYSTEM]&#039;)&lt;br /&gt;
          AND name = &#039;callback_url&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_SYSTEM&lt;br /&gt;
    ADD&lt;br /&gt;
        callback_url character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_USER]&#039;)&lt;br /&gt;
          AND name = &#039;blocked&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_USER&lt;br /&gt;
    ADD&lt;br /&gt;
        blocked smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;external_approve_data_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        external_approve_data_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_PUBLICKEY]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_public_key&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_public_key varbinary(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;renew_challenge&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        renew_challenge character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DEVICE]&#039;)&lt;br /&gt;
          AND name = &#039;app_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DEVICE&lt;br /&gt;
    ADD&lt;br /&gt;
        app_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_enabled&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_enabled smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;ext_pulp&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        ext_pulp character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;extended_check&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        extended_check smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;render_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        render_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(1023);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_results&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_results character varying(512);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(512);&lt;br /&gt;
		&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_EVENT]&#039;)&lt;br /&gt;
          AND name = &#039;event_data&#039;&lt;br /&gt;
    )&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ADD&lt;br /&gt;
            event_data VARCHAR(MAX);&lt;br /&gt;
ELSE&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ALTER COLUMN event_data VARCHAR(MAX);&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE PC_EVENT ALTER COLUMN requester_ip varchar(64);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oracle ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo DROP COLUMN type;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo ADD renew_challenge VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_device MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_device MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_device ADD app_id VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_event MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_event MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_event MODIFY requester_ip VARCHAR2(64);&lt;br /&gt;
ALTER TABLE pc_event ADD event_data CLOB;&lt;br /&gt;
ALTER TABLE pc_event DROP COLUMN eventposturl;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_keyinfo MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_keyinfo MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_keyinfo DROP COLUMN type;&lt;br /&gt;
ALTER TABLE pc_keyinfo DROP COLUMN key_container_id;&lt;br /&gt;
ALTER TABLE pc_keyinfo ADD external_approve_data_id VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_publickey MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_publickey MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_publickey ADD autosign_public_key BLOB;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_system MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_system MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_system ADD callback_url VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY license VARCHAR2(4000);&lt;br /&gt;
ALTER TABLE pc_system_params ADD qr_url_scheme VARCHAR2(24);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_transaction MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_transaction MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_transaction ADD autosign_enabled NUMBER(5);&lt;br /&gt;
ALTER TABLE pc_transaction ADD ext_pulp BLOB;&lt;br /&gt;
ALTER TABLE pc_transaction ADD extended_check NUMBER(5);&lt;br /&gt;
ALTER TABLE pc_transaction ADD render_type NUMBER(10);&lt;br /&gt;
ALTER TABLE pc_transaction ADD scoring_settings VARCHAR2(1023);&lt;br /&gt;
ALTER TABLE pc_transaction ADD transaction_type NUMBER(10);&lt;br /&gt;
ALTER TABLE pc_transaction ADD snipped_text VARCHAR2(1023);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_user MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_user MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_user ADD blocked NUMBER(5);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_confirm_attempt ADD scoring_results VARCHAR2(512);&lt;br /&gt;
ALTER TABLE pc_confirm_attempt ADD scoring_settings VARCHAR2(512);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_sys_property MODIFY SETTING_VALUE VARCHAR2(1023);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запрос на регистрацию и лицензия ==&lt;br /&gt;
&lt;br /&gt;
=== Получение нового запроса и лицензии ===&lt;br /&gt;
&lt;br /&gt;
Для получения нового запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
=== Замена запроса в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%REGISTERREQUEST%&amp;lt;/code&amp;gt; на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%REGISTERREQUEST%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замена лицензии(при наличии) в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%LICENSE%&amp;lt;/code&amp;gt; на реальные данные лицензии, созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;{&amp;quot;request&amp;quot;:{&amp;quot;systemId&amp;quot;:&amp;quot;99000000-e00e-0ad0-00ab-f00f0000a0b0&amp;quot;,&amp;quot;dateTime&amp;quot;:1700000000000,&amp;quot;usersCount&amp;quot;:100,&amp;quot;licenseID&amp;quot;:&amp;quot;0000e000-0000-0000-b0ec-c0f0000000f0&amp;quot;,&amp;quot;type&amp;quot;:2,&amp;quot;features&amp;quot;:{&amp;quot;gost_crypto&amp;quot;:false,&amp;quot;pki&amp;quot;:{&amp;quot;openssl&amp;quot;:false},&amp;quot;binary_data&amp;quot;:{&amp;quot;raw&amp;quot;:true,&amp;quot;pdf&amp;quot;:true},&amp;quot;server_signer&amp;quot;:false,&amp;quot;rks&amp;quot;:false}},&amp;quot;signature&amp;quot;:&amp;quot;MEYCIQDy7OUT6iiligbiugYcpK9fjkU/GDRIUiJtB+UcHppVwIhAKzS+EcktxyRikvqEThPyo1jHlPuAfgxW+EEo5gioW7Y&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set license=&#039;%LICENSE%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Обновление модулей PC =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для установки PC 6-й версии воспользуйтесь инструкцией по ссылке - https://repo.paycontrol.org/server/doc/latest/pc-install-guide/ru/#перед-установкой&lt;br /&gt;
&lt;br /&gt;
После обновления &#039;&#039;&#039;необходимо&#039;&#039;&#039; отключить автозапуск Wildfly и выполнить запрос к БД:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_keyinfo set is_activated=1;&lt;br /&gt;
update pc_transaction set transaction_type=0;&lt;br /&gt;
update pc_transaction set render_type=0;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректировка (смена) адресов компонентов серверов PC ==&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCP для подключения с PCS ===&lt;br /&gt;
&lt;br /&gt;
Для изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;:8082/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса для внешних подключений (PCE) с мобильных устройств ===&lt;br /&gt;
&lt;br /&gt;
Для изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-client-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
На версии сервера 6.0.0-6.9.0 &#039;&#039;&#039;для работы старых ключей&#039;&#039;&#039;, обращающихся по эндпоинту &amp;lt;code&amp;gt;/PayControl-interaction-rest/&amp;lt;/code&amp;gt; нужно установить проксирование на эндпоинт &amp;lt;code&amp;gt;/pc-client-api/&amp;lt;/code&amp;gt;, любым удобным способом.&lt;br /&gt;
&lt;br /&gt;
Пример для nginx:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
        location /PayControl-interaction-rest/ {&lt;br /&gt;
                proxy_pass http://o-pc-ext-example.com:8081/pc-client-api/;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Правки для корректной отправки пушей ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=1;&lt;br /&gt;
!!!Запрос выше для Android при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;Android&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=2;&lt;br /&gt;
!!!Запрос выше для iOS при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;iOS&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&lt;br /&gt;
!!! &#039;&#039;&#039;Обратите внимание&#039;&#039;&#039;, что для выполнения запросов со split_part на Oracle нужно сначала выполнить запрос ниже:&lt;br /&gt;
create or replace function split_part(pString varchar2, pDelimiter varchar2, pPartNumber integer) return varchar2 deterministic is&lt;br /&gt;
  vStart number; &lt;br /&gt;
  vEnd   number;&lt;br /&gt;
begin&lt;br /&gt;
  if pPartNumber &amp;lt;&amp;gt; 0 and pDelimiter is not null then&lt;br /&gt;
    vStart := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber));&lt;br /&gt;
    vEnd   := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber) + 1);&lt;br /&gt;
  end if;&lt;br /&gt;
  return case         &lt;br /&gt;
           when pDelimiter is null and abs(pPartNumber) = 1 then pString&lt;br /&gt;
           when pPartNumber &amp;gt; 0 then substr(pString, vStart, vEnd - vStart - length(pDelimiter))                       &lt;br /&gt;
           when pPartNumber &amp;lt; 0 then substr(pString, vEnd, vStart - vEnd - length(pDelimiter))          &lt;br /&gt;
           else null&lt;br /&gt;
         end;&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
* Вся документация - https://repo.paycontrol.org/&lt;br /&gt;
&lt;br /&gt;
* Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
&lt;br /&gt;
* Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
&lt;br /&gt;
== Доступ к сервисам ==&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/&lt;br /&gt;
&lt;br /&gt;
=== Health Check ===&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек health check:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/health_check&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите сервисы PC.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
Переключитесь на Java 11.&lt;br /&gt;
&lt;br /&gt;
Запустите wildfly и включите автозапуск.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=854</id>
		<title>Обновление PayControl с версии 3 на версию 6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=854"/>
		<updated>2025-04-01T08:32:02Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Замена лицензии(при наличии) в БД */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Введение =&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Перед обновлением необходимо выполнить резервное копирование БД PCS и PCIS Internal.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC &#039;&#039;&#039;требуется&#039;&#039;&#039; остановить Wildfly и обновить Java до версии 17. Версия 11 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и PC может продолжить работать на версии 11, что приведёт к ошибкам. &lt;br /&gt;
&lt;br /&gt;
Для того чтобы компоненты работали под Java 17, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 6 изменены названия серверов:&lt;br /&gt;
&lt;br /&gt;
* PC Server (PCS) — без изменений;&lt;br /&gt;
* PC Interaction Internal — PC Pusher (PCP);&lt;br /&gt;
* PC Interaction External — PC External (PCE).&lt;br /&gt;
&lt;br /&gt;
= Изменения в БД =&lt;br /&gt;
&lt;br /&gt;
== Правки структуры таблиц БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== Postgre ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_delayedkeyinfo drop column type;&lt;br /&gt;
alter table pc_delayedkeyinfo add column renew_challenge varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_device alter column is_deleted set not null;&lt;br /&gt;
alter table pc_device alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_device add column app_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_event alter column is_deleted set not null;&lt;br /&gt;
alter table pc_event alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_event alter column requester_ip type varchar(64);&lt;br /&gt;
alter table pc_event add column event_data text;&lt;br /&gt;
alter table pc_event drop column eventposturl;&lt;br /&gt;
&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_keyinfo drop column type;&lt;br /&gt;
alter table pc_keyinfo drop column key_container_id;&lt;br /&gt;
alter table pc_keyinfo add column external_approve_data_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_publickey alter column is_deleted set not null;&lt;br /&gt;
alter table pc_publickey alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_publickey add column autosign_public_key bytea;&lt;br /&gt;
&lt;br /&gt;
alter table pc_system alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system add column callback_url varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_system_params alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system_params alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system_params alter column license type varchar(4096);&lt;br /&gt;
alter table pc_system_params add column qr_url_scheme varchar(24);&lt;br /&gt;
&lt;br /&gt;
alter table pc_transaction alter column is_deleted set not null;&lt;br /&gt;
alter table pc_transaction alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_transaction add column autosign_enabled int2;&lt;br /&gt;
alter table pc_transaction add column ext_pulp bytea;&lt;br /&gt;
alter table pc_transaction add column extended_check int2;&lt;br /&gt;
alter table pc_transaction add column render_type int4;&lt;br /&gt;
alter table pc_transaction add column scoring_settings varchar(1023);&lt;br /&gt;
alter table pc_transaction add column transaction_type int4;&lt;br /&gt;
&lt;br /&gt;
alter table pc_user alter column is_deleted set not null;&lt;br /&gt;
alter table pc_user alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_user add column blocked int2;&lt;br /&gt;
&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_results varchar(512);&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_settings varchar(512);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MS SQL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;transaction_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        transaction_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_SYSTEM]&#039;)&lt;br /&gt;
          AND name = &#039;callback_url&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_SYSTEM&lt;br /&gt;
    ADD&lt;br /&gt;
        callback_url character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_USER]&#039;)&lt;br /&gt;
          AND name = &#039;blocked&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_USER&lt;br /&gt;
    ADD&lt;br /&gt;
        blocked smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;external_approve_data_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        external_approve_data_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_PUBLICKEY]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_public_key&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_public_key varbinary(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;renew_challenge&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        renew_challenge character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DEVICE]&#039;)&lt;br /&gt;
          AND name = &#039;app_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DEVICE&lt;br /&gt;
    ADD&lt;br /&gt;
        app_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_enabled&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_enabled smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;ext_pulp&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        ext_pulp character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;extended_check&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        extended_check smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;render_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        render_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(1023);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_results&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_results character varying(512);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(512);&lt;br /&gt;
		&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_EVENT]&#039;)&lt;br /&gt;
          AND name = &#039;event_data&#039;&lt;br /&gt;
    )&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ADD&lt;br /&gt;
            event_data VARCHAR(MAX);&lt;br /&gt;
ELSE&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ALTER COLUMN event_data VARCHAR(MAX);&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE PC_EVENT ALTER COLUMN requester_ip varchar(64);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oracle ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo DROP COLUMN type;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo ADD renew_challenge VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_device MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_device MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_device ADD app_id VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_event MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_event MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_event MODIFY requester_ip VARCHAR2(64);&lt;br /&gt;
ALTER TABLE pc_event ADD event_data CLOB;&lt;br /&gt;
ALTER TABLE pc_event DROP COLUMN eventposturl;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_keyinfo MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_keyinfo MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_keyinfo DROP COLUMN type;&lt;br /&gt;
ALTER TABLE pc_keyinfo DROP COLUMN key_container_id;&lt;br /&gt;
ALTER TABLE pc_keyinfo ADD external_approve_data_id VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_publickey MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_publickey MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_publickey ADD autosign_public_key BLOB;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_system MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_system MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_system ADD callback_url VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY license VARCHAR2(4000);&lt;br /&gt;
ALTER TABLE pc_system_params ADD qr_url_scheme VARCHAR2(24);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_transaction MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_transaction MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_transaction ADD autosign_enabled NUMBER(5);&lt;br /&gt;
ALTER TABLE pc_transaction ADD ext_pulp BLOB;&lt;br /&gt;
ALTER TABLE pc_transaction ADD extended_check NUMBER(5);&lt;br /&gt;
ALTER TABLE pc_transaction ADD render_type NUMBER(10);&lt;br /&gt;
ALTER TABLE pc_transaction ADD scoring_settings VARCHAR2(1023);&lt;br /&gt;
ALTER TABLE pc_transaction ADD transaction_type NUMBER(10);&lt;br /&gt;
ALTER TABLE pc_transaction ADD snipped_text VARCHAR2(1023);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_user MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_user MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_user ADD blocked NUMBER(5);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_confirm_attempt ADD scoring_results VARCHAR2(512);&lt;br /&gt;
ALTER TABLE pc_confirm_attempt ADD scoring_settings VARCHAR2(512);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_sys_property MODIFY SETTING_VALUE VARCHAR2(1023);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запрос на регистрацию и лицензия ==&lt;br /&gt;
&lt;br /&gt;
=== Получение нового запроса и лицензии ===&lt;br /&gt;
&lt;br /&gt;
Для получения нового запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
=== Замена запроса в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%REGISTERREQUEST%&amp;lt;/code&amp;gt; на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%REGISTERREQUEST%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замена лицензии(при наличии) в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%LICENSE%&amp;lt;/code&amp;gt; на реальные данные лицензии, созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;{&amp;quot;request&amp;quot;:{&amp;quot;systemId&amp;quot;:&amp;quot;99000000-e00e-0ad0-00ab-f00f0000a0b0&amp;quot;,&amp;quot;dateTime&amp;quot;:1700000000000,&amp;quot;usersCount&amp;quot;:100,&amp;quot;licenseID&amp;quot;:&amp;quot;0000e000-0000-0000-b0ec-c0f0000000f0&amp;quot;,&amp;quot;type&amp;quot;:2,&amp;quot;features&amp;quot;:{&amp;quot;gost_crypto&amp;quot;:false,&amp;quot;pki&amp;quot;:{&amp;quot;openssl&amp;quot;:false},&amp;quot;binary_data&amp;quot;:{&amp;quot;raw&amp;quot;:true,&amp;quot;pdf&amp;quot;:true},&amp;quot;server_signer&amp;quot;:false,&amp;quot;rks&amp;quot;:false}},&amp;quot;signature&amp;quot;:&amp;quot;MEYCIQDy7OUT6iiligbiugYcpK9fjkU/GDRIUiJtB+UcHppVwIhAKzS+EcktxyRikvqEThPyo1jHlPuAfgxW+EEo5gioW7Y&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set license=&#039;%LICENSE%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Обновление модулей PC =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для установки PC 6-й версии воспользуйтесь инструкцией по ссылке - https://repo.paycontrol.org/server/doc/latest/pc-install-guide/ru/#перед-установкой&lt;br /&gt;
&lt;br /&gt;
После обновления &#039;&#039;&#039;необходимо&#039;&#039;&#039; отключить автозапуск Wildfly и выполнить запрос к БД:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_keyinfo set is_activated=1;&lt;br /&gt;
update pc_transaction set transaction_type=0;&lt;br /&gt;
update pc_transaction set render_type=0;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректировка (смена) адресов компонентов серверов PC ==&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCP для подключения с PCS ===&lt;br /&gt;
&lt;br /&gt;
Для изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;:8082/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса для внешних подключений (PCE) с мобильных устройств ===&lt;br /&gt;
&lt;br /&gt;
Для изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-client-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Для работы старых ключей&#039;&#039;&#039;, обращающихся по эндпоинту &amp;lt;code&amp;gt;/PayControl-interaction-rest/&amp;lt;/code&amp;gt; нужно установить проксирование на эндпоинт &amp;lt;code&amp;gt;/pc-client-api/&amp;lt;/code&amp;gt;, любым удобным способом.&lt;br /&gt;
&lt;br /&gt;
Пример для nginx:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
        location /PayControl-interaction-rest/ {&lt;br /&gt;
                proxy_pass http://o-pc-ext-example.com:8081/pc-client-api/;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Правки для корректной отправки пушей ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=1;&lt;br /&gt;
!!!Запрос выше для Android при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;Android&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=2;&lt;br /&gt;
!!!Запрос выше для iOS при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;iOS&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&lt;br /&gt;
!!! &#039;&#039;&#039;Обратите внимание&#039;&#039;&#039;, что для выполнения запросов со split_part на Oracle нужно сначала выполнить запрос ниже:&lt;br /&gt;
create or replace function split_part(pString varchar2, pDelimiter varchar2, pPartNumber integer) return varchar2 deterministic is&lt;br /&gt;
  vStart number; &lt;br /&gt;
  vEnd   number;&lt;br /&gt;
begin&lt;br /&gt;
  if pPartNumber &amp;lt;&amp;gt; 0 and pDelimiter is not null then&lt;br /&gt;
    vStart := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber));&lt;br /&gt;
    vEnd   := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber) + 1);&lt;br /&gt;
  end if;&lt;br /&gt;
  return case         &lt;br /&gt;
           when pDelimiter is null and abs(pPartNumber) = 1 then pString&lt;br /&gt;
           when pPartNumber &amp;gt; 0 then substr(pString, vStart, vEnd - vStart - length(pDelimiter))                       &lt;br /&gt;
           when pPartNumber &amp;lt; 0 then substr(pString, vEnd, vStart - vEnd - length(pDelimiter))          &lt;br /&gt;
           else null&lt;br /&gt;
         end;&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
* Вся документация - https://repo.paycontrol.org/&lt;br /&gt;
&lt;br /&gt;
* Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
&lt;br /&gt;
* Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
&lt;br /&gt;
== Доступ к сервисам ==&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/&lt;br /&gt;
&lt;br /&gt;
=== Health Check ===&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек health check:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/health_check&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите сервисы PC.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
Переключитесь на Java 11.&lt;br /&gt;
&lt;br /&gt;
Запустите wildfly и включите автозапуск.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=PC_via_queues&amp;diff=853</id>
		<title>PC via queues</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=PC_via_queues&amp;diff=853"/>
		<updated>2025-03-24T12:22:02Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* v5, v6 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Описание=&lt;br /&gt;
Описание схемы встраивания, в которой используются очереди, доступно по ссылке:&lt;br /&gt;
&lt;br /&gt;
https://repo.paycontrol.org/server/doc/latest/pc-handbook/ru/#использование-очередей-для-ограничения-соединений-от-pce-к-pcs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Экземпляр RabbitMQ, в котором будут автоматически созданы две очереди, загружается и разворачивается заказчиком.&lt;br /&gt;
&lt;br /&gt;
Загрузить RabbitMQ можно на сайте: https://www.rabbitmq.com&lt;br /&gt;
&lt;br /&gt;
Для корректной работы с очередями нужно создать админ-пользователя помимо guest и настроить подключение через этого нового пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Приложение состоит из двух модулей:&lt;br /&gt;
* для зоны DMZ - &#039;&#039;pc-queue-dmz-1.0.jar&#039;&#039;;&lt;br /&gt;
* для внутренней сети &#039;&#039;pc-queue-lan-1.0.jar&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Файлы для запуска=&lt;br /&gt;
==Linux==&lt;br /&gt;
Файлы запуска имеют разрешение &#039;&#039;.service&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Для корректной работы приложения необходимо их отредактировать под конкретное окружение.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;WorkingDirectory=/opt/clientSide&#039;&#039; - директория в которой располагается исполняемый файл конкретного приложения&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ExecStart=java -Xms256m -Xmx512m -jar /opt/clientSide/clientSide-1.0.jar /opt/clientSide/application.yml&#039;&#039; - строка для запуска приложения&lt;br /&gt;
&lt;br /&gt;
Также необходимо обратить на пути до приложения и файла настроек&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;User=pcontrol&#039;&#039; - пользователь под которым будет запускаться приложение.&lt;br /&gt;
&lt;br /&gt;
=Установка=&lt;br /&gt;
==pc-dmz-queue==&lt;br /&gt;
===Windows===&lt;br /&gt;
Распакуйте архив в корень диска, так, чтобы файл &#039;&#039;winsw.exe&#039;&#039; был доступен по пути &#039;&#039;C:\pc-dmz-queue\winsw.exe&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
В командной строке выполните следующие команды&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cmd&amp;quot;&amp;gt;&lt;br /&gt;
cd C:\pc-queue-dmz\&lt;br /&gt;
winsw.exe install pc-queue-dmz-1.0.jar&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Логи пишутся в &#039;&#039;C:\pc-queue-dmz\&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Созданной службой можно управлять из приложения Службы(Services).&lt;br /&gt;
&lt;br /&gt;
Настройка подключений производится в &#039;&#039;application.yml&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
Создать папку&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /opt/pc-queue-dmz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
В настройках файлов `.service` указать пользователя wildfly или создать нового, с аналогичными параметрами.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
groupadd -r username&lt;br /&gt;
useradd -r -g username -d /opt/pc-queue-dmz -s /sbin/nologin username&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Предоставить доступ на запуск файлу start.sh&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod +x start.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Скопировать файл сервиса, запустить его и включить автозапуск&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo cp -v pc-dmz-queue.service /etc/systemd/system/&lt;br /&gt;
sudo systemctl enable pc-queue-dmz.service&lt;br /&gt;
sudo systemctl start pc-queue-dmz.service&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Для просмотра журнала работы сервиса необходимо использовать &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
journalctl -u pc-queue-dmz.service&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==pc-queue-lan==&lt;br /&gt;
===Windows===&lt;br /&gt;
Распакуйте архив в корень диска, так, чтобы файл &#039;&#039;winsw.exe&#039;&#039; был доступен по пути &#039;&#039;C:\pc-queue-lan\winsw.exe&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
В командной строке выполните следующие команды&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cmd&amp;quot;&amp;gt;&lt;br /&gt;
cd C:\pc-queue-lan\&lt;br /&gt;
winsw.exe install pc-queue-lan-1.0.jar&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Логи пишутся в &#039;&#039;C:\pc-queue-lan\&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Созданной службой можно управлять из приложения Службы(Services).&lt;br /&gt;
&lt;br /&gt;
Настройка подключений производится в &#039;&#039;application.yml&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
Создать папку&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /opt/pc-queue-lan&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В настройках файлов `.service` указать пользователя wildfly или создать нового, с аналогичными параметрами.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
groupadd -r username&lt;br /&gt;
useradd -r -g username -d /opt/pc-queue-lan -s /sbin/nologin username&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предоставить доступ на запуск файлу start.sh&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod +x start.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Скопировать файл сервиса, запустить его и включить автозапуск&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo cp -v pc-queue-lan.service /etc/systemd/system/&lt;br /&gt;
sudo systemctl start pc-queue-lan.service&lt;br /&gt;
sudo systemctl enable pc-queue-lan.service&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для просмотра журнала работы сервиса необходимо использовать &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
journalctl -u pc-queue-lan.service&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Конфигурирование модулей=&lt;br /&gt;
Установка параметров работы модулей производится в файле application.yml.&lt;br /&gt;
&lt;br /&gt;
==Настройка входящих соединений==&lt;br /&gt;
Можно уточнить сетевой порт и адрес, который  будет слушать модуль.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;yml&amp;quot;&amp;gt;&lt;br /&gt;
server:&lt;br /&gt;
  port: 8090&lt;br /&gt;
  address: 0.0.0.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0.0.0.0 - означает что модуль будет принимать все запросы на любых сетевых интерфейсах&lt;br /&gt;
&lt;br /&gt;
==Настройка подключения к брокеру очередей==&lt;br /&gt;
Модули работают с брокером RabbitMQ. Пример параметров подключения:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;yml&amp;quot;&amp;gt;&lt;br /&gt;
spring:&lt;br /&gt;
  rabbitmq:&lt;br /&gt;
    username: exampleuser&lt;br /&gt;
    password: examplepass&lt;br /&gt;
    virtual-host: /&lt;br /&gt;
    host: example.rabbit.loc&lt;br /&gt;
    port: 5672&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Настройка модуля pc-queue-lan для подключения к серверу PCS==&lt;br /&gt;
Адрес и порт сервера PCS:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;yml&amp;quot;&amp;gt;&lt;br /&gt;
paycontrol:&lt;br /&gt;
  url: example.pcs.loc&lt;br /&gt;
  port: 8080&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Настройка PC на работу через очередь=&lt;br /&gt;
==Настройка PC External==&lt;br /&gt;
Для настройки PC External на отправку сообщений в очередь, необхоимо в файле &lt;br /&gt;
* Linux - `/opt/wildfly/bin/standalone.conf`&lt;br /&gt;
* Windows - `wildfly\bin\standalone.conf.bat`&lt;br /&gt;
в параметрах переменных окружения, вместо адреса сервера PCS задать адрес модуля pc-queue-dmz, например:&lt;br /&gt;
&lt;br /&gt;
===v3===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
-Dpcservice.endpoint=http://localhost:8090/ws/PayControlServiceV3?wsdl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===v5===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
-Dpc_url=http://localhost:8090/pc-api/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При этом адрес эндпоинта должен оставаться таким-же как и для сервера PC Server.&lt;br /&gt;
&lt;br /&gt;
==Настройка PC Server==&lt;br /&gt;
Внесение настроек на сервер PC Server не требуется.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=PC_via_queues&amp;diff=852</id>
		<title>PC via queues</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=PC_via_queues&amp;diff=852"/>
		<updated>2025-03-24T12:21:46Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* v5 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Описание=&lt;br /&gt;
Описание схемы встраивания, в которой используются очереди, доступно по ссылке:&lt;br /&gt;
&lt;br /&gt;
https://repo.paycontrol.org/server/doc/latest/pc-handbook/ru/#использование-очередей-для-ограничения-соединений-от-pce-к-pcs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Экземпляр RabbitMQ, в котором будут автоматически созданы две очереди, загружается и разворачивается заказчиком.&lt;br /&gt;
&lt;br /&gt;
Загрузить RabbitMQ можно на сайте: https://www.rabbitmq.com&lt;br /&gt;
&lt;br /&gt;
Для корректной работы с очередями нужно создать админ-пользователя помимо guest и настроить подключение через этого нового пользователя.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Приложение состоит из двух модулей:&lt;br /&gt;
* для зоны DMZ - &#039;&#039;pc-queue-dmz-1.0.jar&#039;&#039;;&lt;br /&gt;
* для внутренней сети &#039;&#039;pc-queue-lan-1.0.jar&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Файлы для запуска=&lt;br /&gt;
==Linux==&lt;br /&gt;
Файлы запуска имеют разрешение &#039;&#039;.service&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Для корректной работы приложения необходимо их отредактировать под конкретное окружение.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;WorkingDirectory=/opt/clientSide&#039;&#039; - директория в которой располагается исполняемый файл конкретного приложения&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ExecStart=java -Xms256m -Xmx512m -jar /opt/clientSide/clientSide-1.0.jar /opt/clientSide/application.yml&#039;&#039; - строка для запуска приложения&lt;br /&gt;
&lt;br /&gt;
Также необходимо обратить на пути до приложения и файла настроек&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;User=pcontrol&#039;&#039; - пользователь под которым будет запускаться приложение.&lt;br /&gt;
&lt;br /&gt;
=Установка=&lt;br /&gt;
==pc-dmz-queue==&lt;br /&gt;
===Windows===&lt;br /&gt;
Распакуйте архив в корень диска, так, чтобы файл &#039;&#039;winsw.exe&#039;&#039; был доступен по пути &#039;&#039;C:\pc-dmz-queue\winsw.exe&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
В командной строке выполните следующие команды&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cmd&amp;quot;&amp;gt;&lt;br /&gt;
cd C:\pc-queue-dmz\&lt;br /&gt;
winsw.exe install pc-queue-dmz-1.0.jar&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Логи пишутся в &#039;&#039;C:\pc-queue-dmz\&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Созданной службой можно управлять из приложения Службы(Services).&lt;br /&gt;
&lt;br /&gt;
Настройка подключений производится в &#039;&#039;application.yml&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
Создать папку&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /opt/pc-queue-dmz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
В настройках файлов `.service` указать пользователя wildfly или создать нового, с аналогичными параметрами.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
groupadd -r username&lt;br /&gt;
useradd -r -g username -d /opt/pc-queue-dmz -s /sbin/nologin username&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Предоставить доступ на запуск файлу start.sh&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod +x start.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Скопировать файл сервиса, запустить его и включить автозапуск&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo cp -v pc-dmz-queue.service /etc/systemd/system/&lt;br /&gt;
sudo systemctl enable pc-queue-dmz.service&lt;br /&gt;
sudo systemctl start pc-queue-dmz.service&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Для просмотра журнала работы сервиса необходимо использовать &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
journalctl -u pc-queue-dmz.service&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==pc-queue-lan==&lt;br /&gt;
===Windows===&lt;br /&gt;
Распакуйте архив в корень диска, так, чтобы файл &#039;&#039;winsw.exe&#039;&#039; был доступен по пути &#039;&#039;C:\pc-queue-lan\winsw.exe&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
В командной строке выполните следующие команды&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cmd&amp;quot;&amp;gt;&lt;br /&gt;
cd C:\pc-queue-lan\&lt;br /&gt;
winsw.exe install pc-queue-lan-1.0.jar&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Логи пишутся в &#039;&#039;C:\pc-queue-lan\&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Созданной службой можно управлять из приложения Службы(Services).&lt;br /&gt;
&lt;br /&gt;
Настройка подключений производится в &#039;&#039;application.yml&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
Создать папку&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /opt/pc-queue-lan&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В настройках файлов `.service` указать пользователя wildfly или создать нового, с аналогичными параметрами.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
groupadd -r username&lt;br /&gt;
useradd -r -g username -d /opt/pc-queue-lan -s /sbin/nologin username&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предоставить доступ на запуск файлу start.sh&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
chmod +x start.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Скопировать файл сервиса, запустить его и включить автозапуск&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo cp -v pc-queue-lan.service /etc/systemd/system/&lt;br /&gt;
sudo systemctl start pc-queue-lan.service&lt;br /&gt;
sudo systemctl enable pc-queue-lan.service&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для просмотра журнала работы сервиса необходимо использовать &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
journalctl -u pc-queue-lan.service&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Конфигурирование модулей=&lt;br /&gt;
Установка параметров работы модулей производится в файле application.yml.&lt;br /&gt;
&lt;br /&gt;
==Настройка входящих соединений==&lt;br /&gt;
Можно уточнить сетевой порт и адрес, который  будет слушать модуль.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;yml&amp;quot;&amp;gt;&lt;br /&gt;
server:&lt;br /&gt;
  port: 8090&lt;br /&gt;
  address: 0.0.0.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0.0.0.0 - означает что модуль будет принимать все запросы на любых сетевых интерфейсах&lt;br /&gt;
&lt;br /&gt;
==Настройка подключения к брокеру очередей==&lt;br /&gt;
Модули работают с брокером RabbitMQ. Пример параметров подключения:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;yml&amp;quot;&amp;gt;&lt;br /&gt;
spring:&lt;br /&gt;
  rabbitmq:&lt;br /&gt;
    username: exampleuser&lt;br /&gt;
    password: examplepass&lt;br /&gt;
    virtual-host: /&lt;br /&gt;
    host: example.rabbit.loc&lt;br /&gt;
    port: 5672&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Настройка модуля pc-queue-lan для подключения к серверу PCS==&lt;br /&gt;
Адрес и порт сервера PCS:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;yml&amp;quot;&amp;gt;&lt;br /&gt;
paycontrol:&lt;br /&gt;
  url: example.pcs.loc&lt;br /&gt;
  port: 8080&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Настройка PC на работу через очередь=&lt;br /&gt;
==Настройка PC External==&lt;br /&gt;
Для настройки PC External на отправку сообщений в очередь, необхоимо в файле &lt;br /&gt;
* Linux - `/opt/wildfly/bin/standalone.conf`&lt;br /&gt;
* Windows - `wildfly\bin\standalone.conf.bat`&lt;br /&gt;
в параметрах переменных окружения, вместо адреса сервера PCS задать адрес модуля pc-queue-dmz, например:&lt;br /&gt;
&lt;br /&gt;
===v3===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
-Dpcservice.endpoint=http://localhost:8090/ws/PayControlServiceV3?wsdl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===v5, v6===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
-Dpc_url=http://localhost:8090/pc-api/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При этом адрес эндпоинта должен оставаться таким-же как и для сервера PC Server.&lt;br /&gt;
&lt;br /&gt;
==Настройка PC Server==&lt;br /&gt;
Внесение настроек на сервер PC Server не требуется.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=851</id>
		<title>Обновление PayControl с версии 3 на версию 6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=851"/>
		<updated>2025-03-19T14:22:25Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Oracle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Введение =&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Перед обновлением необходимо выполнить резервное копирование БД PCS и PCIS Internal.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC &#039;&#039;&#039;требуется&#039;&#039;&#039; остановить Wildfly и обновить Java до версии 17. Версия 11 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и PC может продолжить работать на версии 11, что приведёт к ошибкам. &lt;br /&gt;
&lt;br /&gt;
Для того чтобы компоненты работали под Java 17, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 6 изменены названия серверов:&lt;br /&gt;
&lt;br /&gt;
* PC Server (PCS) — без изменений;&lt;br /&gt;
* PC Interaction Internal — PC Pusher (PCP);&lt;br /&gt;
* PC Interaction External — PC External (PCE).&lt;br /&gt;
&lt;br /&gt;
= Изменения в БД =&lt;br /&gt;
&lt;br /&gt;
== Правки структуры таблиц БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== Postgre ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_delayedkeyinfo drop column type;&lt;br /&gt;
alter table pc_delayedkeyinfo add column renew_challenge varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_device alter column is_deleted set not null;&lt;br /&gt;
alter table pc_device alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_device add column app_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_event alter column is_deleted set not null;&lt;br /&gt;
alter table pc_event alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_event alter column requester_ip type varchar(64);&lt;br /&gt;
alter table pc_event add column event_data text;&lt;br /&gt;
alter table pc_event drop column eventposturl;&lt;br /&gt;
&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_keyinfo drop column type;&lt;br /&gt;
alter table pc_keyinfo drop column key_container_id;&lt;br /&gt;
alter table pc_keyinfo add column external_approve_data_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_publickey alter column is_deleted set not null;&lt;br /&gt;
alter table pc_publickey alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_publickey add column autosign_public_key bytea;&lt;br /&gt;
&lt;br /&gt;
alter table pc_system alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system add column callback_url varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_system_params alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system_params alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system_params alter column license type varchar(4096);&lt;br /&gt;
alter table pc_system_params add column qr_url_scheme varchar(24);&lt;br /&gt;
&lt;br /&gt;
alter table pc_transaction alter column is_deleted set not null;&lt;br /&gt;
alter table pc_transaction alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_transaction add column autosign_enabled int2;&lt;br /&gt;
alter table pc_transaction add column ext_pulp bytea;&lt;br /&gt;
alter table pc_transaction add column extended_check int2;&lt;br /&gt;
alter table pc_transaction add column render_type int4;&lt;br /&gt;
alter table pc_transaction add column scoring_settings varchar(1023);&lt;br /&gt;
alter table pc_transaction add column transaction_type int4;&lt;br /&gt;
&lt;br /&gt;
alter table pc_user alter column is_deleted set not null;&lt;br /&gt;
alter table pc_user alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_user add column blocked int2;&lt;br /&gt;
&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_results varchar(512);&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_settings varchar(512);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MS SQL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;transaction_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        transaction_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_SYSTEM]&#039;)&lt;br /&gt;
          AND name = &#039;callback_url&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_SYSTEM&lt;br /&gt;
    ADD&lt;br /&gt;
        callback_url character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_USER]&#039;)&lt;br /&gt;
          AND name = &#039;blocked&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_USER&lt;br /&gt;
    ADD&lt;br /&gt;
        blocked smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;external_approve_data_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        external_approve_data_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_PUBLICKEY]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_public_key&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_public_key varbinary(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;renew_challenge&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        renew_challenge character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DEVICE]&#039;)&lt;br /&gt;
          AND name = &#039;app_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DEVICE&lt;br /&gt;
    ADD&lt;br /&gt;
        app_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_enabled&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_enabled smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;ext_pulp&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        ext_pulp character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;extended_check&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        extended_check smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;render_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        render_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(1023);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_results&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_results character varying(512);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(512);&lt;br /&gt;
		&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_EVENT]&#039;)&lt;br /&gt;
          AND name = &#039;event_data&#039;&lt;br /&gt;
    )&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ADD&lt;br /&gt;
            event_data VARCHAR(MAX);&lt;br /&gt;
ELSE&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ALTER COLUMN event_data VARCHAR(MAX);&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE PC_EVENT ALTER COLUMN requester_ip varchar(64);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oracle ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo DROP COLUMN type;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo ADD renew_challenge VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_device MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_device MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_device ADD app_id VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_event MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_event MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_event MODIFY requester_ip VARCHAR2(64);&lt;br /&gt;
ALTER TABLE pc_event ADD event_data CLOB;&lt;br /&gt;
ALTER TABLE pc_event DROP COLUMN eventposturl;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_keyinfo MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_keyinfo MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_keyinfo DROP COLUMN type;&lt;br /&gt;
ALTER TABLE pc_keyinfo DROP COLUMN key_container_id;&lt;br /&gt;
ALTER TABLE pc_keyinfo ADD external_approve_data_id VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_publickey MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_publickey MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_publickey ADD autosign_public_key BLOB;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_system MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_system MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_system ADD callback_url VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY license VARCHAR2(4000);&lt;br /&gt;
ALTER TABLE pc_system_params ADD qr_url_scheme VARCHAR2(24);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_transaction MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_transaction MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_transaction ADD autosign_enabled NUMBER(5);&lt;br /&gt;
ALTER TABLE pc_transaction ADD ext_pulp BLOB;&lt;br /&gt;
ALTER TABLE pc_transaction ADD extended_check NUMBER(5);&lt;br /&gt;
ALTER TABLE pc_transaction ADD render_type NUMBER(10);&lt;br /&gt;
ALTER TABLE pc_transaction ADD scoring_settings VARCHAR2(1023);&lt;br /&gt;
ALTER TABLE pc_transaction ADD transaction_type NUMBER(10);&lt;br /&gt;
ALTER TABLE pc_transaction ADD snipped_text VARCHAR2(1023);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_user MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_user MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_user ADD blocked NUMBER(5);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_confirm_attempt ADD scoring_results VARCHAR2(512);&lt;br /&gt;
ALTER TABLE pc_confirm_attempt ADD scoring_settings VARCHAR2(512);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_sys_property MODIFY SETTING_VALUE VARCHAR2(1023);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запрос на регистрацию и лицензия ==&lt;br /&gt;
&lt;br /&gt;
=== Получение нового запроса и лицензии ===&lt;br /&gt;
&lt;br /&gt;
Для получения нового запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
=== Замена запроса в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%REGISTERREQUEST%&amp;lt;/code&amp;gt; на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%REGISTERREQUEST%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замена лицензии(при наличии) в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%LICENSE%&amp;lt;/code&amp;gt; на реальные данные лицензии, созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;{&amp;quot;request&amp;quot;:{&amp;quot;systemId&amp;quot;:&amp;quot;99000000-e00e-0ad0-00ab-f00f0000a0b0&amp;quot;,&amp;quot;dateTime&amp;quot;:1700000000000,&amp;quot;usersCount&amp;quot;:100,&amp;quot;licenseID&amp;quot;:&amp;quot;0000e000-0000-0000-b0ec-c0f0000000f0&amp;quot;,&amp;quot;type&amp;quot;:2,&amp;quot;features&amp;quot;:{&amp;quot;gost_crypto&amp;quot;:false,&amp;quot;pki&amp;quot;:{&amp;quot;openssl&amp;quot;:false},&amp;quot;binary_data&amp;quot;:{&amp;quot;raw&amp;quot;:true,&amp;quot;pdf&amp;quot;:true},&amp;quot;server_signer&amp;quot;:false,&amp;quot;rks&amp;quot;:false}},&amp;quot;signature&amp;quot;:&amp;quot;MEYCIQDy7OUT6iiligbiugYcpK9fjkU/GDRIUiJtB+UcHppVwIhAKzS+EcktxyRikvqEThPyo1jHlPuAfgxW+EEo5gioW7Y&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%LICENSE%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Обновление модулей PC =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для установки PC 6-й версии воспользуйтесь инструкцией по ссылке - https://repo.paycontrol.org/server/doc/latest/pc-install-guide/ru/#перед-установкой&lt;br /&gt;
&lt;br /&gt;
После обновления &#039;&#039;&#039;необходимо&#039;&#039;&#039; отключить автозапуск Wildfly и выполнить запрос к БД:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_keyinfo set is_activated=1;&lt;br /&gt;
update pc_transaction set transaction_type=0;&lt;br /&gt;
update pc_transaction set render_type=0;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректировка (смена) адресов компонентов серверов PC ==&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCP для подключения с PCS ===&lt;br /&gt;
&lt;br /&gt;
Для изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;:8082/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса для внешних подключений (PCE) с мобильных устройств ===&lt;br /&gt;
&lt;br /&gt;
Для изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-client-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Для работы старых ключей&#039;&#039;&#039;, обращающихся по эндпоинту &amp;lt;code&amp;gt;/PayControl-interaction-rest/&amp;lt;/code&amp;gt; нужно установить проксирование на эндпоинт &amp;lt;code&amp;gt;/pc-client-api/&amp;lt;/code&amp;gt;, любым удобным способом.&lt;br /&gt;
&lt;br /&gt;
Пример для nginx:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
        location /PayControl-interaction-rest/ {&lt;br /&gt;
                proxy_pass http://o-pc-ext-example.com:8081/pc-client-api/;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Правки для корректной отправки пушей ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=1;&lt;br /&gt;
!!!Запрос выше для Android при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;Android&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=2;&lt;br /&gt;
!!!Запрос выше для iOS при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;iOS&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&lt;br /&gt;
!!! &#039;&#039;&#039;Обратите внимание&#039;&#039;&#039;, что для выполнения запросов со split_part на Oracle нужно сначала выполнить запрос ниже:&lt;br /&gt;
create or replace function split_part(pString varchar2, pDelimiter varchar2, pPartNumber integer) return varchar2 deterministic is&lt;br /&gt;
  vStart number; &lt;br /&gt;
  vEnd   number;&lt;br /&gt;
begin&lt;br /&gt;
  if pPartNumber &amp;lt;&amp;gt; 0 and pDelimiter is not null then&lt;br /&gt;
    vStart := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber));&lt;br /&gt;
    vEnd   := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber) + 1);&lt;br /&gt;
  end if;&lt;br /&gt;
  return case         &lt;br /&gt;
           when pDelimiter is null and abs(pPartNumber) = 1 then pString&lt;br /&gt;
           when pPartNumber &amp;gt; 0 then substr(pString, vStart, vEnd - vStart - length(pDelimiter))                       &lt;br /&gt;
           when pPartNumber &amp;lt; 0 then substr(pString, vEnd, vStart - vEnd - length(pDelimiter))          &lt;br /&gt;
           else null&lt;br /&gt;
         end;&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
* Вся документация - https://repo.paycontrol.org/&lt;br /&gt;
&lt;br /&gt;
* Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
&lt;br /&gt;
* Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
&lt;br /&gt;
== Доступ к сервисам ==&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/&lt;br /&gt;
&lt;br /&gt;
=== Health Check ===&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек health check:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/health_check&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите сервисы PC.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
Переключитесь на Java 11.&lt;br /&gt;
&lt;br /&gt;
Запустите wildfly и включите автозапуск.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=850</id>
		<title>Обновление PayControl с версии 3 на версию 6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=850"/>
		<updated>2025-03-03T08:34:25Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Введение =&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Перед обновлением необходимо выполнить резервное копирование БД PCS и PCIS Internal.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC &#039;&#039;&#039;требуется&#039;&#039;&#039; остановить Wildfly и обновить Java до версии 17. Версия 11 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и PC может продолжить работать на версии 11, что приведёт к ошибкам. &lt;br /&gt;
&lt;br /&gt;
Для того чтобы компоненты работали под Java 17, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 6 изменены названия серверов:&lt;br /&gt;
&lt;br /&gt;
* PC Server (PCS) — без изменений;&lt;br /&gt;
* PC Interaction Internal — PC Pusher (PCP);&lt;br /&gt;
* PC Interaction External — PC External (PCE).&lt;br /&gt;
&lt;br /&gt;
= Изменения в БД =&lt;br /&gt;
&lt;br /&gt;
== Правки структуры таблиц БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== Postgre ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_delayedkeyinfo drop column type;&lt;br /&gt;
alter table pc_delayedkeyinfo add column renew_challenge varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_device alter column is_deleted set not null;&lt;br /&gt;
alter table pc_device alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_device add column app_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_event alter column is_deleted set not null;&lt;br /&gt;
alter table pc_event alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_event alter column requester_ip type varchar(64);&lt;br /&gt;
alter table pc_event add column event_data text;&lt;br /&gt;
alter table pc_event drop column eventposturl;&lt;br /&gt;
&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_keyinfo drop column type;&lt;br /&gt;
alter table pc_keyinfo drop column key_container_id;&lt;br /&gt;
alter table pc_keyinfo add column external_approve_data_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_publickey alter column is_deleted set not null;&lt;br /&gt;
alter table pc_publickey alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_publickey add column autosign_public_key bytea;&lt;br /&gt;
&lt;br /&gt;
alter table pc_system alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system add column callback_url varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_system_params alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system_params alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system_params alter column license type varchar(4096);&lt;br /&gt;
alter table pc_system_params add column qr_url_scheme varchar(24);&lt;br /&gt;
&lt;br /&gt;
alter table pc_transaction alter column is_deleted set not null;&lt;br /&gt;
alter table pc_transaction alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_transaction add column autosign_enabled int2;&lt;br /&gt;
alter table pc_transaction add column ext_pulp bytea;&lt;br /&gt;
alter table pc_transaction add column extended_check int2;&lt;br /&gt;
alter table pc_transaction add column render_type int4;&lt;br /&gt;
alter table pc_transaction add column scoring_settings varchar(1023);&lt;br /&gt;
alter table pc_transaction add column transaction_type int4;&lt;br /&gt;
&lt;br /&gt;
alter table pc_user alter column is_deleted set not null;&lt;br /&gt;
alter table pc_user alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_user add column blocked int2;&lt;br /&gt;
&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_results varchar(512);&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_settings varchar(512);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MS SQL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;transaction_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        transaction_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_SYSTEM]&#039;)&lt;br /&gt;
          AND name = &#039;callback_url&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_SYSTEM&lt;br /&gt;
    ADD&lt;br /&gt;
        callback_url character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_USER]&#039;)&lt;br /&gt;
          AND name = &#039;blocked&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_USER&lt;br /&gt;
    ADD&lt;br /&gt;
        blocked smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;external_approve_data_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        external_approve_data_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_PUBLICKEY]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_public_key&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_public_key varbinary(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;renew_challenge&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        renew_challenge character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DEVICE]&#039;)&lt;br /&gt;
          AND name = &#039;app_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DEVICE&lt;br /&gt;
    ADD&lt;br /&gt;
        app_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_enabled&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_enabled smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;ext_pulp&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        ext_pulp character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;extended_check&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        extended_check smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;render_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        render_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(1023);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_results&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_results character varying(512);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(512);&lt;br /&gt;
		&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_EVENT]&#039;)&lt;br /&gt;
          AND name = &#039;event_data&#039;&lt;br /&gt;
    )&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ADD&lt;br /&gt;
            event_data VARCHAR(MAX);&lt;br /&gt;
ELSE&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ALTER COLUMN event_data VARCHAR(MAX);&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE PC_EVENT ALTER COLUMN requester_ip varchar(64);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oracle ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo DROP COLUMN type;&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo ADD renew_challenge VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_device MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_device MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_device ADD app_id VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_event MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_event MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_event MODIFY requester_ip VARCHAR2(64);&lt;br /&gt;
ALTER TABLE pc_event ADD event_data CLOB;&lt;br /&gt;
ALTER TABLE pc_event DROP COLUMN eventposturl;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_keyinfo MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_keyinfo MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_keyinfo DROP COLUMN type;&lt;br /&gt;
ALTER TABLE pc_keyinfo DROP COLUMN key_container_id;&lt;br /&gt;
ALTER TABLE pc_keyinfo ADD external_approve_data_id VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_publickey MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_publickey MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_publickey ADD autosign_public_key BLOB;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_system MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_system MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_system ADD callback_url VARCHAR2(255);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_system_params MODIFY license VARCHAR2(4000);&lt;br /&gt;
ALTER TABLE pc_system_params ADD qr_url_scheme VARCHAR2(24);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_transaction MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_transaction MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_transaction ADD autosign_enabled NUMBER(5);&lt;br /&gt;
ALTER TABLE pc_transaction ADD ext_pulp BLOB;&lt;br /&gt;
ALTER TABLE pc_transaction ADD extended_check NUMBER(5);&lt;br /&gt;
ALTER TABLE pc_transaction ADD render_type NUMBER(10);&lt;br /&gt;
ALTER TABLE pc_transaction ADD scoring_settings VARCHAR2(1023);&lt;br /&gt;
ALTER TABLE pc_transaction ADD transaction_type NUMBER(10);&lt;br /&gt;
ALTER TABLE pc_transaction ADD snipped_text VARCHAR2(1023);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_user MODIFY is_deleted NOT NULL;&lt;br /&gt;
ALTER TABLE pc_user MODIFY is_deleted DEFAULT 0;&lt;br /&gt;
ALTER TABLE pc_user ADD blocked NUMBER(5);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_confirm_attempt ADD scoring_results VARCHAR2(512);&lt;br /&gt;
ALTER TABLE pc_confirm_attempt ADD scoring_settings VARCHAR2(512);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запрос на регистрацию и лицензия ==&lt;br /&gt;
&lt;br /&gt;
=== Получение нового запроса и лицензии ===&lt;br /&gt;
&lt;br /&gt;
Для получения нового запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
=== Замена запроса в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%REGISTERREQUEST%&amp;lt;/code&amp;gt; на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%REGISTERREQUEST%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замена лицензии(при наличии) в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%LICENSE%&amp;lt;/code&amp;gt; на реальные данные лицензии, созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;{&amp;quot;request&amp;quot;:{&amp;quot;systemId&amp;quot;:&amp;quot;99000000-e00e-0ad0-00ab-f00f0000a0b0&amp;quot;,&amp;quot;dateTime&amp;quot;:1700000000000,&amp;quot;usersCount&amp;quot;:100,&amp;quot;licenseID&amp;quot;:&amp;quot;0000e000-0000-0000-b0ec-c0f0000000f0&amp;quot;,&amp;quot;type&amp;quot;:2,&amp;quot;features&amp;quot;:{&amp;quot;gost_crypto&amp;quot;:false,&amp;quot;pki&amp;quot;:{&amp;quot;openssl&amp;quot;:false},&amp;quot;binary_data&amp;quot;:{&amp;quot;raw&amp;quot;:true,&amp;quot;pdf&amp;quot;:true},&amp;quot;server_signer&amp;quot;:false,&amp;quot;rks&amp;quot;:false}},&amp;quot;signature&amp;quot;:&amp;quot;MEYCIQDy7OUT6iiligbiugYcpK9fjkU/GDRIUiJtB+UcHppVwIhAKzS+EcktxyRikvqEThPyo1jHlPuAfgxW+EEo5gioW7Y&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%LICENSE%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Обновление модулей PC =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для установки PC 6-й версии воспользуйтесь инструкцией по ссылке - https://repo.paycontrol.org/server/doc/latest/pc-install-guide/ru/#перед-установкой&lt;br /&gt;
&lt;br /&gt;
После обновления &#039;&#039;&#039;необходимо&#039;&#039;&#039; отключить автозапуск Wildfly и выполнить запрос к БД:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_keyinfo set is_activated=1;&lt;br /&gt;
update pc_transaction set transaction_type=0;&lt;br /&gt;
update pc_transaction set render_type=0;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректировка (смена) адресов компонентов серверов PC ==&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCP для подключения с PCS ===&lt;br /&gt;
&lt;br /&gt;
Для изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;:8082/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса для внешних подключений (PCE) с мобильных устройств ===&lt;br /&gt;
&lt;br /&gt;
Для изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-client-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Для работы старых ключей&#039;&#039;&#039;, обращающихся по эндпоинту &amp;lt;code&amp;gt;/PayControl-interaction-rest/&amp;lt;/code&amp;gt; нужно установить проксирование на эндпоинт &amp;lt;code&amp;gt;/pc-client-api/&amp;lt;/code&amp;gt;, любым удобным способом.&lt;br /&gt;
&lt;br /&gt;
Пример для nginx:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
        location /PayControl-interaction-rest/ {&lt;br /&gt;
                proxy_pass http://o-pc-ext-example.com:8081/pc-client-api/;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Правки для корректной отправки пушей ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=1;&lt;br /&gt;
!!!Запрос выше для Android при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;Android&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=2;&lt;br /&gt;
!!!Запрос выше для iOS при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;iOS&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&lt;br /&gt;
!!! &#039;&#039;&#039;Обратите внимание&#039;&#039;&#039;, что для выполнения запросов со split_part на Oracle нужно сначала выполнить запрос ниже:&lt;br /&gt;
create or replace function split_part(pString varchar2, pDelimiter varchar2, pPartNumber integer) return varchar2 deterministic is&lt;br /&gt;
  vStart number; &lt;br /&gt;
  vEnd   number;&lt;br /&gt;
begin&lt;br /&gt;
  if pPartNumber &amp;lt;&amp;gt; 0 and pDelimiter is not null then&lt;br /&gt;
    vStart := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber));&lt;br /&gt;
    vEnd   := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber) + 1);&lt;br /&gt;
  end if;&lt;br /&gt;
  return case         &lt;br /&gt;
           when pDelimiter is null and abs(pPartNumber) = 1 then pString&lt;br /&gt;
           when pPartNumber &amp;gt; 0 then substr(pString, vStart, vEnd - vStart - length(pDelimiter))                       &lt;br /&gt;
           when pPartNumber &amp;lt; 0 then substr(pString, vEnd, vStart - vEnd - length(pDelimiter))          &lt;br /&gt;
           else null&lt;br /&gt;
         end;&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
* Вся документация - https://repo.paycontrol.org/&lt;br /&gt;
&lt;br /&gt;
* Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
&lt;br /&gt;
* Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
&lt;br /&gt;
== Доступ к сервисам ==&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/&lt;br /&gt;
&lt;br /&gt;
=== Health Check ===&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек health check:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/health_check&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите сервисы PC.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
Переключитесь на Java 11.&lt;br /&gt;
&lt;br /&gt;
Запустите wildfly и включите автозапуск.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=849</id>
		<title>Обновление PayControl с версии 3 на версию 6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=849"/>
		<updated>2024-11-22T06:29:12Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Обновление модулей PC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Введение =&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Перед обновлением необходимо выполнить резервное копирование БД PCS и PCIS Internal.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC &#039;&#039;&#039;требуется&#039;&#039;&#039; остановить Wildfly и обновить Java до версии 17. Версия 11 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и PC может продолжить работать на версии 11, что приведёт к ошибкам. &lt;br /&gt;
&lt;br /&gt;
Для того чтобы компоненты работали под Java 17, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 6 изменены названия серверов:&lt;br /&gt;
&lt;br /&gt;
* PC Server (PCS) — без изменений;&lt;br /&gt;
* PC Interaction Internal — PC Pusher (PCP);&lt;br /&gt;
* PC Interaction External — PC External (PCE).&lt;br /&gt;
&lt;br /&gt;
= Изменения в БД =&lt;br /&gt;
&lt;br /&gt;
== Правки структуры таблиц БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== Postgre ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_delayedkeyinfo drop column type;&lt;br /&gt;
alter table pc_delayedkeyinfo add column renew_challenge varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_device alter column is_deleted set not null;&lt;br /&gt;
alter table pc_device alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_device add column app_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_event alter column is_deleted set not null;&lt;br /&gt;
alter table pc_event alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_event alter column requester_ip type varchar(64);&lt;br /&gt;
alter table pc_event add column event_data text;&lt;br /&gt;
alter table pc_event drop column eventposturl;&lt;br /&gt;
&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_keyinfo drop column type;&lt;br /&gt;
alter table pc_keyinfo drop column key_container_id;&lt;br /&gt;
alter table pc_keyinfo add column external_approve_data_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_publickey alter column is_deleted set not null;&lt;br /&gt;
alter table pc_publickey alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_publickey add column autosign_public_key bytea;&lt;br /&gt;
&lt;br /&gt;
alter table pc_system alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system add column callback_url varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_system_params alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system_params alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system_params alter column license type varchar(4096);&lt;br /&gt;
alter table pc_system_params add column qr_url_scheme varchar(24);&lt;br /&gt;
&lt;br /&gt;
alter table pc_transaction alter column is_deleted set not null;&lt;br /&gt;
alter table pc_transaction alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_transaction add column autosign_enabled int2;&lt;br /&gt;
alter table pc_transaction add column ext_pulp bytea;&lt;br /&gt;
alter table pc_transaction add column extended_check int2;&lt;br /&gt;
alter table pc_transaction add column render_type int4;&lt;br /&gt;
alter table pc_transaction add column scoring_settings varchar(1023);&lt;br /&gt;
alter table pc_transaction add column transaction_type int4;&lt;br /&gt;
&lt;br /&gt;
alter table pc_user alter column is_deleted set not null;&lt;br /&gt;
alter table pc_user alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_user add column blocked int2;&lt;br /&gt;
&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_results varchar(512);&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_settings varchar(512);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MS SQL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;transaction_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        transaction_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_SYSTEM]&#039;)&lt;br /&gt;
          AND name = &#039;callback_url&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_SYSTEM&lt;br /&gt;
    ADD&lt;br /&gt;
        callback_url character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_USER]&#039;)&lt;br /&gt;
          AND name = &#039;blocked&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_USER&lt;br /&gt;
    ADD&lt;br /&gt;
        blocked smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;external_approve_data_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        external_approve_data_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_PUBLICKEY]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_public_key&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_public_key varbinary(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;renew_challenge&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        renew_challenge character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DEVICE]&#039;)&lt;br /&gt;
          AND name = &#039;app_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DEVICE&lt;br /&gt;
    ADD&lt;br /&gt;
        app_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_enabled&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_enabled smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;ext_pulp&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        ext_pulp character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;extended_check&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        extended_check smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;render_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        render_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(1023);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_results&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_results character varying(512);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(512);&lt;br /&gt;
		&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_EVENT]&#039;)&lt;br /&gt;
          AND name = &#039;event_data&#039;&lt;br /&gt;
    )&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ADD&lt;br /&gt;
            event_data VARCHAR(MAX);&lt;br /&gt;
ELSE&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ALTER COLUMN event_data VARCHAR(MAX);&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE PC_EVENT ALTER COLUMN requester_ip varchar(64);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запрос на регистрацию и лицензия ==&lt;br /&gt;
&lt;br /&gt;
=== Получение нового запроса и лицензии ===&lt;br /&gt;
&lt;br /&gt;
Для получения нового запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
=== Замена запроса в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%REGISTERREQUEST%&amp;lt;/code&amp;gt; на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%REGISTERREQUEST%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замена лицензии(при наличии) в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%LICENSE%&amp;lt;/code&amp;gt; на реальные данные лицензии, созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;{&amp;quot;request&amp;quot;:{&amp;quot;systemId&amp;quot;:&amp;quot;99000000-e00e-0ad0-00ab-f00f0000a0b0&amp;quot;,&amp;quot;dateTime&amp;quot;:1700000000000,&amp;quot;usersCount&amp;quot;:100,&amp;quot;licenseID&amp;quot;:&amp;quot;0000e000-0000-0000-b0ec-c0f0000000f0&amp;quot;,&amp;quot;type&amp;quot;:2,&amp;quot;features&amp;quot;:{&amp;quot;gost_crypto&amp;quot;:false,&amp;quot;pki&amp;quot;:{&amp;quot;openssl&amp;quot;:false},&amp;quot;binary_data&amp;quot;:{&amp;quot;raw&amp;quot;:true,&amp;quot;pdf&amp;quot;:true},&amp;quot;server_signer&amp;quot;:false,&amp;quot;rks&amp;quot;:false}},&amp;quot;signature&amp;quot;:&amp;quot;MEYCIQDy7OUT6iiligbiugYcpK9fjkU/GDRIUiJtB+UcHppVwIhAKzS+EcktxyRikvqEThPyo1jHlPuAfgxW+EEo5gioW7Y&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%LICENSE%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Обновление модулей PC =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для установки PC 6-й версии воспользуйтесь инструкцией по ссылке - https://repo.paycontrol.org/server/doc/latest/pc-install-guide/ru/#перед-установкой&lt;br /&gt;
&lt;br /&gt;
После обновления &#039;&#039;&#039;необходимо&#039;&#039;&#039; отключить автозапуск Wildfly и выполнить запрос к БД:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_keyinfo set is_activated=1;&lt;br /&gt;
update pc_transaction set transaction_type=0;&lt;br /&gt;
update pc_transaction set render_type=0;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректировка (смена) адресов компонентов серверов PC ==&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCP для подключения с PCS ===&lt;br /&gt;
&lt;br /&gt;
Для изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;:8082/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса для внешних подключений (PCE) с мобильных устройств ===&lt;br /&gt;
&lt;br /&gt;
Для изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-client-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Для работы старых ключей&#039;&#039;&#039;, обращающихся по эндпоинту &amp;lt;code&amp;gt;/PayControl-interaction-rest/&amp;lt;/code&amp;gt; нужно установить проксирование на эндпоинт &amp;lt;code&amp;gt;/pc-client-api/&amp;lt;/code&amp;gt;, любым удобным способом.&lt;br /&gt;
&lt;br /&gt;
Пример для nginx:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
        location /PayControl-interaction-rest/ {&lt;br /&gt;
                proxy_pass http://o-pc-ext-example.com:8081/pc-client-api/;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Правки для корректной отправки пушей ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=1;&lt;br /&gt;
!!!Запрос выше для Android при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;Android&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=2;&lt;br /&gt;
!!!Запрос выше для iOS при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;iOS&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&lt;br /&gt;
!!! &#039;&#039;&#039;Обратите внимание&#039;&#039;&#039;, что для выполнения запросов со split_part на Oracle нужно сначала выполнить запрос ниже:&lt;br /&gt;
create or replace function split_part(pString varchar2, pDelimiter varchar2, pPartNumber integer) return varchar2 deterministic is&lt;br /&gt;
  vStart number; &lt;br /&gt;
  vEnd   number;&lt;br /&gt;
begin&lt;br /&gt;
  if pPartNumber &amp;lt;&amp;gt; 0 and pDelimiter is not null then&lt;br /&gt;
    vStart := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber));&lt;br /&gt;
    vEnd   := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber) + 1);&lt;br /&gt;
  end if;&lt;br /&gt;
  return case         &lt;br /&gt;
           when pDelimiter is null and abs(pPartNumber) = 1 then pString&lt;br /&gt;
           when pPartNumber &amp;gt; 0 then substr(pString, vStart, vEnd - vStart - length(pDelimiter))                       &lt;br /&gt;
           when pPartNumber &amp;lt; 0 then substr(pString, vEnd, vStart - vEnd - length(pDelimiter))          &lt;br /&gt;
           else null&lt;br /&gt;
         end;&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
* Вся документация - https://repo.paycontrol.org/&lt;br /&gt;
&lt;br /&gt;
* Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
&lt;br /&gt;
* Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
&lt;br /&gt;
== Доступ к сервисам ==&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/&lt;br /&gt;
&lt;br /&gt;
=== Health Check ===&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек health check:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/health_check&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите сервисы PC.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
Переключитесь на Java 11.&lt;br /&gt;
&lt;br /&gt;
Запустите wildfly и включите автозапуск.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=848</id>
		<title>Обновление PayControl с версии 3 на версию 6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=848"/>
		<updated>2024-11-21T07:49:09Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Введение =&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Перед обновлением необходимо выполнить резервное копирование БД PCS и PCIS Internal.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC &#039;&#039;&#039;требуется&#039;&#039;&#039; остановить Wildfly и обновить Java до версии 17. Версия 11 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и PC может продолжить работать на версии 11, что приведёт к ошибкам. &lt;br /&gt;
&lt;br /&gt;
Для того чтобы компоненты работали под Java 17, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 6 изменены названия серверов:&lt;br /&gt;
&lt;br /&gt;
* PC Server (PCS) — без изменений;&lt;br /&gt;
* PC Interaction Internal — PC Pusher (PCP);&lt;br /&gt;
* PC Interaction External — PC External (PCE).&lt;br /&gt;
&lt;br /&gt;
= Изменения в БД =&lt;br /&gt;
&lt;br /&gt;
== Правки структуры таблиц БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== Postgre ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_delayedkeyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_delayedkeyinfo drop column type;&lt;br /&gt;
alter table pc_delayedkeyinfo add column renew_challenge varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_device alter column is_deleted set not null;&lt;br /&gt;
alter table pc_device alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_device add column app_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_event alter column is_deleted set not null;&lt;br /&gt;
alter table pc_event alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_event alter column requester_ip type varchar(64);&lt;br /&gt;
alter table pc_event add column event_data text;&lt;br /&gt;
alter table pc_event drop column eventposturl;&lt;br /&gt;
&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set not null;&lt;br /&gt;
alter table pc_keyinfo alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_keyinfo drop column type;&lt;br /&gt;
alter table pc_keyinfo drop column key_container_id;&lt;br /&gt;
alter table pc_keyinfo add column external_approve_data_id varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_publickey alter column is_deleted set not null;&lt;br /&gt;
alter table pc_publickey alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_publickey add column autosign_public_key bytea;&lt;br /&gt;
&lt;br /&gt;
alter table pc_system alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system add column callback_url varchar(255);&lt;br /&gt;
&lt;br /&gt;
alter table pc_system_params alter column is_deleted set not null;&lt;br /&gt;
alter table pc_system_params alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_system_params alter column license type varchar(4096);&lt;br /&gt;
alter table pc_system_params add column qr_url_scheme varchar(24);&lt;br /&gt;
&lt;br /&gt;
alter table pc_transaction alter column is_deleted set not null;&lt;br /&gt;
alter table pc_transaction alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_transaction add column autosign_enabled int2;&lt;br /&gt;
alter table pc_transaction add column ext_pulp bytea;&lt;br /&gt;
alter table pc_transaction add column extended_check int2;&lt;br /&gt;
alter table pc_transaction add column render_type int4;&lt;br /&gt;
alter table pc_transaction add column scoring_settings varchar(1023);&lt;br /&gt;
alter table pc_transaction add column transaction_type int4;&lt;br /&gt;
&lt;br /&gt;
alter table pc_user alter column is_deleted set not null;&lt;br /&gt;
alter table pc_user alter column is_deleted set default 0;&lt;br /&gt;
alter table pc_user add column blocked int2;&lt;br /&gt;
&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_results varchar(512);&lt;br /&gt;
alter table pc_confirm_attempt add column scoring_settings varchar(512);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MS SQL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;transaction_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        transaction_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_SYSTEM]&#039;)&lt;br /&gt;
          AND name = &#039;callback_url&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_SYSTEM&lt;br /&gt;
    ADD&lt;br /&gt;
        callback_url character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_USER]&#039;)&lt;br /&gt;
          AND name = &#039;blocked&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_USER&lt;br /&gt;
    ADD&lt;br /&gt;
        blocked smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;external_approve_data_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        external_approve_data_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_PUBLICKEY]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_public_key&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_public_key varbinary(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;renew_challenge&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        renew_challenge character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DEVICE]&#039;)&lt;br /&gt;
          AND name = &#039;app_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DEVICE&lt;br /&gt;
    ADD&lt;br /&gt;
        app_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_enabled&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_enabled smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;ext_pulp&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        ext_pulp character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;extended_check&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        extended_check smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;render_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        render_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(1023);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_results&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_results character varying(512);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(512);&lt;br /&gt;
		&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_EVENT]&#039;)&lt;br /&gt;
          AND name = &#039;event_data&#039;&lt;br /&gt;
    )&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ADD&lt;br /&gt;
            event_data VARCHAR(MAX);&lt;br /&gt;
ELSE&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ALTER COLUMN event_data VARCHAR(MAX);&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE PC_EVENT ALTER COLUMN requester_ip varchar(64);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запрос на регистрацию и лицензия ==&lt;br /&gt;
&lt;br /&gt;
=== Получение нового запроса и лицензии ===&lt;br /&gt;
&lt;br /&gt;
Для получения нового запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
=== Замена запроса в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%REGISTERREQUEST%&amp;lt;/code&amp;gt; на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%REGISTERREQUEST%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замена лицензии(при наличии) в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%LICENSE%&amp;lt;/code&amp;gt; на реальные данные лицензии, созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;{&amp;quot;request&amp;quot;:{&amp;quot;systemId&amp;quot;:&amp;quot;99000000-e00e-0ad0-00ab-f00f0000a0b0&amp;quot;,&amp;quot;dateTime&amp;quot;:1700000000000,&amp;quot;usersCount&amp;quot;:100,&amp;quot;licenseID&amp;quot;:&amp;quot;0000e000-0000-0000-b0ec-c0f0000000f0&amp;quot;,&amp;quot;type&amp;quot;:2,&amp;quot;features&amp;quot;:{&amp;quot;gost_crypto&amp;quot;:false,&amp;quot;pki&amp;quot;:{&amp;quot;openssl&amp;quot;:false},&amp;quot;binary_data&amp;quot;:{&amp;quot;raw&amp;quot;:true,&amp;quot;pdf&amp;quot;:true},&amp;quot;server_signer&amp;quot;:false,&amp;quot;rks&amp;quot;:false}},&amp;quot;signature&amp;quot;:&amp;quot;MEYCIQDy7OUT6iiligbiugYcpK9fjkU/GDRIUiJtB+UcHppVwIhAKzS+EcktxyRikvqEThPyo1jHlPuAfgxW+EEo5gioW7Y&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%LICENSE%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Обновление модулей PC =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для установки PC 6-й версии воспользуйтесь инструкцией по ссылке - https://repo.paycontrol.org/server/doc/latest/pc-install-guide/ru/#перед-установкой&lt;br /&gt;
&lt;br /&gt;
После обновления &#039;&#039;&#039;необходимо&#039;&#039;&#039; отключить автозапуск Wildfly и выполнить запрос к БД:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE PC_KEYINFO SET is_activated=1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректировка (смена) адресов компонентов серверов PC ==&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCP для подключения с PCS ===&lt;br /&gt;
&lt;br /&gt;
Для изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;:8082/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса для внешних подключений (PCE) с мобильных устройств ===&lt;br /&gt;
&lt;br /&gt;
Для изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-client-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Для работы старых ключей&#039;&#039;&#039;, обращающихся по эндпоинту &amp;lt;code&amp;gt;/PayControl-interaction-rest/&amp;lt;/code&amp;gt; нужно установить проксирование на эндпоинт &amp;lt;code&amp;gt;/pc-client-api/&amp;lt;/code&amp;gt;, любым удобным способом.&lt;br /&gt;
&lt;br /&gt;
Пример для nginx:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
        location /PayControl-interaction-rest/ {&lt;br /&gt;
                proxy_pass http://o-pc-ext-example.com:8081/pc-client-api/;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Правки для корректной отправки пушей ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=1;&lt;br /&gt;
!!!Запрос выше для Android при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;Android&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=2;&lt;br /&gt;
!!!Запрос выше для iOS при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;iOS&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&lt;br /&gt;
!!! &#039;&#039;&#039;Обратите внимание&#039;&#039;&#039;, что для выполнения запросов со split_part на Oracle нужно сначала выполнить запрос ниже:&lt;br /&gt;
create or replace function split_part(pString varchar2, pDelimiter varchar2, pPartNumber integer) return varchar2 deterministic is&lt;br /&gt;
  vStart number; &lt;br /&gt;
  vEnd   number;&lt;br /&gt;
begin&lt;br /&gt;
  if pPartNumber &amp;lt;&amp;gt; 0 and pDelimiter is not null then&lt;br /&gt;
    vStart := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber));&lt;br /&gt;
    vEnd   := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber) + 1);&lt;br /&gt;
  end if;&lt;br /&gt;
  return case         &lt;br /&gt;
           when pDelimiter is null and abs(pPartNumber) = 1 then pString&lt;br /&gt;
           when pPartNumber &amp;gt; 0 then substr(pString, vStart, vEnd - vStart - length(pDelimiter))                       &lt;br /&gt;
           when pPartNumber &amp;lt; 0 then substr(pString, vEnd, vStart - vEnd - length(pDelimiter))          &lt;br /&gt;
           else null&lt;br /&gt;
         end;&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
* Вся документация - https://repo.paycontrol.org/&lt;br /&gt;
&lt;br /&gt;
* Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
&lt;br /&gt;
* Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
&lt;br /&gt;
== Доступ к сервисам ==&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/&lt;br /&gt;
&lt;br /&gt;
=== Health Check ===&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек health check:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/health_check&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите сервисы PC.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
Переключитесь на Java 11.&lt;br /&gt;
&lt;br /&gt;
Запустите wildfly и включите автозапуск.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=847</id>
		<title>Обновление PayControl с версии 3 на версию 6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=847"/>
		<updated>2024-11-17T22:41:32Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Изменение адреса для внешних подключений (PCE) с мобильных устройств */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Введение =&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Перед обновлением необходимо выполнить резервное копирование БД PCS и PCIS Internal.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC &#039;&#039;&#039;требуется&#039;&#039;&#039; остановить Wildfly и обновить Java до версии 17. Версия 11 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и PC может продолжить работать на версии 11, что приведёт к ошибкам. &lt;br /&gt;
&lt;br /&gt;
Для того чтобы компоненты работали под Java 17, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 6 изменены названия серверов:&lt;br /&gt;
&lt;br /&gt;
* PC Server (PCS) — без изменений;&lt;br /&gt;
* PC Interaction Internal — PC Pusher (PCP);&lt;br /&gt;
* PC Interaction External — PC External (PCE).&lt;br /&gt;
&lt;br /&gt;
= Изменения в БД =&lt;br /&gt;
&lt;br /&gt;
== Правки структуры таблиц БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== MS SQL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;transaction_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        transaction_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_SYSTEM]&#039;)&lt;br /&gt;
          AND name = &#039;callback_url&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_SYSTEM&lt;br /&gt;
    ADD&lt;br /&gt;
        callback_url character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_USER]&#039;)&lt;br /&gt;
          AND name = &#039;blocked&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_USER&lt;br /&gt;
    ADD&lt;br /&gt;
        blocked smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;external_approve_data_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        external_approve_data_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_PUBLICKEY]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_public_key&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_public_key varbinary(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;renew_challenge&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        renew_challenge character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DEVICE]&#039;)&lt;br /&gt;
          AND name = &#039;app_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DEVICE&lt;br /&gt;
    ADD&lt;br /&gt;
        app_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_enabled&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_enabled smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;ext_pulp&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        ext_pulp character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;extended_check&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        extended_check smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;render_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        render_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(1023);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_results&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_results character varying(512);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(512);&lt;br /&gt;
		&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_EVENT]&#039;)&lt;br /&gt;
          AND name = &#039;event_data&#039;&lt;br /&gt;
    )&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ADD&lt;br /&gt;
            event_data VARCHAR(MAX);&lt;br /&gt;
ELSE&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ALTER COLUMN event_data VARCHAR(MAX);&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE PC_EVENT ALTER COLUMN requester_ip varchar(64);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запрос на регистрацию и лицензия ==&lt;br /&gt;
&lt;br /&gt;
=== Получение нового запроса и лицензии ===&lt;br /&gt;
&lt;br /&gt;
Для получения нового запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
=== Замена запроса в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%REGISTERREQUEST%&amp;lt;/code&amp;gt; на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%REGISTERREQUEST%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замена лицензии(при наличии) в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%LICENSE%&amp;lt;/code&amp;gt; на реальные данные лицензии, созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;{&amp;quot;request&amp;quot;:{&amp;quot;systemId&amp;quot;:&amp;quot;99000000-e00e-0ad0-00ab-f00f0000a0b0&amp;quot;,&amp;quot;dateTime&amp;quot;:1700000000000,&amp;quot;usersCount&amp;quot;:100,&amp;quot;licenseID&amp;quot;:&amp;quot;0000e000-0000-0000-b0ec-c0f0000000f0&amp;quot;,&amp;quot;type&amp;quot;:2,&amp;quot;features&amp;quot;:{&amp;quot;gost_crypto&amp;quot;:false,&amp;quot;pki&amp;quot;:{&amp;quot;openssl&amp;quot;:false},&amp;quot;binary_data&amp;quot;:{&amp;quot;raw&amp;quot;:true,&amp;quot;pdf&amp;quot;:true},&amp;quot;server_signer&amp;quot;:false,&amp;quot;rks&amp;quot;:false}},&amp;quot;signature&amp;quot;:&amp;quot;MEYCIQDy7OUT6iiligbiugYcpK9fjkU/GDRIUiJtB+UcHppVwIhAKzS+EcktxyRikvqEThPyo1jHlPuAfgxW+EEo5gioW7Y&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%LICENSE%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Обновление модулей PC =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для установки PC 6-й версии воспользуйтесь инструкцией по ссылке - https://repo.paycontrol.org/server/doc/latest/pc-install-guide/ru/#перед-установкой&lt;br /&gt;
&lt;br /&gt;
После обновления &#039;&#039;&#039;необходимо&#039;&#039;&#039; отключить автозапуск Wildfly и выполнить запрос к БД:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE PC_KEYINFO SET is_activated=1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректировка (смена) адресов компонентов серверов PC ==&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCP для подключения с PCS ===&lt;br /&gt;
&lt;br /&gt;
Для изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;:8082/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса для внешних подключений (PCE) с мобильных устройств ===&lt;br /&gt;
&lt;br /&gt;
Для изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-client-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Для работы старых ключей&#039;&#039;&#039;, обращающихся по эндпоинту &amp;lt;code&amp;gt;/PayControl-interaction-rest/&amp;lt;/code&amp;gt; нужно установить проксирование на эндпоинт &amp;lt;code&amp;gt;/pc-client-api/&amp;lt;/code&amp;gt;, любым удобным способом.&lt;br /&gt;
&lt;br /&gt;
Пример для nginx:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
        location /PayControl-interaction-rest/ {&lt;br /&gt;
                proxy_pass http://o-pc-ext-example.com:8081/pc-client-api/;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Правки для корректной отправки пушей ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=1;&lt;br /&gt;
!!!Запрос выше для Android при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;Android&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=2;&lt;br /&gt;
!!!Запрос выше для iOS при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;iOS&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&lt;br /&gt;
!!! &#039;&#039;&#039;Обратите внимание&#039;&#039;&#039;, что для выполнения запросов со split_part на Oracle нужно сначала выполнить запрос ниже:&lt;br /&gt;
create or replace function split_part(pString varchar2, pDelimiter varchar2, pPartNumber integer) return varchar2 deterministic is&lt;br /&gt;
  vStart number; &lt;br /&gt;
  vEnd   number;&lt;br /&gt;
begin&lt;br /&gt;
  if pPartNumber &amp;lt;&amp;gt; 0 and pDelimiter is not null then&lt;br /&gt;
    vStart := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber));&lt;br /&gt;
    vEnd   := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber) + 1);&lt;br /&gt;
  end if;&lt;br /&gt;
  return case         &lt;br /&gt;
           when pDelimiter is null and abs(pPartNumber) = 1 then pString&lt;br /&gt;
           when pPartNumber &amp;gt; 0 then substr(pString, vStart, vEnd - vStart - length(pDelimiter))                       &lt;br /&gt;
           when pPartNumber &amp;lt; 0 then substr(pString, vEnd, vStart - vEnd - length(pDelimiter))          &lt;br /&gt;
           else null&lt;br /&gt;
         end;&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
* Вся документация - https://repo.paycontrol.org/&lt;br /&gt;
&lt;br /&gt;
* Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
&lt;br /&gt;
* Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
&lt;br /&gt;
== Доступ к сервисам ==&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/&lt;br /&gt;
&lt;br /&gt;
=== Health Check ===&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек health check:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/health_check&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите сервисы PC.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
Переключитесь на Java 11.&lt;br /&gt;
&lt;br /&gt;
Запустите wildfly и включите автозапуск.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=846</id>
		<title>Обновление PayControl с версии 3 на версию 6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=846"/>
		<updated>2024-11-15T14:53:54Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* MS SQL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Введение =&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Перед обновлением необходимо выполнить резервное копирование БД PCS и PCIS Internal.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC &#039;&#039;&#039;требуется&#039;&#039;&#039; остановить Wildfly и обновить Java до версии 17. Версия 11 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и PC может продолжить работать на версии 11, что приведёт к ошибкам. &lt;br /&gt;
&lt;br /&gt;
Для того чтобы компоненты работали под Java 17, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 6 изменены названия серверов:&lt;br /&gt;
&lt;br /&gt;
* PC Server (PCS) — без изменений;&lt;br /&gt;
* PC Interaction Internal — PC Pusher (PCP);&lt;br /&gt;
* PC Interaction External — PC External (PCE).&lt;br /&gt;
&lt;br /&gt;
= Изменения в БД =&lt;br /&gt;
&lt;br /&gt;
== Правки структуры таблиц БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== MS SQL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;transaction_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        transaction_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_SYSTEM]&#039;)&lt;br /&gt;
          AND name = &#039;callback_url&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_SYSTEM&lt;br /&gt;
    ADD&lt;br /&gt;
        callback_url character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_USER]&#039;)&lt;br /&gt;
          AND name = &#039;blocked&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_USER&lt;br /&gt;
    ADD&lt;br /&gt;
        blocked smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;external_approve_data_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        external_approve_data_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_PUBLICKEY]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_public_key&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_public_key varbinary(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;renew_challenge&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        renew_challenge character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DEVICE]&#039;)&lt;br /&gt;
          AND name = &#039;app_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DEVICE&lt;br /&gt;
    ADD&lt;br /&gt;
        app_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_enabled&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_enabled smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;ext_pulp&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        ext_pulp character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;extended_check&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        extended_check smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;render_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        render_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(1023);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_results&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_results character varying(512);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(512);&lt;br /&gt;
		&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_EVENT]&#039;)&lt;br /&gt;
          AND name = &#039;event_data&#039;&lt;br /&gt;
    )&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ADD&lt;br /&gt;
            event_data VARCHAR(MAX);&lt;br /&gt;
ELSE&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ALTER COLUMN event_data VARCHAR(MAX);&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
IF EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE PC_EVENT ALTER COLUMN requester_ip varchar(64);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запрос на регистрацию и лицензия ==&lt;br /&gt;
&lt;br /&gt;
=== Получение нового запроса и лицензии ===&lt;br /&gt;
&lt;br /&gt;
Для получения нового запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
=== Замена запроса в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%REGISTERREQUEST%&amp;lt;/code&amp;gt; на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%REGISTERREQUEST%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замена лицензии(при наличии) в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%LICENSE%&amp;lt;/code&amp;gt; на реальные данные лицензии, созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;{&amp;quot;request&amp;quot;:{&amp;quot;systemId&amp;quot;:&amp;quot;99000000-e00e-0ad0-00ab-f00f0000a0b0&amp;quot;,&amp;quot;dateTime&amp;quot;:1700000000000,&amp;quot;usersCount&amp;quot;:100,&amp;quot;licenseID&amp;quot;:&amp;quot;0000e000-0000-0000-b0ec-c0f0000000f0&amp;quot;,&amp;quot;type&amp;quot;:2,&amp;quot;features&amp;quot;:{&amp;quot;gost_crypto&amp;quot;:false,&amp;quot;pki&amp;quot;:{&amp;quot;openssl&amp;quot;:false},&amp;quot;binary_data&amp;quot;:{&amp;quot;raw&amp;quot;:true,&amp;quot;pdf&amp;quot;:true},&amp;quot;server_signer&amp;quot;:false,&amp;quot;rks&amp;quot;:false}},&amp;quot;signature&amp;quot;:&amp;quot;MEYCIQDy7OUT6iiligbiugYcpK9fjkU/GDRIUiJtB+UcHppVwIhAKzS+EcktxyRikvqEThPyo1jHlPuAfgxW+EEo5gioW7Y&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%LICENSE%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Обновление модулей PC =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для установки PC 6-й версии воспользуйтесь инструкцией по ссылке - https://repo.paycontrol.org/server/doc/latest/pc-install-guide/ru/#перед-установкой&lt;br /&gt;
&lt;br /&gt;
После обновления &#039;&#039;&#039;необходимо&#039;&#039;&#039; отключить автозапуск Wildfly и выполнить запрос к БД:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE PC_KEYINFO SET is_activated=1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректировка (смена) адресов компонентов серверов PC ==&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCP для подключения с PCS ===&lt;br /&gt;
&lt;br /&gt;
Для изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;:8082/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса для внешних подключений (PCE) с мобильных устройств ===&lt;br /&gt;
&lt;br /&gt;
Для изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-client-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Для работы старых ключей&#039;&#039;&#039;, обращающихся по эндпоинту &amp;lt;code&amp;gt;/PayControl-interaction-rest/&amp;lt;/code&amp;gt; нужно установить проксирование на эндпоинт &amp;lt;code&amp;gt;/pc-client-api/&amp;lt;/code&amp;gt;, любым удобным способом.&lt;br /&gt;
&lt;br /&gt;
Пример для nginx:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
        location /PayControl-interaction-rest/ {&lt;br /&gt;
                proxy_pass http://o-example.loc:8080/pc-client-api/;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Правки для корректной отправки пушей ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=1;&lt;br /&gt;
!!!Запрос выше для Android при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;Android&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=2;&lt;br /&gt;
!!!Запрос выше для iOS при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;iOS&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&lt;br /&gt;
!!! &#039;&#039;&#039;Обратите внимание&#039;&#039;&#039;, что для выполнения запросов со split_part на Oracle нужно сначала выполнить запрос ниже:&lt;br /&gt;
create or replace function split_part(pString varchar2, pDelimiter varchar2, pPartNumber integer) return varchar2 deterministic is&lt;br /&gt;
  vStart number; &lt;br /&gt;
  vEnd   number;&lt;br /&gt;
begin&lt;br /&gt;
  if pPartNumber &amp;lt;&amp;gt; 0 and pDelimiter is not null then&lt;br /&gt;
    vStart := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber));&lt;br /&gt;
    vEnd   := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber) + 1);&lt;br /&gt;
  end if;&lt;br /&gt;
  return case         &lt;br /&gt;
           when pDelimiter is null and abs(pPartNumber) = 1 then pString&lt;br /&gt;
           when pPartNumber &amp;gt; 0 then substr(pString, vStart, vEnd - vStart - length(pDelimiter))                       &lt;br /&gt;
           when pPartNumber &amp;lt; 0 then substr(pString, vEnd, vStart - vEnd - length(pDelimiter))          &lt;br /&gt;
           else null&lt;br /&gt;
         end;&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
* Вся документация - https://repo.paycontrol.org/&lt;br /&gt;
&lt;br /&gt;
* Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
&lt;br /&gt;
* Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
&lt;br /&gt;
== Доступ к сервисам ==&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/&lt;br /&gt;
&lt;br /&gt;
=== Health Check ===&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек health check:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/health_check&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите сервисы PC.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
Переключитесь на Java 11.&lt;br /&gt;
&lt;br /&gt;
Запустите wildfly и включите автозапуск.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=845</id>
		<title>Обновление PayControl с версии 3 на версию 6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=845"/>
		<updated>2024-11-15T14:51:46Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Запрос на регистрацию и лицензия */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Введение =&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Перед обновлением необходимо выполнить резервное копирование БД PCS и PCIS Internal.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC &#039;&#039;&#039;требуется&#039;&#039;&#039; остановить Wildfly и обновить Java до версии 17. Версия 11 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и PC может продолжить работать на версии 11, что приведёт к ошибкам. &lt;br /&gt;
&lt;br /&gt;
Для того чтобы компоненты работали под Java 17, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 6 изменены названия серверов:&lt;br /&gt;
&lt;br /&gt;
* PC Server (PCS) — без изменений;&lt;br /&gt;
* PC Interaction Internal — PC Pusher (PCP);&lt;br /&gt;
* PC Interaction External — PC External (PCE).&lt;br /&gt;
&lt;br /&gt;
= Изменения в БД =&lt;br /&gt;
&lt;br /&gt;
== Правки структуры таблиц БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== MS SQL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;transaction_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        transaction_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_SYSTEM]&#039;)&lt;br /&gt;
          AND name = &#039;callback_url&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_SYSTEM&lt;br /&gt;
    ADD&lt;br /&gt;
        callback_url character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_USER]&#039;)&lt;br /&gt;
          AND name = &#039;blocked&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_USER&lt;br /&gt;
    ADD&lt;br /&gt;
        blocked smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;external_approve_data_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        external_approve_data_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_PUBLICKEY]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_public_key&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_public_key varbinary(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;renew_challenge&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        renew_challenge character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DEVICE]&#039;)&lt;br /&gt;
          AND name = &#039;app_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DEVICE&lt;br /&gt;
    ADD&lt;br /&gt;
        app_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_enabled&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_enabled smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;ext_pulp&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        ext_pulp character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;extended_check&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        extended_check smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;render_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        render_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(1023);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_results&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_results character varying(512);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(512);&lt;br /&gt;
		&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_EVENT]&#039;)&lt;br /&gt;
          AND name = &#039;event_data&#039;&lt;br /&gt;
    )&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ADD&lt;br /&gt;
            event_data VARCHAR(MAX);&lt;br /&gt;
ELSE&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ALTER COLUMN event_data VARCHAR(MAX);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE PC_KEYINFO DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE PC_EVENT ALTER COLUMN requester_ip varchar(64);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запрос на регистрацию и лицензия ==&lt;br /&gt;
&lt;br /&gt;
=== Получение нового запроса и лицензии ===&lt;br /&gt;
&lt;br /&gt;
Для получения нового запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
=== Замена запроса в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%REGISTERREQUEST%&amp;lt;/code&amp;gt; на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%REGISTERREQUEST%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замена лицензии(при наличии) в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%LICENSE%&amp;lt;/code&amp;gt; на реальные данные лицензии, созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;{&amp;quot;request&amp;quot;:{&amp;quot;systemId&amp;quot;:&amp;quot;99000000-e00e-0ad0-00ab-f00f0000a0b0&amp;quot;,&amp;quot;dateTime&amp;quot;:1700000000000,&amp;quot;usersCount&amp;quot;:100,&amp;quot;licenseID&amp;quot;:&amp;quot;0000e000-0000-0000-b0ec-c0f0000000f0&amp;quot;,&amp;quot;type&amp;quot;:2,&amp;quot;features&amp;quot;:{&amp;quot;gost_crypto&amp;quot;:false,&amp;quot;pki&amp;quot;:{&amp;quot;openssl&amp;quot;:false},&amp;quot;binary_data&amp;quot;:{&amp;quot;raw&amp;quot;:true,&amp;quot;pdf&amp;quot;:true},&amp;quot;server_signer&amp;quot;:false,&amp;quot;rks&amp;quot;:false}},&amp;quot;signature&amp;quot;:&amp;quot;MEYCIQDy7OUT6iiligbiugYcpK9fjkU/GDRIUiJtB+UcHppVwIhAKzS+EcktxyRikvqEThPyo1jHlPuAfgxW+EEo5gioW7Y&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%LICENSE%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Обновление модулей PC =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для установки PC 6-й версии воспользуйтесь инструкцией по ссылке - https://repo.paycontrol.org/server/doc/latest/pc-install-guide/ru/#перед-установкой&lt;br /&gt;
&lt;br /&gt;
После обновления &#039;&#039;&#039;необходимо&#039;&#039;&#039; отключить автозапуск Wildfly и выполнить запрос к БД:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE PC_KEYINFO SET is_activated=1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректировка (смена) адресов компонентов серверов PC ==&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCP для подключения с PCS ===&lt;br /&gt;
&lt;br /&gt;
Для изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;:8082/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса для внешних подключений (PCE) с мобильных устройств ===&lt;br /&gt;
&lt;br /&gt;
Для изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-client-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Для работы старых ключей&#039;&#039;&#039;, обращающихся по эндпоинту &amp;lt;code&amp;gt;/PayControl-interaction-rest/&amp;lt;/code&amp;gt; нужно установить проксирование на эндпоинт &amp;lt;code&amp;gt;/pc-client-api/&amp;lt;/code&amp;gt;, любым удобным способом.&lt;br /&gt;
&lt;br /&gt;
Пример для nginx:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
        location /PayControl-interaction-rest/ {&lt;br /&gt;
                proxy_pass http://o-example.loc:8080/pc-client-api/;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Правки для корректной отправки пушей ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=1;&lt;br /&gt;
!!!Запрос выше для Android при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;Android&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=2;&lt;br /&gt;
!!!Запрос выше для iOS при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;iOS&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&lt;br /&gt;
!!! &#039;&#039;&#039;Обратите внимание&#039;&#039;&#039;, что для выполнения запросов со split_part на Oracle нужно сначала выполнить запрос ниже:&lt;br /&gt;
create or replace function split_part(pString varchar2, pDelimiter varchar2, pPartNumber integer) return varchar2 deterministic is&lt;br /&gt;
  vStart number; &lt;br /&gt;
  vEnd   number;&lt;br /&gt;
begin&lt;br /&gt;
  if pPartNumber &amp;lt;&amp;gt; 0 and pDelimiter is not null then&lt;br /&gt;
    vStart := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber));&lt;br /&gt;
    vEnd   := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber) + 1);&lt;br /&gt;
  end if;&lt;br /&gt;
  return case         &lt;br /&gt;
           when pDelimiter is null and abs(pPartNumber) = 1 then pString&lt;br /&gt;
           when pPartNumber &amp;gt; 0 then substr(pString, vStart, vEnd - vStart - length(pDelimiter))                       &lt;br /&gt;
           when pPartNumber &amp;lt; 0 then substr(pString, vEnd, vStart - vEnd - length(pDelimiter))          &lt;br /&gt;
           else null&lt;br /&gt;
         end;&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
* Вся документация - https://repo.paycontrol.org/&lt;br /&gt;
&lt;br /&gt;
* Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
&lt;br /&gt;
* Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
&lt;br /&gt;
== Доступ к сервисам ==&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/&lt;br /&gt;
&lt;br /&gt;
=== Health Check ===&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек health check:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/health_check&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите сервисы PC.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
Переключитесь на Java 11.&lt;br /&gt;
&lt;br /&gt;
Запустите wildfly и включите автозапуск.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=844</id>
		<title>Обновление PayControl с версии 3 на версию 6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=844"/>
		<updated>2024-11-15T14:49:57Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* MS SQL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Введение =&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Перед обновлением необходимо выполнить резервное копирование БД PCS и PCIS Internal.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC &#039;&#039;&#039;требуется&#039;&#039;&#039; остановить Wildfly и обновить Java до версии 17. Версия 11 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и PC может продолжить работать на версии 11, что приведёт к ошибкам. &lt;br /&gt;
&lt;br /&gt;
Для того чтобы компоненты работали под Java 17, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 6 изменены названия серверов:&lt;br /&gt;
&lt;br /&gt;
* PC Server (PCS) — без изменений;&lt;br /&gt;
* PC Interaction Internal — PC Pusher (PCP);&lt;br /&gt;
* PC Interaction External — PC External (PCE).&lt;br /&gt;
&lt;br /&gt;
= Изменения в БД =&lt;br /&gt;
&lt;br /&gt;
== Правки структуры таблиц БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== MS SQL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;transaction_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        transaction_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_SYSTEM]&#039;)&lt;br /&gt;
          AND name = &#039;callback_url&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_SYSTEM&lt;br /&gt;
    ADD&lt;br /&gt;
        callback_url character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_USER]&#039;)&lt;br /&gt;
          AND name = &#039;blocked&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_USER&lt;br /&gt;
    ADD&lt;br /&gt;
        blocked smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;external_approve_data_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        external_approve_data_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_PUBLICKEY]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_public_key&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_public_key varbinary(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;renew_challenge&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        renew_challenge character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DEVICE]&#039;)&lt;br /&gt;
          AND name = &#039;app_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DEVICE&lt;br /&gt;
    ADD&lt;br /&gt;
        app_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_enabled&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_enabled smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;ext_pulp&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        ext_pulp character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;extended_check&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        extended_check smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;render_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        render_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(1023);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_results&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_results character varying(512);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(512);&lt;br /&gt;
		&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_EVENT]&#039;)&lt;br /&gt;
          AND name = &#039;event_data&#039;&lt;br /&gt;
    )&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ADD&lt;br /&gt;
            event_data VARCHAR(MAX);&lt;br /&gt;
ELSE&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ALTER COLUMN event_data VARCHAR(MAX);&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE PC_KEYINFO DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO DROP COLUMN type;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE PC_EVENT ALTER COLUMN requester_ip varchar(64);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запрос на регистрацию и лицензия ==&lt;br /&gt;
&lt;br /&gt;
=== Получение нового запроса и лицензии ===&lt;br /&gt;
&lt;br /&gt;
Для получения нового запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
=== Замена запроса в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%REGISTERREQUEST%&amp;lt;/code&amp;gt; на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%REGISTERREQUEST%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замена лицензии(при наличии) в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%LICENSE%&amp;lt;/code&amp;gt; на реальные данные лицензии, созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;{&amp;quot;request&amp;quot;:{&amp;quot;systemId&amp;quot;:&amp;quot;99000000-e00e-0ad0-00ab-f00f0000a0b0&amp;quot;,&amp;quot;dateTime&amp;quot;:1700000000000,&amp;quot;usersCount&amp;quot;:100,&amp;quot;licenseID&amp;quot;:&amp;quot;0000e000-0000-0000-b0ec-c0f0000000f0&amp;quot;,&amp;quot;type&amp;quot;:2,&amp;quot;features&amp;quot;:{&amp;quot;gost_crypto&amp;quot;:false,&amp;quot;pki&amp;quot;:{&amp;quot;openssl&amp;quot;:false},&amp;quot;binary_data&amp;quot;:{&amp;quot;raw&amp;quot;:true,&amp;quot;pdf&amp;quot;:true},&amp;quot;server_signer&amp;quot;:false,&amp;quot;rks&amp;quot;:false}},&amp;quot;signature&amp;quot;:&amp;quot;MEYCIQDy7OUT6iiligbiugYcpK9fjkU/GDRIUiJtB+UcHppVwIhAKzS+EcktxyRikvqEThPyo1jHlPuAfgxW+EEo5gioW7Y&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%LICENSE%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Обновление модулей PC =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для установки PC 6-й версии воспользуйтесь инструкцией по ссылке - https://repo.paycontrol.org/server/doc/latest/pc-install-guide/ru/#перед-установкой&lt;br /&gt;
&lt;br /&gt;
После обновления &#039;&#039;&#039;необходимо&#039;&#039;&#039; отключить автозапуск Wildfly и выполнить запрос к БД:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE PC_KEYINFO SET is_activated=1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректировка (смена) адресов компонентов серверов PC ==&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCP для подключения с PCS ===&lt;br /&gt;
&lt;br /&gt;
Для изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;:8082/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса для внешних подключений (PCE) с мобильных устройств ===&lt;br /&gt;
&lt;br /&gt;
Для изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-client-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Для работы старых ключей&#039;&#039;&#039;, обращающихся по эндпоинту &amp;lt;code&amp;gt;/PayControl-interaction-rest/&amp;lt;/code&amp;gt; нужно установить проксирование на эндпоинт &amp;lt;code&amp;gt;/pc-client-api/&amp;lt;/code&amp;gt;, любым удобным способом.&lt;br /&gt;
&lt;br /&gt;
Пример для nginx:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
        location /PayControl-interaction-rest/ {&lt;br /&gt;
                proxy_pass http://o-example.loc:8080/pc-client-api/;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Правки для корректной отправки пушей ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=1;&lt;br /&gt;
!!!Запрос выше для Android при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;Android&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=2;&lt;br /&gt;
!!!Запрос выше для iOS при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;iOS&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&lt;br /&gt;
!!! &#039;&#039;&#039;Обратите внимание&#039;&#039;&#039;, что для выполнения запросов со split_part на Oracle нужно сначала выполнить запрос ниже:&lt;br /&gt;
create or replace function split_part(pString varchar2, pDelimiter varchar2, pPartNumber integer) return varchar2 deterministic is&lt;br /&gt;
  vStart number; &lt;br /&gt;
  vEnd   number;&lt;br /&gt;
begin&lt;br /&gt;
  if pPartNumber &amp;lt;&amp;gt; 0 and pDelimiter is not null then&lt;br /&gt;
    vStart := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber));&lt;br /&gt;
    vEnd   := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber) + 1);&lt;br /&gt;
  end if;&lt;br /&gt;
  return case         &lt;br /&gt;
           when pDelimiter is null and abs(pPartNumber) = 1 then pString&lt;br /&gt;
           when pPartNumber &amp;gt; 0 then substr(pString, vStart, vEnd - vStart - length(pDelimiter))                       &lt;br /&gt;
           when pPartNumber &amp;lt; 0 then substr(pString, vEnd, vStart - vEnd - length(pDelimiter))          &lt;br /&gt;
           else null&lt;br /&gt;
         end;&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
* Вся документация - https://repo.paycontrol.org/&lt;br /&gt;
&lt;br /&gt;
* Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
&lt;br /&gt;
* Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
&lt;br /&gt;
== Доступ к сервисам ==&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/&lt;br /&gt;
&lt;br /&gt;
=== Health Check ===&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек health check:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/health_check&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите сервисы PC.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
Переключитесь на Java 11.&lt;br /&gt;
&lt;br /&gt;
Запустите wildfly и включите автозапуск.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=843</id>
		<title>Обновление PayControl с версии 3 на версию 6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=843"/>
		<updated>2024-11-15T14:28:39Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Обновление модулей PC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Введение =&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Перед обновлением необходимо выполнить резервное копирование БД PCS и PCIS Internal.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC &#039;&#039;&#039;требуется&#039;&#039;&#039; остановить Wildfly и обновить Java до версии 17. Версия 11 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и PC может продолжить работать на версии 11, что приведёт к ошибкам. &lt;br /&gt;
&lt;br /&gt;
Для того чтобы компоненты работали под Java 17, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 6 изменены названия серверов:&lt;br /&gt;
&lt;br /&gt;
* PC Server (PCS) — без изменений;&lt;br /&gt;
* PC Interaction Internal — PC Pusher (PCP);&lt;br /&gt;
* PC Interaction External — PC External (PCE).&lt;br /&gt;
&lt;br /&gt;
= Изменения в БД =&lt;br /&gt;
&lt;br /&gt;
== Правки структуры таблиц БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== MS SQL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;transaction_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        transaction_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_SYSTEM]&#039;)&lt;br /&gt;
          AND name = &#039;callback_url&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_SYSTEM&lt;br /&gt;
    ADD&lt;br /&gt;
        callback_url character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_USER]&#039;)&lt;br /&gt;
          AND name = &#039;blocked&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_USER&lt;br /&gt;
    ADD&lt;br /&gt;
        blocked smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;external_approve_data_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        external_approve_data_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_PUBLICKEY]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_public_key&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_public_key varbinary(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;renew_challenge&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        renew_challenge character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DEVICE]&#039;)&lt;br /&gt;
          AND name = &#039;app_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DEVICE&lt;br /&gt;
    ADD&lt;br /&gt;
        app_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_enabled&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_enabled smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;ext_pulp&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        ext_pulp character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;extended_check&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        extended_check smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;render_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        render_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(1023);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_results&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_results character varying(512);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(512);&lt;br /&gt;
		&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_EVENT]&#039;)&lt;br /&gt;
          AND name = &#039;event_data&#039;&lt;br /&gt;
    )&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ADD&lt;br /&gt;
            event_data VARCHAR(MAX);&lt;br /&gt;
ELSE&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ALTER COLUMN event_data VARCHAR(MAX);&lt;br /&gt;
&lt;br /&gt;
alter table pc_event ALTER COLUMN requester_ip varchar(64);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запрос на регистрацию и лицензия ==&lt;br /&gt;
&lt;br /&gt;
=== Получение нового запроса и лицензии ===&lt;br /&gt;
&lt;br /&gt;
Для получения нового запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
=== Замена запроса в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%REGISTERREQUEST%&amp;lt;/code&amp;gt; на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%REGISTERREQUEST%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замена лицензии(при наличии) в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%LICENSE%&amp;lt;/code&amp;gt; на реальные данные лицензии, созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;{&amp;quot;request&amp;quot;:{&amp;quot;systemId&amp;quot;:&amp;quot;99000000-e00e-0ad0-00ab-f00f0000a0b0&amp;quot;,&amp;quot;dateTime&amp;quot;:1700000000000,&amp;quot;usersCount&amp;quot;:100,&amp;quot;licenseID&amp;quot;:&amp;quot;0000e000-0000-0000-b0ec-c0f0000000f0&amp;quot;,&amp;quot;type&amp;quot;:2,&amp;quot;features&amp;quot;:{&amp;quot;gost_crypto&amp;quot;:false,&amp;quot;pki&amp;quot;:{&amp;quot;openssl&amp;quot;:false},&amp;quot;binary_data&amp;quot;:{&amp;quot;raw&amp;quot;:true,&amp;quot;pdf&amp;quot;:true},&amp;quot;server_signer&amp;quot;:false,&amp;quot;rks&amp;quot;:false}},&amp;quot;signature&amp;quot;:&amp;quot;MEYCIQDy7OUT6iiligbiugYcpK9fjkU/GDRIUiJtB+UcHppVwIhAKzS+EcktxyRikvqEThPyo1jHlPuAfgxW+EEo5gioW7Y&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%LICENSE%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Обновление модулей PC =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для установки PC 6-й версии воспользуйтесь инструкцией по ссылке - https://repo.paycontrol.org/server/doc/latest/pc-install-guide/ru/#перед-установкой&lt;br /&gt;
&lt;br /&gt;
После обновления &#039;&#039;&#039;необходимо&#039;&#039;&#039; отключить автозапуск Wildfly и выполнить запрос к БД:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE PC_KEYINFO SET is_activated=1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Корректировка (смена) адресов компонентов серверов PC ==&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCP для подключения с PCS ===&lt;br /&gt;
&lt;br /&gt;
Для изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;:8082/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса для внешних подключений (PCE) с мобильных устройств ===&lt;br /&gt;
&lt;br /&gt;
Для изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-client-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Для работы старых ключей&#039;&#039;&#039;, обращающихся по эндпоинту &amp;lt;code&amp;gt;/PayControl-interaction-rest/&amp;lt;/code&amp;gt; нужно установить проксирование на эндпоинт &amp;lt;code&amp;gt;/pc-client-api/&amp;lt;/code&amp;gt;, любым удобным способом.&lt;br /&gt;
&lt;br /&gt;
Пример для nginx:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
        location /PayControl-interaction-rest/ {&lt;br /&gt;
                proxy_pass http://o-example.loc:8080/pc-client-api/;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Правки для корректной отправки пушей ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=1;&lt;br /&gt;
!!!Запрос выше для Android при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;Android&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=2;&lt;br /&gt;
!!!Запрос выше для iOS при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;iOS&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&lt;br /&gt;
!!! &#039;&#039;&#039;Обратите внимание&#039;&#039;&#039;, что для выполнения запросов со split_part на Oracle нужно сначала выполнить запрос ниже:&lt;br /&gt;
create or replace function split_part(pString varchar2, pDelimiter varchar2, pPartNumber integer) return varchar2 deterministic is&lt;br /&gt;
  vStart number; &lt;br /&gt;
  vEnd   number;&lt;br /&gt;
begin&lt;br /&gt;
  if pPartNumber &amp;lt;&amp;gt; 0 and pDelimiter is not null then&lt;br /&gt;
    vStart := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber));&lt;br /&gt;
    vEnd   := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber) + 1);&lt;br /&gt;
  end if;&lt;br /&gt;
  return case         &lt;br /&gt;
           when pDelimiter is null and abs(pPartNumber) = 1 then pString&lt;br /&gt;
           when pPartNumber &amp;gt; 0 then substr(pString, vStart, vEnd - vStart - length(pDelimiter))                       &lt;br /&gt;
           when pPartNumber &amp;lt; 0 then substr(pString, vEnd, vStart - vEnd - length(pDelimiter))          &lt;br /&gt;
           else null&lt;br /&gt;
         end;&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
* Вся документация - https://repo.paycontrol.org/&lt;br /&gt;
&lt;br /&gt;
* Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
&lt;br /&gt;
* Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
&lt;br /&gt;
== Доступ к сервисам ==&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/&lt;br /&gt;
&lt;br /&gt;
=== Health Check ===&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек health check:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/health_check&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите сервисы PC.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
Переключитесь на Java 11.&lt;br /&gt;
&lt;br /&gt;
Запустите wildfly и включите автозапуск.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=842</id>
		<title>Обновление PayControl с версии 3 на версию 6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=842"/>
		<updated>2024-11-15T14:27:00Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Корректировка (смена) адресов компонентов серверов PC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Введение =&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Перед обновлением необходимо выполнить резервное копирование БД PCS и PCIS Internal.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC &#039;&#039;&#039;требуется&#039;&#039;&#039; остановить Wildfly и обновить Java до версии 17. Версия 11 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и PC может продолжить работать на версии 11, что приведёт к ошибкам. &lt;br /&gt;
&lt;br /&gt;
Для того чтобы компоненты работали под Java 17, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 6 изменены названия серверов:&lt;br /&gt;
&lt;br /&gt;
* PC Server (PCS) — без изменений;&lt;br /&gt;
* PC Interaction Internal — PC Pusher (PCP);&lt;br /&gt;
* PC Interaction External — PC External (PCE).&lt;br /&gt;
&lt;br /&gt;
= Изменения в БД =&lt;br /&gt;
&lt;br /&gt;
== Правки структуры таблиц БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== MS SQL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;transaction_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        transaction_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_SYSTEM]&#039;)&lt;br /&gt;
          AND name = &#039;callback_url&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_SYSTEM&lt;br /&gt;
    ADD&lt;br /&gt;
        callback_url character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_USER]&#039;)&lt;br /&gt;
          AND name = &#039;blocked&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_USER&lt;br /&gt;
    ADD&lt;br /&gt;
        blocked smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;external_approve_data_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        external_approve_data_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_PUBLICKEY]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_public_key&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_public_key varbinary(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;renew_challenge&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        renew_challenge character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DEVICE]&#039;)&lt;br /&gt;
          AND name = &#039;app_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DEVICE&lt;br /&gt;
    ADD&lt;br /&gt;
        app_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_enabled&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_enabled smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;ext_pulp&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        ext_pulp character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;extended_check&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        extended_check smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;render_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        render_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(1023);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_results&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_results character varying(512);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(512);&lt;br /&gt;
		&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_EVENT]&#039;)&lt;br /&gt;
          AND name = &#039;event_data&#039;&lt;br /&gt;
    )&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ADD&lt;br /&gt;
            event_data VARCHAR(MAX);&lt;br /&gt;
ELSE&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ALTER COLUMN event_data VARCHAR(MAX);&lt;br /&gt;
&lt;br /&gt;
alter table pc_event ALTER COLUMN requester_ip varchar(64);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запрос на регистрацию и лицензия ==&lt;br /&gt;
&lt;br /&gt;
=== Получение нового запроса и лицензии ===&lt;br /&gt;
&lt;br /&gt;
Для получения нового запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
=== Замена запроса в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%REGISTERREQUEST%&amp;lt;/code&amp;gt; на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%REGISTERREQUEST%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замена лицензии(при наличии) в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%LICENSE%&amp;lt;/code&amp;gt; на реальные данные лицензии, созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;{&amp;quot;request&amp;quot;:{&amp;quot;systemId&amp;quot;:&amp;quot;99000000-e00e-0ad0-00ab-f00f0000a0b0&amp;quot;,&amp;quot;dateTime&amp;quot;:1700000000000,&amp;quot;usersCount&amp;quot;:100,&amp;quot;licenseID&amp;quot;:&amp;quot;0000e000-0000-0000-b0ec-c0f0000000f0&amp;quot;,&amp;quot;type&amp;quot;:2,&amp;quot;features&amp;quot;:{&amp;quot;gost_crypto&amp;quot;:false,&amp;quot;pki&amp;quot;:{&amp;quot;openssl&amp;quot;:false},&amp;quot;binary_data&amp;quot;:{&amp;quot;raw&amp;quot;:true,&amp;quot;pdf&amp;quot;:true},&amp;quot;server_signer&amp;quot;:false,&amp;quot;rks&amp;quot;:false}},&amp;quot;signature&amp;quot;:&amp;quot;MEYCIQDy7OUT6iiligbiugYcpK9fjkU/GDRIUiJtB+UcHppVwIhAKzS+EcktxyRikvqEThPyo1jHlPuAfgxW+EEo5gioW7Y&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%LICENSE%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Обновление модулей PC =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для установки PC 6-й версии воспользуйтесь инструкцией по ссылке - https://repo.paycontrol.org/server/doc/latest/pc-install-guide/ru/#перед-установкой&lt;br /&gt;
&lt;br /&gt;
После обновления &#039;&#039;&#039;необходимо&#039;&#039;&#039; отключить автозапуск Wildfly.&lt;br /&gt;
&lt;br /&gt;
== Корректировка (смена) адресов компонентов серверов PC ==&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCP для подключения с PCS ===&lt;br /&gt;
&lt;br /&gt;
Для изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;:8082/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса для внешних подключений (PCE) с мобильных устройств ===&lt;br /&gt;
&lt;br /&gt;
Для изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-client-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Для работы старых ключей&#039;&#039;&#039;, обращающихся по эндпоинту &amp;lt;code&amp;gt;/PayControl-interaction-rest/&amp;lt;/code&amp;gt; нужно установить проксирование на эндпоинт &amp;lt;code&amp;gt;/pc-client-api/&amp;lt;/code&amp;gt;, любым удобным способом.&lt;br /&gt;
&lt;br /&gt;
Пример для nginx:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
        location /PayControl-interaction-rest/ {&lt;br /&gt;
                proxy_pass http://o-example.loc:8080/pc-client-api/;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Правки для корректной отправки пушей ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=1;&lt;br /&gt;
!!!Запрос выше для Android при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;Android&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=2;&lt;br /&gt;
!!!Запрос выше для iOS при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;iOS&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&lt;br /&gt;
!!! &#039;&#039;&#039;Обратите внимание&#039;&#039;&#039;, что для выполнения запросов со split_part на Oracle нужно сначала выполнить запрос ниже:&lt;br /&gt;
create or replace function split_part(pString varchar2, pDelimiter varchar2, pPartNumber integer) return varchar2 deterministic is&lt;br /&gt;
  vStart number; &lt;br /&gt;
  vEnd   number;&lt;br /&gt;
begin&lt;br /&gt;
  if pPartNumber &amp;lt;&amp;gt; 0 and pDelimiter is not null then&lt;br /&gt;
    vStart := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber));&lt;br /&gt;
    vEnd   := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber) + 1);&lt;br /&gt;
  end if;&lt;br /&gt;
  return case         &lt;br /&gt;
           when pDelimiter is null and abs(pPartNumber) = 1 then pString&lt;br /&gt;
           when pPartNumber &amp;gt; 0 then substr(pString, vStart, vEnd - vStart - length(pDelimiter))                       &lt;br /&gt;
           when pPartNumber &amp;lt; 0 then substr(pString, vEnd, vStart - vEnd - length(pDelimiter))          &lt;br /&gt;
           else null&lt;br /&gt;
         end;&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
* Вся документация - https://repo.paycontrol.org/&lt;br /&gt;
&lt;br /&gt;
* Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
&lt;br /&gt;
* Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
&lt;br /&gt;
== Доступ к сервисам ==&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/&lt;br /&gt;
&lt;br /&gt;
=== Health Check ===&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек health check:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/health_check&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите сервисы PC.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
Переключитесь на Java 11.&lt;br /&gt;
&lt;br /&gt;
Запустите wildfly и включите автозапуск.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=841</id>
		<title>Обновление PayControl с версии 3 на версию 6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=841"/>
		<updated>2024-11-15T14:26:14Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Корректировка (смена) адресов компонентов серверов PC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Введение =&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Перед обновлением необходимо выполнить резервное копирование БД PCS и PCIS Internal.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC &#039;&#039;&#039;требуется&#039;&#039;&#039; остановить Wildfly и обновить Java до версии 17. Версия 11 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и PC может продолжить работать на версии 11, что приведёт к ошибкам. &lt;br /&gt;
&lt;br /&gt;
Для того чтобы компоненты работали под Java 17, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 6 изменены названия серверов:&lt;br /&gt;
&lt;br /&gt;
* PC Server (PCS) — без изменений;&lt;br /&gt;
* PC Interaction Internal — PC Pusher (PCP);&lt;br /&gt;
* PC Interaction External — PC External (PCE).&lt;br /&gt;
&lt;br /&gt;
= Изменения в БД =&lt;br /&gt;
&lt;br /&gt;
== Правки структуры таблиц БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== MS SQL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;transaction_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        transaction_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_SYSTEM]&#039;)&lt;br /&gt;
          AND name = &#039;callback_url&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_SYSTEM&lt;br /&gt;
    ADD&lt;br /&gt;
        callback_url character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_USER]&#039;)&lt;br /&gt;
          AND name = &#039;blocked&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_USER&lt;br /&gt;
    ADD&lt;br /&gt;
        blocked smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;external_approve_data_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        external_approve_data_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_PUBLICKEY]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_public_key&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_public_key varbinary(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;renew_challenge&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        renew_challenge character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DEVICE]&#039;)&lt;br /&gt;
          AND name = &#039;app_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DEVICE&lt;br /&gt;
    ADD&lt;br /&gt;
        app_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_enabled&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_enabled smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;ext_pulp&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        ext_pulp character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;extended_check&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        extended_check smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;render_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        render_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(1023);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_results&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_results character varying(512);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(512);&lt;br /&gt;
		&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_EVENT]&#039;)&lt;br /&gt;
          AND name = &#039;event_data&#039;&lt;br /&gt;
    )&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ADD&lt;br /&gt;
            event_data VARCHAR(MAX);&lt;br /&gt;
ELSE&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ALTER COLUMN event_data VARCHAR(MAX);&lt;br /&gt;
&lt;br /&gt;
alter table pc_event ALTER COLUMN requester_ip varchar(64);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запрос на регистрацию и лицензия ==&lt;br /&gt;
&lt;br /&gt;
=== Получение нового запроса и лицензии ===&lt;br /&gt;
&lt;br /&gt;
Для получения нового запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
=== Замена запроса в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%REGISTERREQUEST%&amp;lt;/code&amp;gt; на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%REGISTERREQUEST%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замена лицензии(при наличии) в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%LICENSE%&amp;lt;/code&amp;gt; на реальные данные лицензии, созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;{&amp;quot;request&amp;quot;:{&amp;quot;systemId&amp;quot;:&amp;quot;99000000-e00e-0ad0-00ab-f00f0000a0b0&amp;quot;,&amp;quot;dateTime&amp;quot;:1700000000000,&amp;quot;usersCount&amp;quot;:100,&amp;quot;licenseID&amp;quot;:&amp;quot;0000e000-0000-0000-b0ec-c0f0000000f0&amp;quot;,&amp;quot;type&amp;quot;:2,&amp;quot;features&amp;quot;:{&amp;quot;gost_crypto&amp;quot;:false,&amp;quot;pki&amp;quot;:{&amp;quot;openssl&amp;quot;:false},&amp;quot;binary_data&amp;quot;:{&amp;quot;raw&amp;quot;:true,&amp;quot;pdf&amp;quot;:true},&amp;quot;server_signer&amp;quot;:false,&amp;quot;rks&amp;quot;:false}},&amp;quot;signature&amp;quot;:&amp;quot;MEYCIQDy7OUT6iiligbiugYcpK9fjkU/GDRIUiJtB+UcHppVwIhAKzS+EcktxyRikvqEThPyo1jHlPuAfgxW+EEo5gioW7Y&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%LICENSE%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Обновление модулей PC =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для установки PC 6-й версии воспользуйтесь инструкцией по ссылке - https://repo.paycontrol.org/server/doc/latest/pc-install-guide/ru/#перед-установкой&lt;br /&gt;
&lt;br /&gt;
После обновления &#039;&#039;&#039;необходимо&#039;&#039;&#039; отключить автозапуск Wildfly.&lt;br /&gt;
&lt;br /&gt;
== Корректировка (смена) адресов компонентов серверов PC ==&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCP для подключения с PCS ===&lt;br /&gt;
&lt;br /&gt;
Для изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса для внешних подключений (PCE) с мобильных устройств ===&lt;br /&gt;
&lt;br /&gt;
Для изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-client-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Для работы старых ключей&#039;&#039;&#039;, обращающихся по эндпоинту &amp;lt;code&amp;gt;/PayControl-interaction-rest/&amp;lt;/code&amp;gt; нужно установить проксирование на эндпоинт &amp;lt;code&amp;gt;/pc-client-api/&amp;lt;/code&amp;gt;, любым удобным способом.&lt;br /&gt;
&lt;br /&gt;
Пример для nginx:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
        location /PayControl-interaction-rest/ {&lt;br /&gt;
                proxy_pass http://o-example.loc:8080/pc-client-api/;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Правки для корректной отправки пушей ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=1;&lt;br /&gt;
!!!Запрос выше для Android при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;Android&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=2;&lt;br /&gt;
!!!Запрос выше для iOS при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;iOS&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&lt;br /&gt;
!!! &#039;&#039;&#039;Обратите внимание&#039;&#039;&#039;, что для выполнения запросов со split_part на Oracle нужно сначала выполнить запрос ниже:&lt;br /&gt;
create or replace function split_part(pString varchar2, pDelimiter varchar2, pPartNumber integer) return varchar2 deterministic is&lt;br /&gt;
  vStart number; &lt;br /&gt;
  vEnd   number;&lt;br /&gt;
begin&lt;br /&gt;
  if pPartNumber &amp;lt;&amp;gt; 0 and pDelimiter is not null then&lt;br /&gt;
    vStart := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber));&lt;br /&gt;
    vEnd   := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber) + 1);&lt;br /&gt;
  end if;&lt;br /&gt;
  return case         &lt;br /&gt;
           when pDelimiter is null and abs(pPartNumber) = 1 then pString&lt;br /&gt;
           when pPartNumber &amp;gt; 0 then substr(pString, vStart, vEnd - vStart - length(pDelimiter))                       &lt;br /&gt;
           when pPartNumber &amp;lt; 0 then substr(pString, vEnd, vStart - vEnd - length(pDelimiter))          &lt;br /&gt;
           else null&lt;br /&gt;
         end;&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
* Вся документация - https://repo.paycontrol.org/&lt;br /&gt;
&lt;br /&gt;
* Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
&lt;br /&gt;
* Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
&lt;br /&gt;
== Доступ к сервисам ==&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/&lt;br /&gt;
&lt;br /&gt;
=== Health Check ===&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек health check:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/health_check&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите сервисы PC.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
Переключитесь на Java 11.&lt;br /&gt;
&lt;br /&gt;
Запустите wildfly и включите автозапуск.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=840</id>
		<title>Обновление PayControl с версии 3 на версию 6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=840"/>
		<updated>2024-11-15T14:25:19Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Откат обновления в случае сбоя */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Введение =&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Перед обновлением необходимо выполнить резервное копирование БД PCS и PCIS Internal.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC &#039;&#039;&#039;требуется&#039;&#039;&#039; остановить Wildfly и обновить Java до версии 17. Версия 11 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и PC может продолжить работать на версии 11, что приведёт к ошибкам. &lt;br /&gt;
&lt;br /&gt;
Для того чтобы компоненты работали под Java 17, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 6 изменены названия серверов:&lt;br /&gt;
&lt;br /&gt;
* PC Server (PCS) — без изменений;&lt;br /&gt;
* PC Interaction Internal — PC Pusher (PCP);&lt;br /&gt;
* PC Interaction External — PC External (PCE).&lt;br /&gt;
&lt;br /&gt;
= Изменения в БД =&lt;br /&gt;
&lt;br /&gt;
== Правки структуры таблиц БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== MS SQL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;transaction_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        transaction_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_SYSTEM]&#039;)&lt;br /&gt;
          AND name = &#039;callback_url&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_SYSTEM&lt;br /&gt;
    ADD&lt;br /&gt;
        callback_url character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_USER]&#039;)&lt;br /&gt;
          AND name = &#039;blocked&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_USER&lt;br /&gt;
    ADD&lt;br /&gt;
        blocked smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;external_approve_data_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        external_approve_data_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_PUBLICKEY]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_public_key&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_public_key varbinary(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;renew_challenge&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        renew_challenge character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DEVICE]&#039;)&lt;br /&gt;
          AND name = &#039;app_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DEVICE&lt;br /&gt;
    ADD&lt;br /&gt;
        app_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_enabled&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_enabled smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;ext_pulp&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        ext_pulp character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;extended_check&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        extended_check smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;render_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        render_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(1023);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_results&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_results character varying(512);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(512);&lt;br /&gt;
		&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_EVENT]&#039;)&lt;br /&gt;
          AND name = &#039;event_data&#039;&lt;br /&gt;
    )&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ADD&lt;br /&gt;
            event_data VARCHAR(MAX);&lt;br /&gt;
ELSE&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ALTER COLUMN event_data VARCHAR(MAX);&lt;br /&gt;
&lt;br /&gt;
alter table pc_event ALTER COLUMN requester_ip varchar(64);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запрос на регистрацию и лицензия ==&lt;br /&gt;
&lt;br /&gt;
=== Получение нового запроса и лицензии ===&lt;br /&gt;
&lt;br /&gt;
Для получения нового запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
=== Замена запроса в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%REGISTERREQUEST%&amp;lt;/code&amp;gt; на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%REGISTERREQUEST%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замена лицензии(при наличии) в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%LICENSE%&amp;lt;/code&amp;gt; на реальные данные лицензии, созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;{&amp;quot;request&amp;quot;:{&amp;quot;systemId&amp;quot;:&amp;quot;99000000-e00e-0ad0-00ab-f00f0000a0b0&amp;quot;,&amp;quot;dateTime&amp;quot;:1700000000000,&amp;quot;usersCount&amp;quot;:100,&amp;quot;licenseID&amp;quot;:&amp;quot;0000e000-0000-0000-b0ec-c0f0000000f0&amp;quot;,&amp;quot;type&amp;quot;:2,&amp;quot;features&amp;quot;:{&amp;quot;gost_crypto&amp;quot;:false,&amp;quot;pki&amp;quot;:{&amp;quot;openssl&amp;quot;:false},&amp;quot;binary_data&amp;quot;:{&amp;quot;raw&amp;quot;:true,&amp;quot;pdf&amp;quot;:true},&amp;quot;server_signer&amp;quot;:false,&amp;quot;rks&amp;quot;:false}},&amp;quot;signature&amp;quot;:&amp;quot;MEYCIQDy7OUT6iiligbiugYcpK9fjkU/GDRIUiJtB+UcHppVwIhAKzS+EcktxyRikvqEThPyo1jHlPuAfgxW+EEo5gioW7Y&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%LICENSE%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Обновление модулей PC =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для установки PC 6-й версии воспользуйтесь инструкцией по ссылке - https://repo.paycontrol.org/server/doc/latest/pc-install-guide/ru/#перед-установкой&lt;br /&gt;
&lt;br /&gt;
После обновления &#039;&#039;&#039;необходимо&#039;&#039;&#039; отключить автозапуск Wildfly.&lt;br /&gt;
&lt;br /&gt;
== Корректировка (смена) адресов компонентов серверов PC ==&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCS для подключения с PCE ===&lt;br /&gt;
&lt;br /&gt;
На сервере PCE необходимо заменить часть строки с адресом сервера PCS (host и port заменить на реальные значения). Для этого:&lt;br /&gt;
* на Linux в файле &#039;&#039;&amp;lt;WF_PATH&amp;gt;/bin/standalone.conf&#039;&#039; нужно заменить &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpcservice.endpoint=http://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/ws/PayControlServiceV3?wsdl -Duser.language=ru -Dpaycontrol.locale=ru&amp;quot;&amp;lt;/syntaxhighlight&amp;gt; на строку &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpc_url=http://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/pc-api/ -Dpc_locale=ru&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* на Windows в файле &#039;&#039;&amp;lt;WF_PATH&amp;gt;/bin/standalone.conf.bat&#039;&#039; нужно заменить &amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpcservice.endpoint=http://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/ws/PayControlServiceV3?wsdl -Duser.language=ru -Dpaycontrol.locale=ru&amp;quot;&amp;lt;/syntaxhighlight&amp;gt; выше метки :JAVA_OPTS_SET на строку &amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpc_url=http://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/pc-api/ -Dpc_locale=ru&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCP для подключения с PCS ===&lt;br /&gt;
&lt;br /&gt;
Для изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса для внешних подключений (PCE) с мобильных устройств ===&lt;br /&gt;
&lt;br /&gt;
Для изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-client-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Для работы старых ключей&#039;&#039;&#039;, обращающихся по эндпоинту &amp;lt;code&amp;gt;/PayControl-interaction-rest/&amp;lt;/code&amp;gt; нужно установить проксирование на эндпоинт &amp;lt;code&amp;gt;/pc-client-api/&amp;lt;/code&amp;gt;, любым удобным способом.&lt;br /&gt;
&lt;br /&gt;
Пример для nginx:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
        location /PayControl-interaction-rest/ {&lt;br /&gt;
                proxy_pass http://o-example.loc:8080/pc-client-api/;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Правки для корректной отправки пушей ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=1;&lt;br /&gt;
!!!Запрос выше для Android при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;Android&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=2;&lt;br /&gt;
!!!Запрос выше для iOS при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;iOS&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&lt;br /&gt;
!!! &#039;&#039;&#039;Обратите внимание&#039;&#039;&#039;, что для выполнения запросов со split_part на Oracle нужно сначала выполнить запрос ниже:&lt;br /&gt;
create or replace function split_part(pString varchar2, pDelimiter varchar2, pPartNumber integer) return varchar2 deterministic is&lt;br /&gt;
  vStart number; &lt;br /&gt;
  vEnd   number;&lt;br /&gt;
begin&lt;br /&gt;
  if pPartNumber &amp;lt;&amp;gt; 0 and pDelimiter is not null then&lt;br /&gt;
    vStart := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber));&lt;br /&gt;
    vEnd   := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber) + 1);&lt;br /&gt;
  end if;&lt;br /&gt;
  return case         &lt;br /&gt;
           when pDelimiter is null and abs(pPartNumber) = 1 then pString&lt;br /&gt;
           when pPartNumber &amp;gt; 0 then substr(pString, vStart, vEnd - vStart - length(pDelimiter))                       &lt;br /&gt;
           when pPartNumber &amp;lt; 0 then substr(pString, vEnd, vStart - vEnd - length(pDelimiter))          &lt;br /&gt;
           else null&lt;br /&gt;
         end;&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
* Вся документация - https://repo.paycontrol.org/&lt;br /&gt;
&lt;br /&gt;
* Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
&lt;br /&gt;
* Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
&lt;br /&gt;
== Доступ к сервисам ==&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/&lt;br /&gt;
&lt;br /&gt;
=== Health Check ===&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек health check:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/health_check&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите сервисы PC.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
Переключитесь на Java 11.&lt;br /&gt;
&lt;br /&gt;
Запустите wildfly и включите автозапуск.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=839</id>
		<title>Обновление PayControl с версии 3 на версию 6</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_PayControl_%D1%81_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8_3_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=839"/>
		<updated>2024-11-15T14:23:14Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Документация по работе с PC 6-й версии */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Введение =&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Перед обновлением необходимо выполнить резервное копирование БД PCS и PCIS Internal.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC &#039;&#039;&#039;требуется&#039;&#039;&#039; остановить Wildfly и обновить Java до версии 17. Версия 11 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и PC может продолжить работать на версии 11, что приведёт к ошибкам. &lt;br /&gt;
&lt;br /&gt;
Для того чтобы компоненты работали под Java 17, необходимо либо удалить неактуальную версию Java, либо выбрать необходимую версию с помощью:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo update-alternatives --config java&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 6 изменены названия серверов:&lt;br /&gt;
&lt;br /&gt;
* PC Server (PCS) — без изменений;&lt;br /&gt;
* PC Interaction Internal — PC Pusher (PCP);&lt;br /&gt;
* PC Interaction External — PC External (PCE).&lt;br /&gt;
&lt;br /&gt;
= Изменения в БД =&lt;br /&gt;
&lt;br /&gt;
== Правки структуры таблиц БД PCS ==&lt;br /&gt;
&lt;br /&gt;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== MS SQL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;transaction_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        transaction_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_SYSTEM]&#039;)&lt;br /&gt;
          AND name = &#039;callback_url&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_SYSTEM&lt;br /&gt;
    ADD&lt;br /&gt;
        callback_url character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_USER]&#039;)&lt;br /&gt;
          AND name = &#039;blocked&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_USER&lt;br /&gt;
    ADD&lt;br /&gt;
        blocked smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_KEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;external_approve_data_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_KEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        external_approve_data_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_PUBLICKEY]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_public_key&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_public_key varbinary(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DELAYEDKEYINFO]&#039;)&lt;br /&gt;
          AND name = &#039;renew_challenge&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DELAYEDKEYINFO&lt;br /&gt;
    ADD&lt;br /&gt;
        renew_challenge character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_DEVICE]&#039;)&lt;br /&gt;
          AND name = &#039;app_id&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_DEVICE&lt;br /&gt;
    ADD&lt;br /&gt;
        app_id character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;autosign_enabled&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        autosign_enabled smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;ext_pulp&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        ext_pulp character varying(255);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;extended_check&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        extended_check smallint;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;render_type&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        render_type integer;&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_TRANSACTION]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_TRANSACTION&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(1023);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_results&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_results character varying(512);&lt;br /&gt;
&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_CONFIRM_ATTEMPT]&#039;)&lt;br /&gt;
          AND name = &#039;scoring_settings&#039;&lt;br /&gt;
    )&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT&lt;br /&gt;
    ADD&lt;br /&gt;
        scoring_settings character varying(512);&lt;br /&gt;
		&lt;br /&gt;
IF NOT EXISTS(&lt;br /&gt;
        SELECT *&lt;br /&gt;
        FROM sys.columns&lt;br /&gt;
        WHERE object_id = OBJECT_ID(N&#039;[dbo].[PC_EVENT]&#039;)&lt;br /&gt;
          AND name = &#039;event_data&#039;&lt;br /&gt;
    )&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ADD&lt;br /&gt;
            event_data VARCHAR(MAX);&lt;br /&gt;
ELSE&lt;br /&gt;
    ALTER TABLE PC_EVENT&lt;br /&gt;
        ALTER COLUMN event_data VARCHAR(MAX);&lt;br /&gt;
&lt;br /&gt;
alter table pc_event ALTER COLUMN requester_ip varchar(64);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Запрос на регистрацию и лицензия ==&lt;br /&gt;
&lt;br /&gt;
=== Получение нового запроса и лицензии ===&lt;br /&gt;
&lt;br /&gt;
Для получения нового запроса на регистрацию и лицензии обратитесь в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
=== Замена запроса в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%REGISTERREQUEST%&amp;lt;/code&amp;gt; на реальные данные запроса, созданного для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjoiIiwiYmlsbGluZ1R5cGUiOjIsImludGVyYWN0aW9uRXh0ZXJuYWxVUkwiOiJodHRwczovL3BheWNvbnRyb2wuZXhhbXBsZS5jb20vcGMtY2xpZW50LWFwaS8iLCJpbnRlcmFjd----m1VRERpZndVU3VOS3BoYmV4emsifQ==&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%REGISTERREQUEST%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Замена лицензии(при наличии) в БД ===&lt;br /&gt;
&lt;br /&gt;
В приведённом ниже запросе необходимо:&lt;br /&gt;
&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%SYSTEMID%&amp;lt;/code&amp;gt; на реальное значение systemid зарегистрированное для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
* заменить &amp;lt;code&amp;gt;%LICENSE%&amp;lt;/code&amp;gt; на реальные данные лицензии, созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных запроса &amp;lt;code&amp;gt;{&amp;quot;request&amp;quot;:{&amp;quot;systemId&amp;quot;:&amp;quot;99000000-e00e-0ad0-00ab-f00f0000a0b0&amp;quot;,&amp;quot;dateTime&amp;quot;:1700000000000,&amp;quot;usersCount&amp;quot;:100,&amp;quot;licenseID&amp;quot;:&amp;quot;0000e000-0000-0000-b0ec-c0f0000000f0&amp;quot;,&amp;quot;type&amp;quot;:2,&amp;quot;features&amp;quot;:{&amp;quot;gost_crypto&amp;quot;:false,&amp;quot;pki&amp;quot;:{&amp;quot;openssl&amp;quot;:false},&amp;quot;binary_data&amp;quot;:{&amp;quot;raw&amp;quot;:true,&amp;quot;pdf&amp;quot;:true},&amp;quot;server_signer&amp;quot;:false,&amp;quot;rks&amp;quot;:false}},&amp;quot;signature&amp;quot;:&amp;quot;MEYCIQDy7OUT6iiligbiugYcpK9fjkU/GDRIUiJtB+UcHppVwIhAKzS+EcktxyRikvqEThPyo1jHlPuAfgxW+EEo5gioW7Y&amp;quot;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_system_params set register_request=&#039;%LICENSE%&#039; where systemid=&#039;%SYSTEMID%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Обновление модулей PC =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для установки PC 6-й версии воспользуйтесь инструкцией по ссылке - https://repo.paycontrol.org/server/doc/latest/pc-install-guide/ru/#перед-установкой&lt;br /&gt;
&lt;br /&gt;
После обновления &#039;&#039;&#039;необходимо&#039;&#039;&#039; отключить автозапуск Wildfly.&lt;br /&gt;
&lt;br /&gt;
== Корректировка (смена) адресов компонентов серверов PC ==&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCS для подключения с PCE ===&lt;br /&gt;
&lt;br /&gt;
На сервере PCE необходимо заменить часть строки с адресом сервера PCS (host и port заменить на реальные значения). Для этого:&lt;br /&gt;
* на Linux в файле &#039;&#039;&amp;lt;WF_PATH&amp;gt;/bin/standalone.conf&#039;&#039; нужно заменить &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpcservice.endpoint=http://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/ws/PayControlServiceV3?wsdl -Duser.language=ru -Dpaycontrol.locale=ru&amp;quot;&amp;lt;/syntaxhighlight&amp;gt; на строку &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;JAVA_OPTS=&amp;quot;$JAVA_OPTS -Dpc_url=http://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/pc-api/ -Dpc_locale=ru&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* на Windows в файле &#039;&#039;&amp;lt;WF_PATH&amp;gt;/bin/standalone.conf.bat&#039;&#039; нужно заменить &amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpcservice.endpoint=http://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/ws/PayControlServiceV3?wsdl -Duser.language=ru -Dpaycontrol.locale=ru&amp;quot;&amp;lt;/syntaxhighlight&amp;gt; выше метки :JAVA_OPTS_SET на строку &amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;set &amp;quot;JAVA_OPTS=%JAVA_OPTS% -Dpc_url=http://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/pc-api/ -Dpc_locale=ru&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса PCP для подключения с PCS ===&lt;br /&gt;
&lt;br /&gt;
Для изменения адреса сервера PCP, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_internal_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-pusher-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Изменение адреса для внешних подключений (PCE) с мобильных устройств ===&lt;br /&gt;
&lt;br /&gt;
Для изменения внешнего адреса сервера PC, по которому связываются мобильное приложение с сервером PC, необходимо, предварительно указав корректные данные (протокол (HTTP/HTTPS), имя или IP сервера, порт, идентификатор системы), выполнить запрос к БД PCS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_system set pc_is_external_url = &#039;http[s]://&amp;lt;IP или DNS-имя&amp;gt;[:PORT]/pc-client-api/&#039; where systemid=&#039;&amp;lt;SYSTEMID&amp;gt;&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Для работы старых ключей&#039;&#039;&#039;, обращающихся по эндпоинту &amp;lt;code&amp;gt;/PayControl-interaction-rest/&amp;lt;/code&amp;gt; нужно установить проксирование на эндпоинт &amp;lt;code&amp;gt;/pc-client-api/&amp;lt;/code&amp;gt;, любым удобным способом.&lt;br /&gt;
&lt;br /&gt;
Пример для nginx:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
        location /PayControl-interaction-rest/ {&lt;br /&gt;
                proxy_pass http://o-example.loc:8080/pc-client-api/;&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Правки для корректной отправки пушей ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=1;&lt;br /&gt;
!!!Запрос выше для Android при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;Android&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id =&#039;org.example.app&#039; where device_push_id not like &#039;%####%&#039; and app_id is null and type=2;&lt;br /&gt;
!!!Запрос выше для iOS при обновлении с 3.6-3.7. Вместо org.example.app нужно вписать app_id вашего приложения из БД PCIS Internal:&lt;br /&gt;
select appid from pc_split_pusher_credentials where os=&#039;iOS&#039;;&lt;br /&gt;
&lt;br /&gt;
update pc_device set app_id = split_part(device_push_id,&#039;####&#039;,2) where app_id is NULL;&lt;br /&gt;
update pc_device set device_push_id = split_part(device_push_id,&#039;####&#039;,1) where app_id is not NULL;&lt;br /&gt;
&lt;br /&gt;
!!! &#039;&#039;&#039;Обратите внимание&#039;&#039;&#039;, что для выполнения запросов со split_part на Oracle нужно сначала выполнить запрос ниже:&lt;br /&gt;
create or replace function split_part(pString varchar2, pDelimiter varchar2, pPartNumber integer) return varchar2 deterministic is&lt;br /&gt;
  vStart number; &lt;br /&gt;
  vEnd   number;&lt;br /&gt;
begin&lt;br /&gt;
  if pPartNumber &amp;lt;&amp;gt; 0 and pDelimiter is not null then&lt;br /&gt;
    vStart := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber));&lt;br /&gt;
    vEnd   := instr(pDelimiter||pString||pDelimiter, pDelimiter, sign(pPartNumber), abs(pPartNumber) + 1);&lt;br /&gt;
  end if;&lt;br /&gt;
  return case         &lt;br /&gt;
           when pDelimiter is null and abs(pPartNumber) = 1 then pString&lt;br /&gt;
           when pPartNumber &amp;gt; 0 then substr(pString, vStart, vEnd - vStart - length(pDelimiter))                       &lt;br /&gt;
           when pPartNumber &amp;lt; 0 then substr(pString, vEnd, vStart - vEnd - length(pDelimiter))          &lt;br /&gt;
           else null&lt;br /&gt;
         end;&lt;br /&gt;
end;&lt;br /&gt;
/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
* Вся документация - https://repo.paycontrol.org/&lt;br /&gt;
&lt;br /&gt;
* Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
&lt;br /&gt;
* Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
&lt;br /&gt;
== Доступ к сервисам ==&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/&lt;br /&gt;
&lt;br /&gt;
=== Health Check ===&lt;br /&gt;
&lt;br /&gt;
Адреса конечных точек health check:&lt;br /&gt;
&lt;br /&gt;
* PC Server - http://&amp;lt;host&amp;gt;:8080/pc-api/health_check&lt;br /&gt;
* PC Pusher - http://&amp;lt;host&amp;gt;:8082/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8081/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите сервисы PC.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
Переключитесь на Java 11.&lt;br /&gt;
&lt;br /&gt;
Запустите wildfly.&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
</feed>