<?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-06-03T17:14:13Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<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>
	<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=838</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=838"/>
		<updated>2024-11-15T14:22:54Z</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;
После выполнения вышеизложенных пунктов нужно [[Руководство_администратора_PayControl_v5#Запуск и остановка служб сервера PayControl|запустить wildfly]].&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=837</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=837"/>
		<updated>2024-11-15T14:22:42Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Health Check */&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;
После выполнения вышеизложенных пунктов нужно [[Руководство_администратора_PayControl_v5#Запуск и остановка служб сервера PayControl|запустить wildfly]].&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=836</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=836"/>
		<updated>2024-11-15T14:22:28Z</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;
После выполнения вышеизложенных пунктов нужно [[Руководство_администратора_PayControl_v5#Запуск и остановка служб сервера PayControl|запустить wildfly]].&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;:8080/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8080/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=835</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=835"/>
		<updated>2024-11-15T14:15:40Z</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;
После выполнения вышеизложенных пунктов нужно [[Руководство_администратора_PayControl_v5#Запуск и остановка служб сервера PayControl|запустить wildfly]].&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;:8080/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8080/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;
Запустите wildfly.&lt;br /&gt;
&lt;br /&gt;
При замене файлов необходимо проверить, что в директории &#039;&#039;deployments&#039;&#039; отсутствуют файлы с расширением undeployed.&lt;br /&gt;
&lt;br /&gt;
== PCS. Настройка подключения с PC External ==&lt;br /&gt;
На сервере PCIS\PC External необходимо заменить часть строки с адресом сервера 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 -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; на строку &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;&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% -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; &#039;&#039;&#039;выше&#039;&#039;&#039; метки :JAVA_OPTS_SET на строку &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;&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
	<entry>
		<id>https://repo.paycontrol.org/wiki/index.php?title=%D0%90%D0%A0%D0%9C_%D0%A0%D0%9A%D0%A1_PayControl_v3&amp;diff=834</id>
		<title>АРМ РКС PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%90%D0%A0%D0%9C_%D0%A0%D0%9A%D0%A1_PayControl_v3&amp;diff=834"/>
		<updated>2024-11-07T21:08:52Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Nginx */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;АРМ РКС представляет из себя пользовательский Web-интерфейс, предоставляемый установленным в инфраструктуре заказчика Web-сервером с поддержкой исполнения PHP. Для получения запрашиваемой информации, Web-сервер АРМ РКС использует подключение к PCS через SOAP API, и подключение к БД PCS.&lt;br /&gt;
=Настройка подключения=&lt;br /&gt;
Для взаимодействия АРМ РКС необходимо установить Apache HTTP-сервер и PHP, в т.ч. модули php-soap и php-json.&lt;br /&gt;
==Подключение к БД==&lt;br /&gt;
Кроме того необходимо настроить подключение к БД с использованием PDO-драйверов:&lt;br /&gt;
===PostgreSQL===&lt;br /&gt;
Для начала нужно распаковать архив с файлами АРМ РКС в папку /var/www/html/.&lt;br /&gt;
&lt;br /&gt;
Затем установить драйвер [[PostgreSQL]] для [[PHP]] и настроить подключение к БД с его помощью в конфигурационном файле.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt install php-pgsql&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====CentOS====&lt;br /&gt;
На CentOS необходимо установить &#039;&#039;&#039;PHP (last)&#039;&#039;&#039; + &#039;&#039;&#039;php-pgsql&#039;&#039;&#039; + &#039;&#039;&#039;php-pdo&#039;&#039;&#039; + &#039;&#039;&#039;php-fpm&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Также необходимо разрешить подключение для IP адреса этого сервера к БД PC Server (даже в случае, если АРМ РКС и СУБД располагаются на одном хосте) - файл &#039;&#039;postgresql.conf&#039;&#039;, и добавить запись для разрешения аутентификации с этого IP - файл &#039;&#039;pg_hba.conf&#039;&#039;. Подробнее - [[#Разрешение подключения с других хостов|Разрешение подключения с других хостов]].&lt;br /&gt;
&lt;br /&gt;
Для проверки успешности подключения, можно проверить информацию о PHP (http://rks_host:port/rks/phpinfo.php), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
php-pdo-pgsql.png|PHP Info при настроенных драйверах PostgreSQL&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ALT Linux====&lt;br /&gt;
&lt;br /&gt;
1) Обновление сописка доcnупных пакетов&lt;br /&gt;
apt-get update&lt;br /&gt;
&lt;br /&gt;
2) Установка необходимых пакетов (вместо &#039;&#039;&#039;?&#039;&#039;&#039; укажите номер версии php)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;apt-get install php? php?-fpm-fcgi php?-pdo_pgsql php?-pgsql php?-soap php?-pdo php?-xml&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Настройте конфигурацию apache в файле &#039;&#039;/etc/httpd2/conf/httpd2.conf&#039;&#039;, добавив строки&lt;br /&gt;
&lt;br /&gt;
(проверьте, что путь и имя .sock файла соответствую вашей версии, и, что путь к файлам с АРМ РКС верен)&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Подключение модуля proxy и proxy_fcgi для работы с php-fpm&lt;br /&gt;
LoadModule proxy_module modules/mod_proxy.so&lt;br /&gt;
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so&lt;br /&gt;
&lt;br /&gt;
# Обработка PHP-файлов через php-fpm сокет&lt;br /&gt;
&amp;lt;FilesMatch \.php$&amp;gt;&lt;br /&gt;
    SetHandler &amp;quot;proxy:unix:/var/run/php7-fpm/php7-fpm.sock|fcgi://localhost/&amp;quot;&lt;br /&gt;
&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Директория с PHP-файлами&lt;br /&gt;
&amp;lt;Directory &amp;quot;/var/www/html/rks/&amp;quot;&amp;gt;&lt;br /&gt;
    AllowOverride All&lt;br /&gt;
    Require all granted&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Также необходимо разрешить подключение для IP адреса этого сервера к БД PC Server (даже в случае, если АРМ РКС и СУБД располагаются на одном хосте) - файл &#039;&#039;postgresql.conf&#039;&#039;, и добавить запись для разрешения аутентификации с этого IP - файл &#039;&#039;pg_hba.conf&#039;&#039;. Подробнее - [[#Разрешение подключения с других хостов|Разрешение подключения с других хостов]].&lt;br /&gt;
&lt;br /&gt;
Для проверки успешности подключения, можно проверить информацию о PHP (http://rks_host:port/rks/phpinfo.php), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
php-pdo-pgsql.png|PHP Info при настроенных драйверах PostgreSQL&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#Конфигурирование подключения|Настройка подключения к БД PC Server]]&lt;br /&gt;
=====Разрешение подключения с других хостов=====&lt;br /&gt;
#Раскомментировать строку &amp;quot;listen_addresses = &#039;localhost&#039;&amp;quot; в файле &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo vi /var/lib/pgsql/data/postgresql.conf&amp;lt;/syntaxhighlight&amp;gt; и перечислить через запятую список хостов или указать &amp;quot;*&amp;quot;. Требуется перезапуск после изменения параметра.&lt;br /&gt;
#Добавить для нового хоста запись в &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo vi /var/lib/pgsql/data/pg_hba.conf&amp;lt;/syntaxhighlight&amp;gt; и указать требуемый тип аутентификации.&lt;br /&gt;
&lt;br /&gt;
===Oracle===&lt;br /&gt;
====Ubuntu====&lt;br /&gt;
[https://rosemberg.net.br/en/installing-pdo-oracle-and-oci8-from-php7-on-ubuntumint-oracle-11-2/ Инструкция для настройки PHP + PDO + OCI8]&lt;br /&gt;
&lt;br /&gt;
Проверено на Ubuntu 16.04 + php7.0.30 + apache2 + Oracle Instant Client 18.3&lt;br /&gt;
====Centos====&lt;br /&gt;
Для подключения к СУБД Oracle необходимо использовать PHP версии 7.x и установить Oracle-client. Подробное описание установки драйверов Oracle для PHP доступно по ссылке: https://www.codeproject.com/Articles/1231012/Installing-OCI-PHP-on-RHEL-or-CentOS.&lt;br /&gt;
&lt;br /&gt;
Драйверы Oracle доступны по ссылке https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html&lt;br /&gt;
&lt;br /&gt;
Пример выполнения команд по установке:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo yum install epel-release yum-utils&lt;br /&gt;
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm&lt;br /&gt;
sudo yum-config-manager --enable remi-php73&lt;br /&gt;
sudo yum install php php-oci8 php-pdo php-soap&lt;br /&gt;
sudo yum install oracle-instantclient19.3-basic-19.3.0.0.0-1.x86_64.rpm oracle-instantclient19.3-devel-19.3.0.0.0-1.x86_64.rpm&lt;br /&gt;
sudo sh -c &amp;quot;echo /usr/lib/oracle/19.3/client64/lib &amp;gt; /etc/ld.so.conf.d/oracle-instantclient.conf&amp;quot;&lt;br /&gt;
sudo ldconfig&lt;br /&gt;
php -v&lt;br /&gt;
sudo systemctl restart httpd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Для проверки успешности подключения, проверить информацию о PHP (выводится с помощью вызова функции phpinfo();), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
php-oci.png|Установленный Oracle Call Interface (OCI) драйвер в PHP&lt;br /&gt;
php-pdo-oci.png|Подключённый OCI как PDO в PHP&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Необходимо в [[SELinux]] предоставить Apache разрешение  на установку сетевого подключение к СУБД Oracle:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;semanage port -m -t http_port_t -p tcp 1521&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Также, для успешного подключения к HTTPD необходимо разрешить подключения к порту 80 или 443:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo firewall-cmd --zone=public --add-service=http&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MS SQL===&lt;br /&gt;
Необходима установка драйвера dblib для PHP.&lt;br /&gt;
====Ubuntu====&lt;br /&gt;
Пример команды для установки драйвера для Ubuntu:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt install php7.0-sybase&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====CentOS 7====&lt;br /&gt;
Команда для предоставления доступа Apache на подключение к другим ресурсам:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;setsebool httpd_can_network_connect 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo yum install epel-release php-soap php-json&lt;br /&gt;
sudo yum install php-mssql&lt;br /&gt;
sudo systemctl restart httpd.service&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
При установке &#039;&#039;php-mssql&#039;&#039; должен автоматически установиться &#039;&#039;php-pdo&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Для проверки успешности подключения, проверить информацию о PHP (выводится с помощью вызова функции phpinfo();), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Centos php-mssql.png|Установленный MSSQL драйвер в PHP&lt;br /&gt;
Файл:Centos pdo mssql.png|Подключённый MSSQL как PDO в PHP&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====CentOS 8====&lt;br /&gt;
*Команда для предоставления доступа Apache на подключение к другим ресурсам:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;setsebool httpd_can_network_connect 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Установка PHP:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo su&lt;br /&gt;
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm&lt;br /&gt;
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm&lt;br /&gt;
dnf install yum-utils&lt;br /&gt;
dnf module reset php&lt;br /&gt;
dnf module install php:remi-7.2&lt;br /&gt;
subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms&lt;br /&gt;
dnf update&lt;br /&gt;
dnf install php php-pdo php-pear php-soap php-json php-fpm&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Загрузка и установка драйвера Microsoft ODBC 17:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo curl https://packages.microsoft.com/config/rhel/8/prod.repo &amp;gt; /etc/yum.repos.d/mssql-release.repo&lt;br /&gt;
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts&lt;br /&gt;
sudo ACCEPT_EULA=Y yum install msodbcsql17&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Установка драйверов PHP для Microsoft SQL Server&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo yum install php-sqlsrv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Для проверки успешности подключения, проверить информацию о PHP (выводится с помощью вызова функции phpinfo();), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Centos php-mssql.png|Установленный MSSQL драйвер в PHP&lt;br /&gt;
Файл:Centos pdo mssql.png|Подключённый MSSQL как PDO в PHP&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====MS Windows====&lt;br /&gt;
=====Развёртывание Apache и PHP=====&lt;br /&gt;
* Скачать Apache, распаковать, например в &#039;&#039;c:\Apache24&#039;&#039;;&lt;br /&gt;
* Скачать PHP 7, распаковать, например в &#039;&#039;c:\php&#039;&#039;;&lt;br /&gt;
* Подключить PHP в Apache (файл &#039;&#039;c:\Apache24\conf\httpd.conf&#039;&#039;):&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule php7_module c:/php/php7apache2_4.dll&lt;br /&gt;
&amp;lt;IfModule dir_module&amp;gt;&lt;br /&gt;
    DirectoryIndex index.html index.htm index.php&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
	AddType application/x-httpd-php .php&lt;br /&gt;
	AddHandler application/x-httpd-php .php&lt;br /&gt;
PHPiniDir &amp;quot;c:/php&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Включить поддержку SOAP API в PHP (файл &#039;&#039;c:\php\php.ini&#039;&#039;):&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
extension=soap&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Добавить PDO SQL (pdo_sqlsrv) драйвер в PHP. Для этого:&lt;br /&gt;
** Скачать драйвер Microsoft Drivers 5.6 for PHP for SQL Server (или свежее) с https://www.microsoft.com/en-us/download/details.aspx?id=57916 (при выпуске более свежей версии драйвера, возможно ссылка на него будет новая)&lt;br /&gt;
** Распаковать в &#039;&#039;c:\php\ext&#039;&#039;&lt;br /&gt;
** Сконфигурировать в &#039;&#039;c:\php\php.ini&#039;&#039;:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
extension=php_pdo_sqlsrv_73_ts_x64&lt;br /&gt;
extension=php_sqlsrv_73_ts_x64.dll&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Скачать и установить ODBC-драйвер https://docs.microsoft.com/ru-ru/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-2017&lt;br /&gt;
* Распаковать файлы АРМ РКС в &#039;&#039;c:\Apache24\htdocs&#039;&#039;;&lt;br /&gt;
* Установить службу &amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;c:\Apache24\bin\httpd.exe -k install&amp;lt;/syntaxhighlight&amp;gt; при этом она будет автоматически запущена и будет включён автозапуск.&lt;br /&gt;
&lt;br /&gt;
==Конфигурирование подключения==&lt;br /&gt;
===Конфигурирование===&lt;br /&gt;
Для подключения необходимо создать копию файла &#039;&#039;config.php.DEFAULT&#039;&#039; с именем &#039;&#039;config.php&#039;&#039;. В новом файле:&lt;br /&gt;
* указать адрес WSDL-схемы [[Вызов методов SOAP интерфейса|SOAP-интерфейса]] [[Сервер PayControl|сервера PCS]] (имеет вид &#039;&#039;http://pctest.local:8080/ws/PayControlServiceV3?wsdl&#039;&#039;);&lt;br /&gt;
* указать идентификатор [[Прикладная система|прикладной системы]] (systemid);&lt;br /&gt;
* раскомментировать блок с параметрами подключения к соответствующей СУБД. Указать в переменных окружения параметры для подключения БД PCS.&lt;br /&gt;
====Конфигурирование с переменными окружения Linux====&lt;br /&gt;
Для подключения необходимо создать копию файла &#039;&#039;config.php.ENVIRONMENTS&#039;&#039; с именем &#039;&#039;config.php&#039;&#039;. В новом файле:&lt;br /&gt;
* указать адрес WSDL-схемы [[Вызов методов SOAP интерфейса|SOAP-интерфейса]] [[Сервер PayControl|сервера PCS]] (имеет вид &#039;&#039;http://pctest.local:8080/ws/PayControlServiceV3?wsdl&#039;&#039;);&lt;br /&gt;
* указать идентификатор [[Прикладная система|прикладной системы]] (systemid);&lt;br /&gt;
* раскомментировать блок с параметрами подключения к соответствующей СУБД. Указать в переменных окружения параметры для подключения БД PCS.&lt;br /&gt;
=====Apache=====&lt;br /&gt;
* разрешить чтение из переменных окружения, включив модуль mod_env.so с помощью - &#039;&#039;&#039;sudo a2enmod env&#039;&#039;&#039;&lt;br /&gt;
* добавить в конфиг Apache &#039;&#039;/etc/httpd2/conf/httpd2.conf&#039;&#039; перечень переменных, которые нужно забирать:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;unixconfig&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;IfModule mod_env.c&amp;gt;&lt;br /&gt;
    PassEnv PC_CRT_DB_USERNAME&lt;br /&gt;
    PassEnv PC_CRT_DB_PASSWORD&lt;br /&gt;
    PassEnv PC_CRT_DB_CONNSTRING&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====Nginx=====&lt;br /&gt;
* добавить в конфиг Nginx &#039;&#039;/etc/nginx/sites-available/your-site-config&#039;&#039; перечень переменных, которые передавать PC_CRT_DB_CONNSTRING, PC_CRT_DB_USERNAME, PC_CRT_DB_PASSWORD.&lt;br /&gt;
Пример:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;unixconfig&amp;quot;&amp;gt;&lt;br /&gt;
    location ~ \.php$ {&lt;br /&gt;
        include snippets/fastcgi-php.conf;&lt;br /&gt;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; #убедитесь, что версия php указана верно и верен путь до файла *-fpm.sock&lt;br /&gt;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;&lt;br /&gt;
        include fastcgi_params;&lt;br /&gt;
        fastcgi_param PC_CRT_DB_CONNSTRING &amp;quot;pgsql:host=yourdbhost;port=5432;dbname=yourdbname&amp;quot;;&lt;br /&gt;
        fastcgi_param PC_CRT_DB_USERNAME &amp;quot;yourdbuser&amp;quot;;&lt;br /&gt;
        fastcgi_param PC_CRT_DB_PASSWORD &amp;quot;yourdbpass&amp;quot;;&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;
* ОЗУ: 100 MB;&lt;br /&gt;
* Дисковое пространство: 150 MB.&lt;br /&gt;
==Рекомендуемые==&lt;br /&gt;
* ЦП: одно ядро;&lt;br /&gt;
* ОЗУ: 512 MB;&lt;br /&gt;
* Дисковое пространство: 1 GB.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Серверная часть]]&lt;br /&gt;
[[Категория:Пользовательский интерфейс]]&lt;br /&gt;
[[Категория:Руководства]]&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%90%D0%A0%D0%9C_%D0%A0%D0%9A%D0%A1_PayControl_v3&amp;diff=833</id>
		<title>АРМ РКС PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%90%D0%A0%D0%9C_%D0%A0%D0%9A%D0%A1_PayControl_v3&amp;diff=833"/>
		<updated>2024-11-07T21:07:44Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Конфигурирование подключения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;АРМ РКС представляет из себя пользовательский Web-интерфейс, предоставляемый установленным в инфраструктуре заказчика Web-сервером с поддержкой исполнения PHP. Для получения запрашиваемой информации, Web-сервер АРМ РКС использует подключение к PCS через SOAP API, и подключение к БД PCS.&lt;br /&gt;
=Настройка подключения=&lt;br /&gt;
Для взаимодействия АРМ РКС необходимо установить Apache HTTP-сервер и PHP, в т.ч. модули php-soap и php-json.&lt;br /&gt;
==Подключение к БД==&lt;br /&gt;
Кроме того необходимо настроить подключение к БД с использованием PDO-драйверов:&lt;br /&gt;
===PostgreSQL===&lt;br /&gt;
Для начала нужно распаковать архив с файлами АРМ РКС в папку /var/www/html/.&lt;br /&gt;
&lt;br /&gt;
Затем установить драйвер [[PostgreSQL]] для [[PHP]] и настроить подключение к БД с его помощью в конфигурационном файле.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt install php-pgsql&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====CentOS====&lt;br /&gt;
На CentOS необходимо установить &#039;&#039;&#039;PHP (last)&#039;&#039;&#039; + &#039;&#039;&#039;php-pgsql&#039;&#039;&#039; + &#039;&#039;&#039;php-pdo&#039;&#039;&#039; + &#039;&#039;&#039;php-fpm&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Также необходимо разрешить подключение для IP адреса этого сервера к БД PC Server (даже в случае, если АРМ РКС и СУБД располагаются на одном хосте) - файл &#039;&#039;postgresql.conf&#039;&#039;, и добавить запись для разрешения аутентификации с этого IP - файл &#039;&#039;pg_hba.conf&#039;&#039;. Подробнее - [[#Разрешение подключения с других хостов|Разрешение подключения с других хостов]].&lt;br /&gt;
&lt;br /&gt;
Для проверки успешности подключения, можно проверить информацию о PHP (http://rks_host:port/rks/phpinfo.php), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
php-pdo-pgsql.png|PHP Info при настроенных драйверах PostgreSQL&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ALT Linux====&lt;br /&gt;
&lt;br /&gt;
1) Обновление сописка доcnупных пакетов&lt;br /&gt;
apt-get update&lt;br /&gt;
&lt;br /&gt;
2) Установка необходимых пакетов (вместо &#039;&#039;&#039;?&#039;&#039;&#039; укажите номер версии php)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;apt-get install php? php?-fpm-fcgi php?-pdo_pgsql php?-pgsql php?-soap php?-pdo php?-xml&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Настройте конфигурацию apache в файле &#039;&#039;/etc/httpd2/conf/httpd2.conf&#039;&#039;, добавив строки&lt;br /&gt;
&lt;br /&gt;
(проверьте, что путь и имя .sock файла соответствую вашей версии, и, что путь к файлам с АРМ РКС верен)&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Подключение модуля proxy и proxy_fcgi для работы с php-fpm&lt;br /&gt;
LoadModule proxy_module modules/mod_proxy.so&lt;br /&gt;
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so&lt;br /&gt;
&lt;br /&gt;
# Обработка PHP-файлов через php-fpm сокет&lt;br /&gt;
&amp;lt;FilesMatch \.php$&amp;gt;&lt;br /&gt;
    SetHandler &amp;quot;proxy:unix:/var/run/php7-fpm/php7-fpm.sock|fcgi://localhost/&amp;quot;&lt;br /&gt;
&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Директория с PHP-файлами&lt;br /&gt;
&amp;lt;Directory &amp;quot;/var/www/html/rks/&amp;quot;&amp;gt;&lt;br /&gt;
    AllowOverride All&lt;br /&gt;
    Require all granted&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Также необходимо разрешить подключение для IP адреса этого сервера к БД PC Server (даже в случае, если АРМ РКС и СУБД располагаются на одном хосте) - файл &#039;&#039;postgresql.conf&#039;&#039;, и добавить запись для разрешения аутентификации с этого IP - файл &#039;&#039;pg_hba.conf&#039;&#039;. Подробнее - [[#Разрешение подключения с других хостов|Разрешение подключения с других хостов]].&lt;br /&gt;
&lt;br /&gt;
Для проверки успешности подключения, можно проверить информацию о PHP (http://rks_host:port/rks/phpinfo.php), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
php-pdo-pgsql.png|PHP Info при настроенных драйверах PostgreSQL&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#Конфигурирование подключения|Настройка подключения к БД PC Server]]&lt;br /&gt;
=====Разрешение подключения с других хостов=====&lt;br /&gt;
#Раскомментировать строку &amp;quot;listen_addresses = &#039;localhost&#039;&amp;quot; в файле &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo vi /var/lib/pgsql/data/postgresql.conf&amp;lt;/syntaxhighlight&amp;gt; и перечислить через запятую список хостов или указать &amp;quot;*&amp;quot;. Требуется перезапуск после изменения параметра.&lt;br /&gt;
#Добавить для нового хоста запись в &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo vi /var/lib/pgsql/data/pg_hba.conf&amp;lt;/syntaxhighlight&amp;gt; и указать требуемый тип аутентификации.&lt;br /&gt;
&lt;br /&gt;
===Oracle===&lt;br /&gt;
====Ubuntu====&lt;br /&gt;
[https://rosemberg.net.br/en/installing-pdo-oracle-and-oci8-from-php7-on-ubuntumint-oracle-11-2/ Инструкция для настройки PHP + PDO + OCI8]&lt;br /&gt;
&lt;br /&gt;
Проверено на Ubuntu 16.04 + php7.0.30 + apache2 + Oracle Instant Client 18.3&lt;br /&gt;
====Centos====&lt;br /&gt;
Для подключения к СУБД Oracle необходимо использовать PHP версии 7.x и установить Oracle-client. Подробное описание установки драйверов Oracle для PHP доступно по ссылке: https://www.codeproject.com/Articles/1231012/Installing-OCI-PHP-on-RHEL-or-CentOS.&lt;br /&gt;
&lt;br /&gt;
Драйверы Oracle доступны по ссылке https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html&lt;br /&gt;
&lt;br /&gt;
Пример выполнения команд по установке:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo yum install epel-release yum-utils&lt;br /&gt;
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm&lt;br /&gt;
sudo yum-config-manager --enable remi-php73&lt;br /&gt;
sudo yum install php php-oci8 php-pdo php-soap&lt;br /&gt;
sudo yum install oracle-instantclient19.3-basic-19.3.0.0.0-1.x86_64.rpm oracle-instantclient19.3-devel-19.3.0.0.0-1.x86_64.rpm&lt;br /&gt;
sudo sh -c &amp;quot;echo /usr/lib/oracle/19.3/client64/lib &amp;gt; /etc/ld.so.conf.d/oracle-instantclient.conf&amp;quot;&lt;br /&gt;
sudo ldconfig&lt;br /&gt;
php -v&lt;br /&gt;
sudo systemctl restart httpd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Для проверки успешности подключения, проверить информацию о PHP (выводится с помощью вызова функции phpinfo();), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
php-oci.png|Установленный Oracle Call Interface (OCI) драйвер в PHP&lt;br /&gt;
php-pdo-oci.png|Подключённый OCI как PDO в PHP&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Необходимо в [[SELinux]] предоставить Apache разрешение  на установку сетевого подключение к СУБД Oracle:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;semanage port -m -t http_port_t -p tcp 1521&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Также, для успешного подключения к HTTPD необходимо разрешить подключения к порту 80 или 443:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo firewall-cmd --zone=public --add-service=http&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MS SQL===&lt;br /&gt;
Необходима установка драйвера dblib для PHP.&lt;br /&gt;
====Ubuntu====&lt;br /&gt;
Пример команды для установки драйвера для Ubuntu:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt install php7.0-sybase&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====CentOS 7====&lt;br /&gt;
Команда для предоставления доступа Apache на подключение к другим ресурсам:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;setsebool httpd_can_network_connect 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo yum install epel-release php-soap php-json&lt;br /&gt;
sudo yum install php-mssql&lt;br /&gt;
sudo systemctl restart httpd.service&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
При установке &#039;&#039;php-mssql&#039;&#039; должен автоматически установиться &#039;&#039;php-pdo&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Для проверки успешности подключения, проверить информацию о PHP (выводится с помощью вызова функции phpinfo();), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Centos php-mssql.png|Установленный MSSQL драйвер в PHP&lt;br /&gt;
Файл:Centos pdo mssql.png|Подключённый MSSQL как PDO в PHP&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====CentOS 8====&lt;br /&gt;
*Команда для предоставления доступа Apache на подключение к другим ресурсам:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;setsebool httpd_can_network_connect 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Установка PHP:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo su&lt;br /&gt;
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm&lt;br /&gt;
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm&lt;br /&gt;
dnf install yum-utils&lt;br /&gt;
dnf module reset php&lt;br /&gt;
dnf module install php:remi-7.2&lt;br /&gt;
subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms&lt;br /&gt;
dnf update&lt;br /&gt;
dnf install php php-pdo php-pear php-soap php-json php-fpm&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Загрузка и установка драйвера Microsoft ODBC 17:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo curl https://packages.microsoft.com/config/rhel/8/prod.repo &amp;gt; /etc/yum.repos.d/mssql-release.repo&lt;br /&gt;
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts&lt;br /&gt;
sudo ACCEPT_EULA=Y yum install msodbcsql17&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Установка драйверов PHP для Microsoft SQL Server&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo yum install php-sqlsrv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Для проверки успешности подключения, проверить информацию о PHP (выводится с помощью вызова функции phpinfo();), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Centos php-mssql.png|Установленный MSSQL драйвер в PHP&lt;br /&gt;
Файл:Centos pdo mssql.png|Подключённый MSSQL как PDO в PHP&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====MS Windows====&lt;br /&gt;
=====Развёртывание Apache и PHP=====&lt;br /&gt;
* Скачать Apache, распаковать, например в &#039;&#039;c:\Apache24&#039;&#039;;&lt;br /&gt;
* Скачать PHP 7, распаковать, например в &#039;&#039;c:\php&#039;&#039;;&lt;br /&gt;
* Подключить PHP в Apache (файл &#039;&#039;c:\Apache24\conf\httpd.conf&#039;&#039;):&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule php7_module c:/php/php7apache2_4.dll&lt;br /&gt;
&amp;lt;IfModule dir_module&amp;gt;&lt;br /&gt;
    DirectoryIndex index.html index.htm index.php&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
	AddType application/x-httpd-php .php&lt;br /&gt;
	AddHandler application/x-httpd-php .php&lt;br /&gt;
PHPiniDir &amp;quot;c:/php&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Включить поддержку SOAP API в PHP (файл &#039;&#039;c:\php\php.ini&#039;&#039;):&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
extension=soap&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Добавить PDO SQL (pdo_sqlsrv) драйвер в PHP. Для этого:&lt;br /&gt;
** Скачать драйвер Microsoft Drivers 5.6 for PHP for SQL Server (или свежее) с https://www.microsoft.com/en-us/download/details.aspx?id=57916 (при выпуске более свежей версии драйвера, возможно ссылка на него будет новая)&lt;br /&gt;
** Распаковать в &#039;&#039;c:\php\ext&#039;&#039;&lt;br /&gt;
** Сконфигурировать в &#039;&#039;c:\php\php.ini&#039;&#039;:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
extension=php_pdo_sqlsrv_73_ts_x64&lt;br /&gt;
extension=php_sqlsrv_73_ts_x64.dll&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Скачать и установить ODBC-драйвер https://docs.microsoft.com/ru-ru/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-2017&lt;br /&gt;
* Распаковать файлы АРМ РКС в &#039;&#039;c:\Apache24\htdocs&#039;&#039;;&lt;br /&gt;
* Установить службу &amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;c:\Apache24\bin\httpd.exe -k install&amp;lt;/syntaxhighlight&amp;gt; при этом она будет автоматически запущена и будет включён автозапуск.&lt;br /&gt;
&lt;br /&gt;
==Конфигурирование подключения==&lt;br /&gt;
===Конфигурирование===&lt;br /&gt;
Для подключения необходимо создать копию файла &#039;&#039;config.php.DEFAULT&#039;&#039; с именем &#039;&#039;config.php&#039;&#039;. В новом файле:&lt;br /&gt;
* указать адрес WSDL-схемы [[Вызов методов SOAP интерфейса|SOAP-интерфейса]] [[Сервер PayControl|сервера PCS]] (имеет вид &#039;&#039;http://pctest.local:8080/ws/PayControlServiceV3?wsdl&#039;&#039;);&lt;br /&gt;
* указать идентификатор [[Прикладная система|прикладной системы]] (systemid);&lt;br /&gt;
* раскомментировать блок с параметрами подключения к соответствующей СУБД. Указать в переменных окружения параметры для подключения БД PCS.&lt;br /&gt;
====Конфигурирование с переменными окружения Linux====&lt;br /&gt;
Для подключения необходимо создать копию файла &#039;&#039;config.php.ENVIRONMENTS&#039;&#039; с именем &#039;&#039;config.php&#039;&#039;. В новом файле:&lt;br /&gt;
* указать адрес WSDL-схемы [[Вызов методов SOAP интерфейса|SOAP-интерфейса]] [[Сервер PayControl|сервера PCS]] (имеет вид &#039;&#039;http://pctest.local:8080/ws/PayControlServiceV3?wsdl&#039;&#039;);&lt;br /&gt;
* указать идентификатор [[Прикладная система|прикладной системы]] (systemid);&lt;br /&gt;
* раскомментировать блок с параметрами подключения к соответствующей СУБД. Указать в переменных окружения параметры для подключения БД PCS.&lt;br /&gt;
=====Apache=====&lt;br /&gt;
* разрешить чтение из переменных окружения, включив модуль mod_env.so с помощью - &#039;&#039;&#039;sudo a2enmod env&#039;&#039;&#039;&lt;br /&gt;
* добавить в конфиг Apache &#039;&#039;/etc/httpd2/conf/httpd2.conf&#039;&#039; перечень переменных, которые нужно забирать:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;unixconfig&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;IfModule mod_env.c&amp;gt;&lt;br /&gt;
    PassEnv PC_CRT_DB_USERNAME&lt;br /&gt;
    PassEnv PC_CRT_DB_PASSWORD&lt;br /&gt;
    PassEnv PC_CRT_DB_CONNSTRING&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====Nginx=====&lt;br /&gt;
* добавить в конфиг Nginx &#039;&#039;/etc/nginx/sites-available/your-site-config&#039;&#039; перечень переменных, которые передавать.&lt;br /&gt;
Пример:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;unixconfig&amp;quot;&amp;gt;&lt;br /&gt;
    location ~ \.php$ {&lt;br /&gt;
        include snippets/fastcgi-php.conf;&lt;br /&gt;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; #убедитесь, что версия php указана верно и верен путь до файла *-fpm.sock&lt;br /&gt;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;&lt;br /&gt;
        include fastcgi_params;&lt;br /&gt;
        fastcgi_param PC_CRT_DB_CONNSTRING &amp;quot;pgsql:host=yourdbhost;port=5432;dbname=yourdbname&amp;quot;;&lt;br /&gt;
        fastcgi_param PC_CRT_DB_USERNAME &amp;quot;yourdbuser&amp;quot;;&lt;br /&gt;
        fastcgi_param PC_CRT_DB_PASSWORD &amp;quot;yourdbpass&amp;quot;;&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;
* ОЗУ: 100 MB;&lt;br /&gt;
* Дисковое пространство: 150 MB.&lt;br /&gt;
==Рекомендуемые==&lt;br /&gt;
* ЦП: одно ядро;&lt;br /&gt;
* ОЗУ: 512 MB;&lt;br /&gt;
* Дисковое пространство: 1 GB.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Серверная часть]]&lt;br /&gt;
[[Категория:Пользовательский интерфейс]]&lt;br /&gt;
[[Категория:Руководства]]&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%90%D0%A0%D0%9C_%D0%A0%D0%9A%D0%A1_PayControl_v3&amp;diff=832</id>
		<title>АРМ РКС PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%90%D0%A0%D0%9C_%D0%A0%D0%9A%D0%A1_PayControl_v3&amp;diff=832"/>
		<updated>2024-11-07T21:00:31Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Конфигурирование */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;АРМ РКС представляет из себя пользовательский Web-интерфейс, предоставляемый установленным в инфраструктуре заказчика Web-сервером с поддержкой исполнения PHP. Для получения запрашиваемой информации, Web-сервер АРМ РКС использует подключение к PCS через SOAP API, и подключение к БД PCS.&lt;br /&gt;
=Настройка подключения=&lt;br /&gt;
Для взаимодействия АРМ РКС необходимо установить Apache HTTP-сервер и PHP, в т.ч. модули php-soap и php-json.&lt;br /&gt;
==Подключение к БД==&lt;br /&gt;
Кроме того необходимо настроить подключение к БД с использованием PDO-драйверов:&lt;br /&gt;
===PostgreSQL===&lt;br /&gt;
Для начала нужно распаковать архив с файлами АРМ РКС в папку /var/www/html/.&lt;br /&gt;
&lt;br /&gt;
Затем установить драйвер [[PostgreSQL]] для [[PHP]] и настроить подключение к БД с его помощью в конфигурационном файле.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt install php-pgsql&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====CentOS====&lt;br /&gt;
На CentOS необходимо установить &#039;&#039;&#039;PHP (last)&#039;&#039;&#039; + &#039;&#039;&#039;php-pgsql&#039;&#039;&#039; + &#039;&#039;&#039;php-pdo&#039;&#039;&#039; + &#039;&#039;&#039;php-fpm&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Также необходимо разрешить подключение для IP адреса этого сервера к БД PC Server (даже в случае, если АРМ РКС и СУБД располагаются на одном хосте) - файл &#039;&#039;postgresql.conf&#039;&#039;, и добавить запись для разрешения аутентификации с этого IP - файл &#039;&#039;pg_hba.conf&#039;&#039;. Подробнее - [[#Разрешение подключения с других хостов|Разрешение подключения с других хостов]].&lt;br /&gt;
&lt;br /&gt;
Для проверки успешности подключения, можно проверить информацию о PHP (http://rks_host:port/rks/phpinfo.php), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
php-pdo-pgsql.png|PHP Info при настроенных драйверах PostgreSQL&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ALT Linux====&lt;br /&gt;
&lt;br /&gt;
1) Обновление сописка доcnупных пакетов&lt;br /&gt;
apt-get update&lt;br /&gt;
&lt;br /&gt;
2) Установка необходимых пакетов (вместо &#039;&#039;&#039;?&#039;&#039;&#039; укажите номер версии php)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;apt-get install php? php?-fpm-fcgi php?-pdo_pgsql php?-pgsql php?-soap php?-pdo php?-xml&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Настройте конфигурацию apache в файле &#039;&#039;/etc/httpd2/conf/httpd2.conf&#039;&#039;, добавив строки&lt;br /&gt;
&lt;br /&gt;
(проверьте, что путь и имя .sock файла соответствую вашей версии, и, что путь к файлам с АРМ РКС верен)&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Подключение модуля proxy и proxy_fcgi для работы с php-fpm&lt;br /&gt;
LoadModule proxy_module modules/mod_proxy.so&lt;br /&gt;
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so&lt;br /&gt;
&lt;br /&gt;
# Обработка PHP-файлов через php-fpm сокет&lt;br /&gt;
&amp;lt;FilesMatch \.php$&amp;gt;&lt;br /&gt;
    SetHandler &amp;quot;proxy:unix:/var/run/php7-fpm/php7-fpm.sock|fcgi://localhost/&amp;quot;&lt;br /&gt;
&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Директория с PHP-файлами&lt;br /&gt;
&amp;lt;Directory &amp;quot;/var/www/html/rks/&amp;quot;&amp;gt;&lt;br /&gt;
    AllowOverride All&lt;br /&gt;
    Require all granted&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Также необходимо разрешить подключение для IP адреса этого сервера к БД PC Server (даже в случае, если АРМ РКС и СУБД располагаются на одном хосте) - файл &#039;&#039;postgresql.conf&#039;&#039;, и добавить запись для разрешения аутентификации с этого IP - файл &#039;&#039;pg_hba.conf&#039;&#039;. Подробнее - [[#Разрешение подключения с других хостов|Разрешение подключения с других хостов]].&lt;br /&gt;
&lt;br /&gt;
Для проверки успешности подключения, можно проверить информацию о PHP (http://rks_host:port/rks/phpinfo.php), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
php-pdo-pgsql.png|PHP Info при настроенных драйверах PostgreSQL&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#Конфигурирование подключения|Настройка подключения к БД PC Server]]&lt;br /&gt;
=====Разрешение подключения с других хостов=====&lt;br /&gt;
#Раскомментировать строку &amp;quot;listen_addresses = &#039;localhost&#039;&amp;quot; в файле &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo vi /var/lib/pgsql/data/postgresql.conf&amp;lt;/syntaxhighlight&amp;gt; и перечислить через запятую список хостов или указать &amp;quot;*&amp;quot;. Требуется перезапуск после изменения параметра.&lt;br /&gt;
#Добавить для нового хоста запись в &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo vi /var/lib/pgsql/data/pg_hba.conf&amp;lt;/syntaxhighlight&amp;gt; и указать требуемый тип аутентификации.&lt;br /&gt;
&lt;br /&gt;
===Oracle===&lt;br /&gt;
====Ubuntu====&lt;br /&gt;
[https://rosemberg.net.br/en/installing-pdo-oracle-and-oci8-from-php7-on-ubuntumint-oracle-11-2/ Инструкция для настройки PHP + PDO + OCI8]&lt;br /&gt;
&lt;br /&gt;
Проверено на Ubuntu 16.04 + php7.0.30 + apache2 + Oracle Instant Client 18.3&lt;br /&gt;
====Centos====&lt;br /&gt;
Для подключения к СУБД Oracle необходимо использовать PHP версии 7.x и установить Oracle-client. Подробное описание установки драйверов Oracle для PHP доступно по ссылке: https://www.codeproject.com/Articles/1231012/Installing-OCI-PHP-on-RHEL-or-CentOS.&lt;br /&gt;
&lt;br /&gt;
Драйверы Oracle доступны по ссылке https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html&lt;br /&gt;
&lt;br /&gt;
Пример выполнения команд по установке:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo yum install epel-release yum-utils&lt;br /&gt;
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm&lt;br /&gt;
sudo yum-config-manager --enable remi-php73&lt;br /&gt;
sudo yum install php php-oci8 php-pdo php-soap&lt;br /&gt;
sudo yum install oracle-instantclient19.3-basic-19.3.0.0.0-1.x86_64.rpm oracle-instantclient19.3-devel-19.3.0.0.0-1.x86_64.rpm&lt;br /&gt;
sudo sh -c &amp;quot;echo /usr/lib/oracle/19.3/client64/lib &amp;gt; /etc/ld.so.conf.d/oracle-instantclient.conf&amp;quot;&lt;br /&gt;
sudo ldconfig&lt;br /&gt;
php -v&lt;br /&gt;
sudo systemctl restart httpd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Для проверки успешности подключения, проверить информацию о PHP (выводится с помощью вызова функции phpinfo();), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
php-oci.png|Установленный Oracle Call Interface (OCI) драйвер в PHP&lt;br /&gt;
php-pdo-oci.png|Подключённый OCI как PDO в PHP&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Необходимо в [[SELinux]] предоставить Apache разрешение  на установку сетевого подключение к СУБД Oracle:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;semanage port -m -t http_port_t -p tcp 1521&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Также, для успешного подключения к HTTPD необходимо разрешить подключения к порту 80 или 443:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo firewall-cmd --zone=public --add-service=http&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MS SQL===&lt;br /&gt;
Необходима установка драйвера dblib для PHP.&lt;br /&gt;
====Ubuntu====&lt;br /&gt;
Пример команды для установки драйвера для Ubuntu:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt install php7.0-sybase&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====CentOS 7====&lt;br /&gt;
Команда для предоставления доступа Apache на подключение к другим ресурсам:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;setsebool httpd_can_network_connect 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo yum install epel-release php-soap php-json&lt;br /&gt;
sudo yum install php-mssql&lt;br /&gt;
sudo systemctl restart httpd.service&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
При установке &#039;&#039;php-mssql&#039;&#039; должен автоматически установиться &#039;&#039;php-pdo&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Для проверки успешности подключения, проверить информацию о PHP (выводится с помощью вызова функции phpinfo();), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Centos php-mssql.png|Установленный MSSQL драйвер в PHP&lt;br /&gt;
Файл:Centos pdo mssql.png|Подключённый MSSQL как PDO в PHP&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====CentOS 8====&lt;br /&gt;
*Команда для предоставления доступа Apache на подключение к другим ресурсам:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;setsebool httpd_can_network_connect 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Установка PHP:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo su&lt;br /&gt;
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm&lt;br /&gt;
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm&lt;br /&gt;
dnf install yum-utils&lt;br /&gt;
dnf module reset php&lt;br /&gt;
dnf module install php:remi-7.2&lt;br /&gt;
subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms&lt;br /&gt;
dnf update&lt;br /&gt;
dnf install php php-pdo php-pear php-soap php-json php-fpm&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Загрузка и установка драйвера Microsoft ODBC 17:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo curl https://packages.microsoft.com/config/rhel/8/prod.repo &amp;gt; /etc/yum.repos.d/mssql-release.repo&lt;br /&gt;
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts&lt;br /&gt;
sudo ACCEPT_EULA=Y yum install msodbcsql17&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Установка драйверов PHP для Microsoft SQL Server&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo yum install php-sqlsrv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Для проверки успешности подключения, проверить информацию о PHP (выводится с помощью вызова функции phpinfo();), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Centos php-mssql.png|Установленный MSSQL драйвер в PHP&lt;br /&gt;
Файл:Centos pdo mssql.png|Подключённый MSSQL как PDO в PHP&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====MS Windows====&lt;br /&gt;
=====Развёртывание Apache и PHP=====&lt;br /&gt;
* Скачать Apache, распаковать, например в &#039;&#039;c:\Apache24&#039;&#039;;&lt;br /&gt;
* Скачать PHP 7, распаковать, например в &#039;&#039;c:\php&#039;&#039;;&lt;br /&gt;
* Подключить PHP в Apache (файл &#039;&#039;c:\Apache24\conf\httpd.conf&#039;&#039;):&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule php7_module c:/php/php7apache2_4.dll&lt;br /&gt;
&amp;lt;IfModule dir_module&amp;gt;&lt;br /&gt;
    DirectoryIndex index.html index.htm index.php&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
	AddType application/x-httpd-php .php&lt;br /&gt;
	AddHandler application/x-httpd-php .php&lt;br /&gt;
PHPiniDir &amp;quot;c:/php&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Включить поддержку SOAP API в PHP (файл &#039;&#039;c:\php\php.ini&#039;&#039;):&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
extension=soap&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Добавить PDO SQL (pdo_sqlsrv) драйвер в PHP. Для этого:&lt;br /&gt;
** Скачать драйвер Microsoft Drivers 5.6 for PHP for SQL Server (или свежее) с https://www.microsoft.com/en-us/download/details.aspx?id=57916 (при выпуске более свежей версии драйвера, возможно ссылка на него будет новая)&lt;br /&gt;
** Распаковать в &#039;&#039;c:\php\ext&#039;&#039;&lt;br /&gt;
** Сконфигурировать в &#039;&#039;c:\php\php.ini&#039;&#039;:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
extension=php_pdo_sqlsrv_73_ts_x64&lt;br /&gt;
extension=php_sqlsrv_73_ts_x64.dll&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Скачать и установить ODBC-драйвер https://docs.microsoft.com/ru-ru/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-2017&lt;br /&gt;
* Распаковать файлы АРМ РКС в &#039;&#039;c:\Apache24\htdocs&#039;&#039;;&lt;br /&gt;
* Установить службу &amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;c:\Apache24\bin\httpd.exe -k install&amp;lt;/syntaxhighlight&amp;gt; при этом она будет автоматически запущена и будет включён автозапуск.&lt;br /&gt;
&lt;br /&gt;
==Конфигурирование подключения==&lt;br /&gt;
===Linux===&lt;br /&gt;
Для удобства настройки, можно предоставить группе pc_admins доступ на запись в директорию web-сервера:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;chown -Rv :pc_admins /var/www/html/&lt;br /&gt;
chmod -Rv g+w /var/www/html/&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Конфигурирование===&lt;br /&gt;
Для подключения необходимо создать копию файла &#039;&#039;config.php.DEFAULT&#039;&#039; с именем &#039;&#039;config.php&#039;&#039;. В новом файле:&lt;br /&gt;
* указать адрес WSDL-схемы [[Вызов методов SOAP интерфейса|SOAP-интерфейса]] [[Сервер PayControl|сервера PCS]] (имеет вид &#039;&#039;http://pctest.local:8080/ws/PayControlServiceV3?wsdl&#039;&#039;);&lt;br /&gt;
* указать идентификатор [[Прикладная система|прикладной системы]] (systemid);&lt;br /&gt;
* раскомментировать блок с параметрами подключения к соответствующей СУБД. Указать в переменных окружения параметры для подключения БД PCS.&lt;br /&gt;
====Конфигурирование с переменными окружения====&lt;br /&gt;
Для подключения необходимо создать копию файла &#039;&#039;config.php.ENVIRONMENTS&#039;&#039; с именем &#039;&#039;config.php&#039;&#039;. В новом файле:&lt;br /&gt;
* указать адрес WSDL-схемы [[Вызов методов SOAP интерфейса|SOAP-интерфейса]] [[Сервер PayControl|сервера PCS]] (имеет вид &#039;&#039;http://pctest.local:8080/ws/PayControlServiceV3?wsdl&#039;&#039;);&lt;br /&gt;
* указать идентификатор [[Прикладная система|прикладной системы]] (systemid);&lt;br /&gt;
* раскомментировать блок с параметрами подключения к соответствующей СУБД. Указать в переменных окружения параметры для подключения БД PCS.&lt;br /&gt;
=====Apache=====&lt;br /&gt;
* разрешить чтение из переменных окружения, включив модуль mod_env.so с помощью - &#039;&#039;&#039;sudo a2enmod env&#039;&#039;&#039;&lt;br /&gt;
* добавить в конфиг Apache &#039;&#039;/etc/httpd2/conf/httpd2.conf&#039;&#039; перечень переменных, которые нужно забирать:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;unixconfig&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;IfModule mod_env.c&amp;gt;&lt;br /&gt;
    PassEnv PC_CRT_DB_USERNAME&lt;br /&gt;
    PassEnv PC_CRT_DB_PASSWORD&lt;br /&gt;
    PassEnv PC_CRT_DB_CONNSTRING&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====Nginx=====&lt;br /&gt;
* добавить в конфиг Nginx &#039;&#039;/etc/nginx/sites-available/your-site-config&#039;&#039; перечень переменных, которые передавать.&lt;br /&gt;
Пример:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;unixconfig&amp;quot;&amp;gt;&lt;br /&gt;
    location ~ \.php$ {&lt;br /&gt;
        include snippets/fastcgi-php.conf;&lt;br /&gt;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; #убедитесь, что версия php указана верно и верен путь до файла *-fpm.sock&lt;br /&gt;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;&lt;br /&gt;
        include fastcgi_params;&lt;br /&gt;
        fastcgi_param PC_CRT_DB_CONNSTRING &amp;quot;pgsql:host=yourdbhost;port=5432;dbname=yourdbname&amp;quot;;&lt;br /&gt;
        fastcgi_param PC_CRT_DB_USERNAME &amp;quot;yourdbuser&amp;quot;;&lt;br /&gt;
        fastcgi_param PC_CRT_DB_PASSWORD &amp;quot;yourdbpass&amp;quot;;&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;
* ОЗУ: 100 MB;&lt;br /&gt;
* Дисковое пространство: 150 MB.&lt;br /&gt;
==Рекомендуемые==&lt;br /&gt;
* ЦП: одно ядро;&lt;br /&gt;
* ОЗУ: 512 MB;&lt;br /&gt;
* Дисковое пространство: 1 GB.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Серверная часть]]&lt;br /&gt;
[[Категория:Пользовательский интерфейс]]&lt;br /&gt;
[[Категория:Руководства]]&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%90%D0%A0%D0%9C_%D0%A0%D0%9A%D0%A1_PayControl_v3&amp;diff=831</id>
		<title>АРМ РКС PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%90%D0%A0%D0%9C_%D0%A0%D0%9A%D0%A1_PayControl_v3&amp;diff=831"/>
		<updated>2024-11-07T08:04:57Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Конфигурирование */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;АРМ РКС представляет из себя пользовательский Web-интерфейс, предоставляемый установленным в инфраструктуре заказчика Web-сервером с поддержкой исполнения PHP. Для получения запрашиваемой информации, Web-сервер АРМ РКС использует подключение к PCS через SOAP API, и подключение к БД PCS.&lt;br /&gt;
=Настройка подключения=&lt;br /&gt;
Для взаимодействия АРМ РКС необходимо установить Apache HTTP-сервер и PHP, в т.ч. модули php-soap и php-json.&lt;br /&gt;
==Подключение к БД==&lt;br /&gt;
Кроме того необходимо настроить подключение к БД с использованием PDO-драйверов:&lt;br /&gt;
===PostgreSQL===&lt;br /&gt;
Для начала нужно распаковать архив с файлами АРМ РКС в папку /var/www/html/.&lt;br /&gt;
&lt;br /&gt;
Затем установить драйвер [[PostgreSQL]] для [[PHP]] и настроить подключение к БД с его помощью в конфигурационном файле.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt install php-pgsql&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====CentOS====&lt;br /&gt;
На CentOS необходимо установить &#039;&#039;&#039;PHP (last)&#039;&#039;&#039; + &#039;&#039;&#039;php-pgsql&#039;&#039;&#039; + &#039;&#039;&#039;php-pdo&#039;&#039;&#039; + &#039;&#039;&#039;php-fpm&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Также необходимо разрешить подключение для IP адреса этого сервера к БД PC Server (даже в случае, если АРМ РКС и СУБД располагаются на одном хосте) - файл &#039;&#039;postgresql.conf&#039;&#039;, и добавить запись для разрешения аутентификации с этого IP - файл &#039;&#039;pg_hba.conf&#039;&#039;. Подробнее - [[#Разрешение подключения с других хостов|Разрешение подключения с других хостов]].&lt;br /&gt;
&lt;br /&gt;
Для проверки успешности подключения, можно проверить информацию о PHP (http://rks_host:port/rks/phpinfo.php), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
php-pdo-pgsql.png|PHP Info при настроенных драйверах PostgreSQL&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ALT Linux====&lt;br /&gt;
&lt;br /&gt;
1) Обновление сописка доcnупных пакетов&lt;br /&gt;
apt-get update&lt;br /&gt;
&lt;br /&gt;
2) Установка необходимых пакетов (вместо &#039;&#039;&#039;?&#039;&#039;&#039; укажите номер версии php)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;apt-get install php? php?-fpm-fcgi php?-pdo_pgsql php?-pgsql php?-soap php?-pdo php?-xml&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Настройте конфигурацию apache в файле &#039;&#039;/etc/httpd2/conf/httpd2.conf&#039;&#039;, добавив строки&lt;br /&gt;
&lt;br /&gt;
(проверьте, что путь и имя .sock файла соответствую вашей версии, и, что путь к файлам с АРМ РКС верен)&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Подключение модуля proxy и proxy_fcgi для работы с php-fpm&lt;br /&gt;
LoadModule proxy_module modules/mod_proxy.so&lt;br /&gt;
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so&lt;br /&gt;
&lt;br /&gt;
# Обработка PHP-файлов через php-fpm сокет&lt;br /&gt;
&amp;lt;FilesMatch \.php$&amp;gt;&lt;br /&gt;
    SetHandler &amp;quot;proxy:unix:/var/run/php7-fpm/php7-fpm.sock|fcgi://localhost/&amp;quot;&lt;br /&gt;
&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Директория с PHP-файлами&lt;br /&gt;
&amp;lt;Directory &amp;quot;/var/www/html/rks/&amp;quot;&amp;gt;&lt;br /&gt;
    AllowOverride All&lt;br /&gt;
    Require all granted&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Также необходимо разрешить подключение для IP адреса этого сервера к БД PC Server (даже в случае, если АРМ РКС и СУБД располагаются на одном хосте) - файл &#039;&#039;postgresql.conf&#039;&#039;, и добавить запись для разрешения аутентификации с этого IP - файл &#039;&#039;pg_hba.conf&#039;&#039;. Подробнее - [[#Разрешение подключения с других хостов|Разрешение подключения с других хостов]].&lt;br /&gt;
&lt;br /&gt;
Для проверки успешности подключения, можно проверить информацию о PHP (http://rks_host:port/rks/phpinfo.php), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
php-pdo-pgsql.png|PHP Info при настроенных драйверах PostgreSQL&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#Конфигурирование подключения|Настройка подключения к БД PC Server]]&lt;br /&gt;
=====Разрешение подключения с других хостов=====&lt;br /&gt;
#Раскомментировать строку &amp;quot;listen_addresses = &#039;localhost&#039;&amp;quot; в файле &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo vi /var/lib/pgsql/data/postgresql.conf&amp;lt;/syntaxhighlight&amp;gt; и перечислить через запятую список хостов или указать &amp;quot;*&amp;quot;. Требуется перезапуск после изменения параметра.&lt;br /&gt;
#Добавить для нового хоста запись в &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo vi /var/lib/pgsql/data/pg_hba.conf&amp;lt;/syntaxhighlight&amp;gt; и указать требуемый тип аутентификации.&lt;br /&gt;
&lt;br /&gt;
===Oracle===&lt;br /&gt;
====Ubuntu====&lt;br /&gt;
[https://rosemberg.net.br/en/installing-pdo-oracle-and-oci8-from-php7-on-ubuntumint-oracle-11-2/ Инструкция для настройки PHP + PDO + OCI8]&lt;br /&gt;
&lt;br /&gt;
Проверено на Ubuntu 16.04 + php7.0.30 + apache2 + Oracle Instant Client 18.3&lt;br /&gt;
====Centos====&lt;br /&gt;
Для подключения к СУБД Oracle необходимо использовать PHP версии 7.x и установить Oracle-client. Подробное описание установки драйверов Oracle для PHP доступно по ссылке: https://www.codeproject.com/Articles/1231012/Installing-OCI-PHP-on-RHEL-or-CentOS.&lt;br /&gt;
&lt;br /&gt;
Драйверы Oracle доступны по ссылке https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html&lt;br /&gt;
&lt;br /&gt;
Пример выполнения команд по установке:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo yum install epel-release yum-utils&lt;br /&gt;
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm&lt;br /&gt;
sudo yum-config-manager --enable remi-php73&lt;br /&gt;
sudo yum install php php-oci8 php-pdo php-soap&lt;br /&gt;
sudo yum install oracle-instantclient19.3-basic-19.3.0.0.0-1.x86_64.rpm oracle-instantclient19.3-devel-19.3.0.0.0-1.x86_64.rpm&lt;br /&gt;
sudo sh -c &amp;quot;echo /usr/lib/oracle/19.3/client64/lib &amp;gt; /etc/ld.so.conf.d/oracle-instantclient.conf&amp;quot;&lt;br /&gt;
sudo ldconfig&lt;br /&gt;
php -v&lt;br /&gt;
sudo systemctl restart httpd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Для проверки успешности подключения, проверить информацию о PHP (выводится с помощью вызова функции phpinfo();), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
php-oci.png|Установленный Oracle Call Interface (OCI) драйвер в PHP&lt;br /&gt;
php-pdo-oci.png|Подключённый OCI как PDO в PHP&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Необходимо в [[SELinux]] предоставить Apache разрешение  на установку сетевого подключение к СУБД Oracle:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;semanage port -m -t http_port_t -p tcp 1521&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Также, для успешного подключения к HTTPD необходимо разрешить подключения к порту 80 или 443:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo firewall-cmd --zone=public --add-service=http&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MS SQL===&lt;br /&gt;
Необходима установка драйвера dblib для PHP.&lt;br /&gt;
====Ubuntu====&lt;br /&gt;
Пример команды для установки драйвера для Ubuntu:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt install php7.0-sybase&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====CentOS 7====&lt;br /&gt;
Команда для предоставления доступа Apache на подключение к другим ресурсам:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;setsebool httpd_can_network_connect 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo yum install epel-release php-soap php-json&lt;br /&gt;
sudo yum install php-mssql&lt;br /&gt;
sudo systemctl restart httpd.service&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
При установке &#039;&#039;php-mssql&#039;&#039; должен автоматически установиться &#039;&#039;php-pdo&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Для проверки успешности подключения, проверить информацию о PHP (выводится с помощью вызова функции phpinfo();), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Centos php-mssql.png|Установленный MSSQL драйвер в PHP&lt;br /&gt;
Файл:Centos pdo mssql.png|Подключённый MSSQL как PDO в PHP&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====CentOS 8====&lt;br /&gt;
*Команда для предоставления доступа Apache на подключение к другим ресурсам:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;setsebool httpd_can_network_connect 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Установка PHP:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo su&lt;br /&gt;
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm&lt;br /&gt;
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm&lt;br /&gt;
dnf install yum-utils&lt;br /&gt;
dnf module reset php&lt;br /&gt;
dnf module install php:remi-7.2&lt;br /&gt;
subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms&lt;br /&gt;
dnf update&lt;br /&gt;
dnf install php php-pdo php-pear php-soap php-json php-fpm&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Загрузка и установка драйвера Microsoft ODBC 17:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo curl https://packages.microsoft.com/config/rhel/8/prod.repo &amp;gt; /etc/yum.repos.d/mssql-release.repo&lt;br /&gt;
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts&lt;br /&gt;
sudo ACCEPT_EULA=Y yum install msodbcsql17&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Установка драйверов PHP для Microsoft SQL Server&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo yum install php-sqlsrv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Для проверки успешности подключения, проверить информацию о PHP (выводится с помощью вызова функции phpinfo();), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Centos php-mssql.png|Установленный MSSQL драйвер в PHP&lt;br /&gt;
Файл:Centos pdo mssql.png|Подключённый MSSQL как PDO в PHP&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====MS Windows====&lt;br /&gt;
=====Развёртывание Apache и PHP=====&lt;br /&gt;
* Скачать Apache, распаковать, например в &#039;&#039;c:\Apache24&#039;&#039;;&lt;br /&gt;
* Скачать PHP 7, распаковать, например в &#039;&#039;c:\php&#039;&#039;;&lt;br /&gt;
* Подключить PHP в Apache (файл &#039;&#039;c:\Apache24\conf\httpd.conf&#039;&#039;):&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule php7_module c:/php/php7apache2_4.dll&lt;br /&gt;
&amp;lt;IfModule dir_module&amp;gt;&lt;br /&gt;
    DirectoryIndex index.html index.htm index.php&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
	AddType application/x-httpd-php .php&lt;br /&gt;
	AddHandler application/x-httpd-php .php&lt;br /&gt;
PHPiniDir &amp;quot;c:/php&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Включить поддержку SOAP API в PHP (файл &#039;&#039;c:\php\php.ini&#039;&#039;):&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
extension=soap&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Добавить PDO SQL (pdo_sqlsrv) драйвер в PHP. Для этого:&lt;br /&gt;
** Скачать драйвер Microsoft Drivers 5.6 for PHP for SQL Server (или свежее) с https://www.microsoft.com/en-us/download/details.aspx?id=57916 (при выпуске более свежей версии драйвера, возможно ссылка на него будет новая)&lt;br /&gt;
** Распаковать в &#039;&#039;c:\php\ext&#039;&#039;&lt;br /&gt;
** Сконфигурировать в &#039;&#039;c:\php\php.ini&#039;&#039;:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
extension=php_pdo_sqlsrv_73_ts_x64&lt;br /&gt;
extension=php_sqlsrv_73_ts_x64.dll&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Скачать и установить ODBC-драйвер https://docs.microsoft.com/ru-ru/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-2017&lt;br /&gt;
* Распаковать файлы АРМ РКС в &#039;&#039;c:\Apache24\htdocs&#039;&#039;;&lt;br /&gt;
* Установить службу &amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;c:\Apache24\bin\httpd.exe -k install&amp;lt;/syntaxhighlight&amp;gt; при этом она будет автоматически запущена и будет включён автозапуск.&lt;br /&gt;
&lt;br /&gt;
==Конфигурирование подключения==&lt;br /&gt;
===Linux===&lt;br /&gt;
Для удобства настройки, можно предоставить группе pc_admins доступ на запись в директорию web-сервера:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;chown -Rv :pc_admins /var/www/html/&lt;br /&gt;
chmod -Rv g+w /var/www/html/&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Конфигурирование===&lt;br /&gt;
Для подключения необходимо создать копию файла &#039;&#039;config.php.DEFAULT&#039;&#039; с именем &#039;&#039;config.php&#039;&#039;. В новом файле:&lt;br /&gt;
* указать адрес WSDL-схемы [[Вызов методов SOAP интерфейса|SOAP-интерфейса]] [[Сервер PayControl|сервера PCS]] (имеет вид &#039;&#039;http://pctest.local:8080/ws/PayControlServiceV3?wsdl&#039;&#039;);&lt;br /&gt;
* указать идентификатор [[Прикладная система|прикладной системы]] (systemid);&lt;br /&gt;
* раскомментировать блок с параметрами подключения к соответствующей СУБД. Указать в переменных окружения параметры для подключения БД PCS.&lt;br /&gt;
* разрешить чтение из переменных окружения, включив модуль mod_env.so с помощью - &#039;&#039;&#039;sudo a2enmod env&#039;&#039;&#039;&lt;br /&gt;
* добавить в конфиг Apache &#039;&#039;/etc/httpd2/conf/httpd2.conf&#039;&#039; перечень переменных, которые нужно забирать:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;unixconfig&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;IfModule mod_env.c&amp;gt;&lt;br /&gt;
    PassEnv PC_CRT_DB_USERNAME&lt;br /&gt;
    PassEnv PC_CRT_DB_PASSWORD&lt;br /&gt;
    PassEnv PC_CRT_DB_CONNSTRING&lt;br /&gt;
&amp;lt;/IfModule&amp;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;
* ОЗУ: 100 MB;&lt;br /&gt;
* Дисковое пространство: 150 MB.&lt;br /&gt;
==Рекомендуемые==&lt;br /&gt;
* ЦП: одно ядро;&lt;br /&gt;
* ОЗУ: 512 MB;&lt;br /&gt;
* Дисковое пространство: 1 GB.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Серверная часть]]&lt;br /&gt;
[[Категория:Пользовательский интерфейс]]&lt;br /&gt;
[[Категория:Руководства]]&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%90%D0%A0%D0%9C_%D0%A0%D0%9A%D0%A1_PayControl_v3&amp;diff=830</id>
		<title>АРМ РКС PayControl v3</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=%D0%90%D0%A0%D0%9C_%D0%A0%D0%9A%D0%A1_PayControl_v3&amp;diff=830"/>
		<updated>2024-11-05T16:57:08Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Подключение к БД */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;АРМ РКС представляет из себя пользовательский Web-интерфейс, предоставляемый установленным в инфраструктуре заказчика Web-сервером с поддержкой исполнения PHP. Для получения запрашиваемой информации, Web-сервер АРМ РКС использует подключение к PCS через SOAP API, и подключение к БД PCS.&lt;br /&gt;
=Настройка подключения=&lt;br /&gt;
Для взаимодействия АРМ РКС необходимо установить Apache HTTP-сервер и PHP, в т.ч. модули php-soap и php-json.&lt;br /&gt;
==Подключение к БД==&lt;br /&gt;
Кроме того необходимо настроить подключение к БД с использованием PDO-драйверов:&lt;br /&gt;
===PostgreSQL===&lt;br /&gt;
Для начала нужно распаковать архив с файлами АРМ РКС в папку /var/www/html/.&lt;br /&gt;
&lt;br /&gt;
Затем установить драйвер [[PostgreSQL]] для [[PHP]] и настроить подключение к БД с его помощью в конфигурационном файле.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt install php-pgsql&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====CentOS====&lt;br /&gt;
На CentOS необходимо установить &#039;&#039;&#039;PHP (last)&#039;&#039;&#039; + &#039;&#039;&#039;php-pgsql&#039;&#039;&#039; + &#039;&#039;&#039;php-pdo&#039;&#039;&#039; + &#039;&#039;&#039;php-fpm&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Также необходимо разрешить подключение для IP адреса этого сервера к БД PC Server (даже в случае, если АРМ РКС и СУБД располагаются на одном хосте) - файл &#039;&#039;postgresql.conf&#039;&#039;, и добавить запись для разрешения аутентификации с этого IP - файл &#039;&#039;pg_hba.conf&#039;&#039;. Подробнее - [[#Разрешение подключения с других хостов|Разрешение подключения с других хостов]].&lt;br /&gt;
&lt;br /&gt;
Для проверки успешности подключения, можно проверить информацию о PHP (http://rks_host:port/rks/phpinfo.php), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
php-pdo-pgsql.png|PHP Info при настроенных драйверах PostgreSQL&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ALT Linux====&lt;br /&gt;
&lt;br /&gt;
1) Обновление сописка доcnупных пакетов&lt;br /&gt;
apt-get update&lt;br /&gt;
&lt;br /&gt;
2) Установка необходимых пакетов (вместо &#039;&#039;&#039;?&#039;&#039;&#039; укажите номер версии php)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;apt-get install php? php?-fpm-fcgi php?-pdo_pgsql php?-pgsql php?-soap php?-pdo php?-xml&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Настройте конфигурацию apache в файле &#039;&#039;/etc/httpd2/conf/httpd2.conf&#039;&#039;, добавив строки&lt;br /&gt;
&lt;br /&gt;
(проверьте, что путь и имя .sock файла соответствую вашей версии, и, что путь к файлам с АРМ РКС верен)&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Подключение модуля proxy и proxy_fcgi для работы с php-fpm&lt;br /&gt;
LoadModule proxy_module modules/mod_proxy.so&lt;br /&gt;
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so&lt;br /&gt;
&lt;br /&gt;
# Обработка PHP-файлов через php-fpm сокет&lt;br /&gt;
&amp;lt;FilesMatch \.php$&amp;gt;&lt;br /&gt;
    SetHandler &amp;quot;proxy:unix:/var/run/php7-fpm/php7-fpm.sock|fcgi://localhost/&amp;quot;&lt;br /&gt;
&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Директория с PHP-файлами&lt;br /&gt;
&amp;lt;Directory &amp;quot;/var/www/html/rks/&amp;quot;&amp;gt;&lt;br /&gt;
    AllowOverride All&lt;br /&gt;
    Require all granted&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Также необходимо разрешить подключение для IP адреса этого сервера к БД PC Server (даже в случае, если АРМ РКС и СУБД располагаются на одном хосте) - файл &#039;&#039;postgresql.conf&#039;&#039;, и добавить запись для разрешения аутентификации с этого IP - файл &#039;&#039;pg_hba.conf&#039;&#039;. Подробнее - [[#Разрешение подключения с других хостов|Разрешение подключения с других хостов]].&lt;br /&gt;
&lt;br /&gt;
Для проверки успешности подключения, можно проверить информацию о PHP (http://rks_host:port/rks/phpinfo.php), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
php-pdo-pgsql.png|PHP Info при настроенных драйверах PostgreSQL&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#Конфигурирование подключения|Настройка подключения к БД PC Server]]&lt;br /&gt;
=====Разрешение подключения с других хостов=====&lt;br /&gt;
#Раскомментировать строку &amp;quot;listen_addresses = &#039;localhost&#039;&amp;quot; в файле &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo vi /var/lib/pgsql/data/postgresql.conf&amp;lt;/syntaxhighlight&amp;gt; и перечислить через запятую список хостов или указать &amp;quot;*&amp;quot;. Требуется перезапуск после изменения параметра.&lt;br /&gt;
#Добавить для нового хоста запись в &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo vi /var/lib/pgsql/data/pg_hba.conf&amp;lt;/syntaxhighlight&amp;gt; и указать требуемый тип аутентификации.&lt;br /&gt;
&lt;br /&gt;
===Oracle===&lt;br /&gt;
====Ubuntu====&lt;br /&gt;
[https://rosemberg.net.br/en/installing-pdo-oracle-and-oci8-from-php7-on-ubuntumint-oracle-11-2/ Инструкция для настройки PHP + PDO + OCI8]&lt;br /&gt;
&lt;br /&gt;
Проверено на Ubuntu 16.04 + php7.0.30 + apache2 + Oracle Instant Client 18.3&lt;br /&gt;
====Centos====&lt;br /&gt;
Для подключения к СУБД Oracle необходимо использовать PHP версии 7.x и установить Oracle-client. Подробное описание установки драйверов Oracle для PHP доступно по ссылке: https://www.codeproject.com/Articles/1231012/Installing-OCI-PHP-on-RHEL-or-CentOS.&lt;br /&gt;
&lt;br /&gt;
Драйверы Oracle доступны по ссылке https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html&lt;br /&gt;
&lt;br /&gt;
Пример выполнения команд по установке:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo yum install epel-release yum-utils&lt;br /&gt;
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm&lt;br /&gt;
sudo yum-config-manager --enable remi-php73&lt;br /&gt;
sudo yum install php php-oci8 php-pdo php-soap&lt;br /&gt;
sudo yum install oracle-instantclient19.3-basic-19.3.0.0.0-1.x86_64.rpm oracle-instantclient19.3-devel-19.3.0.0.0-1.x86_64.rpm&lt;br /&gt;
sudo sh -c &amp;quot;echo /usr/lib/oracle/19.3/client64/lib &amp;gt; /etc/ld.so.conf.d/oracle-instantclient.conf&amp;quot;&lt;br /&gt;
sudo ldconfig&lt;br /&gt;
php -v&lt;br /&gt;
sudo systemctl restart httpd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Для проверки успешности подключения, проверить информацию о PHP (выводится с помощью вызова функции phpinfo();), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
php-oci.png|Установленный Oracle Call Interface (OCI) драйвер в PHP&lt;br /&gt;
php-pdo-oci.png|Подключённый OCI как PDO в PHP&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Необходимо в [[SELinux]] предоставить Apache разрешение  на установку сетевого подключение к СУБД Oracle:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;semanage port -m -t http_port_t -p tcp 1521&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Также, для успешного подключения к HTTPD необходимо разрешить подключения к порту 80 или 443:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo firewall-cmd --zone=public --add-service=http&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MS SQL===&lt;br /&gt;
Необходима установка драйвера dblib для PHP.&lt;br /&gt;
====Ubuntu====&lt;br /&gt;
Пример команды для установки драйвера для Ubuntu:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt install php7.0-sybase&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====CentOS 7====&lt;br /&gt;
Команда для предоставления доступа Apache на подключение к другим ресурсам:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;setsebool httpd_can_network_connect 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo yum install epel-release php-soap php-json&lt;br /&gt;
sudo yum install php-mssql&lt;br /&gt;
sudo systemctl restart httpd.service&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
При установке &#039;&#039;php-mssql&#039;&#039; должен автоматически установиться &#039;&#039;php-pdo&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Для проверки успешности подключения, проверить информацию о PHP (выводится с помощью вызова функции phpinfo();), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Centos php-mssql.png|Установленный MSSQL драйвер в PHP&lt;br /&gt;
Файл:Centos pdo mssql.png|Подключённый MSSQL как PDO в PHP&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====CentOS 8====&lt;br /&gt;
*Команда для предоставления доступа Apache на подключение к другим ресурсам:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;setsebool httpd_can_network_connect 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Установка PHP:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo su&lt;br /&gt;
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm&lt;br /&gt;
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm&lt;br /&gt;
dnf install yum-utils&lt;br /&gt;
dnf module reset php&lt;br /&gt;
dnf module install php:remi-7.2&lt;br /&gt;
subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms&lt;br /&gt;
dnf update&lt;br /&gt;
dnf install php php-pdo php-pear php-soap php-json php-fpm&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Загрузка и установка драйвера Microsoft ODBC 17:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo curl https://packages.microsoft.com/config/rhel/8/prod.repo &amp;gt; /etc/yum.repos.d/mssql-release.repo&lt;br /&gt;
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts&lt;br /&gt;
sudo ACCEPT_EULA=Y yum install msodbcsql17&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Установка драйверов PHP для Microsoft SQL Server&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo yum install php-sqlsrv&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Для проверки успешности подключения, проверить информацию о PHP (выводится с помощью вызова функции phpinfo();), должны отображаться установленные PDO-драйверы:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Centos php-mssql.png|Установленный MSSQL драйвер в PHP&lt;br /&gt;
Файл:Centos pdo mssql.png|Подключённый MSSQL как PDO в PHP&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====MS Windows====&lt;br /&gt;
=====Развёртывание Apache и PHP=====&lt;br /&gt;
* Скачать Apache, распаковать, например в &#039;&#039;c:\Apache24&#039;&#039;;&lt;br /&gt;
* Скачать PHP 7, распаковать, например в &#039;&#039;c:\php&#039;&#039;;&lt;br /&gt;
* Подключить PHP в Apache (файл &#039;&#039;c:\Apache24\conf\httpd.conf&#039;&#039;):&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
LoadModule php7_module c:/php/php7apache2_4.dll&lt;br /&gt;
&amp;lt;IfModule dir_module&amp;gt;&lt;br /&gt;
    DirectoryIndex index.html index.htm index.php&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
	AddType application/x-httpd-php .php&lt;br /&gt;
	AddHandler application/x-httpd-php .php&lt;br /&gt;
PHPiniDir &amp;quot;c:/php&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Включить поддержку SOAP API в PHP (файл &#039;&#039;c:\php\php.ini&#039;&#039;):&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
extension=soap&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Добавить PDO SQL (pdo_sqlsrv) драйвер в PHP. Для этого:&lt;br /&gt;
** Скачать драйвер Microsoft Drivers 5.6 for PHP for SQL Server (или свежее) с https://www.microsoft.com/en-us/download/details.aspx?id=57916 (при выпуске более свежей версии драйвера, возможно ссылка на него будет новая)&lt;br /&gt;
** Распаковать в &#039;&#039;c:\php\ext&#039;&#039;&lt;br /&gt;
** Сконфигурировать в &#039;&#039;c:\php\php.ini&#039;&#039;:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
extension=php_pdo_sqlsrv_73_ts_x64&lt;br /&gt;
extension=php_sqlsrv_73_ts_x64.dll&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Скачать и установить ODBC-драйвер https://docs.microsoft.com/ru-ru/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-2017&lt;br /&gt;
* Распаковать файлы АРМ РКС в &#039;&#039;c:\Apache24\htdocs&#039;&#039;;&lt;br /&gt;
* Установить службу &amp;lt;syntaxhighlight lang=&amp;quot;bat&amp;quot;&amp;gt;c:\Apache24\bin\httpd.exe -k install&amp;lt;/syntaxhighlight&amp;gt; при этом она будет автоматически запущена и будет включён автозапуск.&lt;br /&gt;
&lt;br /&gt;
==Конфигурирование подключения==&lt;br /&gt;
===Linux===&lt;br /&gt;
Для удобства настройки, можно предоставить группе pc_admins доступ на запись в директорию web-сервера:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;chown -Rv :pc_admins /var/www/html/&lt;br /&gt;
chmod -Rv g+w /var/www/html/&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Конфигурирование===&lt;br /&gt;
Для подключения необходимо создать копию файла &#039;&#039;config.php.DEFAULT&#039;&#039; с именем &#039;&#039;config.php&#039;&#039;. В новом файле:&lt;br /&gt;
* указать адрес WSDL-схемы [[Вызов методов SOAP интерфейса|SOAP-интерфейса]] [[Сервер PayControl|сервера PCS]] (имеет вид &#039;&#039;http://pctest.local:8080/ws/PayControlServiceV3?wsdl&#039;&#039;);&lt;br /&gt;
* указать идентификатор [[Прикладная система|прикладной системы]] (systemid);&lt;br /&gt;
* раскомментировать блок с параметрами подключения к соответствующей СУБД. Указать параметры для подключения [[База данных PayControl|БД PCS]].&lt;br /&gt;
&lt;br /&gt;
=Системные требования=&lt;br /&gt;
Требования указаны без учёта системных требований ОС.&lt;br /&gt;
==Минимальные==&lt;br /&gt;
* ЦП: одно ядро;&lt;br /&gt;
* ОЗУ: 100 MB;&lt;br /&gt;
* Дисковое пространство: 150 MB.&lt;br /&gt;
==Рекомендуемые==&lt;br /&gt;
* ЦП: одно ядро;&lt;br /&gt;
* ОЗУ: 512 MB;&lt;br /&gt;
* Дисковое пространство: 1 GB.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Серверная часть]]&lt;br /&gt;
[[Категория:Пользовательский интерфейс]]&lt;br /&gt;
[[Категория:Руководства]]&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_5_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=828</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=828"/>
		<updated>2024-10-01T15:46: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 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;
= Документация по работе с 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_5_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=827</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=827"/>
		<updated>2024-10-01T15:46:14Z</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 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;
= Обновление модулей 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_5_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=826</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=826"/>
		<updated>2024-10-01T15:36:10Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Обновление Java */&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;
= Обновление модулей 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;
= Изменения в БД =&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;
Установите лицензию одним из приведённых в [https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/#установка-лицензии руководстве администратора PC] способов.&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_5_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=825</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=825"/>
		<updated>2024-10-01T15:34:43Z</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;
= Обновление 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, что приведёт к ошибкам. Для того чтобы компоненты работали под 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;
= Обновление модулей 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;
= Изменения в БД =&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;
Установите лицензию одним из приведённых в [https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/#установка-лицензии руководстве администратора PC] способов.&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_5_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=824</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=824"/>
		<updated>2024-10-01T15:33:56Z</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;
= Обновление 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, что приведёт к ошибкам. Для того чтобы компоненты работали под 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;
= Обновление модулей 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;
После обновления крайне рекомендуется отключить автозапуск Wildfly.&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;
Установите лицензию одним из приведённых в [https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/#установка-лицензии руководстве администратора PC] способов.&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_5_%D0%BD%D0%B0_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8E_6&amp;diff=823</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=823"/>
		<updated>2024-10-01T15:32:37Z</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;
= Обновление 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, что приведёт к ошибкам. Для того чтобы компоненты работали под 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;
= Обновление модулей 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;
После обновления крайне рекомендуется отключить автозапуск Wildfly.&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;
Установите лицензию одним из приведённых в [https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/#установка-лицензии руководстве администратора PC] способов.&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
Вся документация - https://repo.paycontrol.org/index/safe-tech/#paycontrol-demo-portal&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=822</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=822"/>
		<updated>2024-10-01T15:32:24Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Обновление Java */&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, что приведёт к ошибкам. Для того чтобы компоненты работали под 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;
= Обновление модулей 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;
После обновления крайне рекомендуется отключить автозапуск Wildfly.&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;
&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;
Установите лицензию одним из приведённых в [https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/#установка-лицензии руководстве администратора PC] способов.&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
Вся документация - https://repo.paycontrol.org/index/safe-tech/#paycontrol-demo-portal&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=821</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=821"/>
		<updated>2024-10-01T13:02:59Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: Новая страница: «  = Обновление Java =  Перед обновлением компонентов PC &amp;#039;&amp;#039;&amp;#039;требуется&amp;#039;&amp;#039;&amp;#039; остановить Wildfly и обнови…»&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 новой версии, старая версия не удаляется, и [[Wildfly]] может продолжить работать на версии 11, что приведёт к ошибкам. Для того чтобы компоненты работали под 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;
= Обновление модулей 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;
После обновления крайне рекомендуется отключить автозапуск Wildfly.&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;
&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;
Установите лицензию одним из приведённых в [https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/#установка-лицензии руководстве администратора PC] способов.&lt;br /&gt;
&lt;br /&gt;
= Документация по работе с PC 6-й версии =&lt;br /&gt;
&lt;br /&gt;
Руководство администратора - https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/&lt;br /&gt;
Справочное руководство - https://repo.paycontrol.org/server/doc/latest/pc-reference-guide/ru/&lt;br /&gt;
Вся документация - https://repo.paycontrol.org/index/safe-tech/#paycontrol-demo-portal&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_3.5_%D0%BD%D0%B0_3.9&amp;diff=819</id>
		<title>Обновление PayControl с 3.5 на 3.9</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_3.5_%D0%BD%D0%B0_3.9&amp;diff=819"/>
		<updated>2024-06-25T13:53:08Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Удаление ненужных полей */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В версии 3.8 реализовано взаимодействие с [[PC Pusher 5.2|PC Pusher 5.x]], который, в свою очередь, поддерживает отправку пуш-уведомлений на устройства Huawei. Обновлению с 3.5-3.7 подлежат модули PCS и PC External.&lt;br /&gt;
&lt;br /&gt;
{{Предупреждение|Модуль PCIS Internal 3.5-3.7 подлежит замене на модуль PC Pusher 5.5. PCS с версии 3.8 не поддерживает работу с модулем PCIS Internal.}}&lt;br /&gt;
&lt;br /&gt;
В версии 3.9 добавлена функциональность формирования имитовставки, для соответствия п.5.1 Положения Банка России от 17 апреля 2019 года N 683-П:&lt;br /&gt;
&lt;br /&gt;
    В целях обеспечения целостности электронных сообщений и подтверждения их составления уполномоченным на это лицом кредитные организации должны обеспечивать реализацию мер по использованию усиленной квалифицированной электронной подписи, усиленной неквалифицированной электронной подписи или СКЗИ, реализующих функцию имитозащиты информации с аутентификацией отправителя сообщения.&lt;br /&gt;
&lt;br /&gt;
Модули сервера доступны по ссылкам:&lt;br /&gt;
* PC Server (https://repo.paycontrol.org/server/maven/tech/paycon/server/PayControl-services-module/), версия 3.9.xxx;&lt;br /&gt;
* PC External (https://repo.paycontrol.org/server/maven/tech/paycon/server/PayControl-interaction-rest/), версия 3.9.xxx;&lt;br /&gt;
* PC Pusher (https://repo.paycontrol.org/server/maven/tech/paycon/server/pc-pusher/), версия 5.5.xxx.&lt;br /&gt;
&lt;br /&gt;
Если при обновлении сервера также необходимо обновить Wildfly, то перед обновлением &#039;&#039;&#039;необходимо&#039;&#039;&#039; остановить службу, убрать её из автозапуска.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC требуется обновить Java до версии 11. Версия 8 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и [[Wildfly]] может продолжить работать на версии 8, что приведёт к ошибкам. Для того чтобы компоненты работали под Java 11, необходимо либо удалить неактуальную версию 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;
=Обновление компонентов PCS= &lt;br /&gt;
Для обновления нужно заменить файл приложения сервера &amp;lt;WF_PATH&amp;gt;\standalone\deployments\ на новый:&lt;br /&gt;
* на PCS - файл &#039;&#039;PayControl-services-module-&amp;lt;VERSION&amp;gt;.ear&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|Остановите wildfly]].&lt;br /&gt;
&lt;br /&gt;
==Отключение поддержки совместимости с PCS 3.5==&lt;br /&gt;
Для отключения в модуле PCIS External 3.7 режима совместимости с сервером версии 3.5 необходимо убрать из окружения Java параметр &amp;lt;code&amp;gt;paycontrol.pcsVersion&amp;lt;/code&amp;gt; со значением &amp;lt;code&amp;gt;3.5&amp;lt;/code&amp;gt;. Это можно сделать следующим образом:&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.pcsVersion=3.5&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.pcsVersion=3.5&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Изменения в БД==&lt;br /&gt;
*Для переноса параметров из pc_system в pc_system_params, что необходимо, при обновлении, нужно выполнить запрос:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
INSERT INTO pc_system_params (systemid, created_at, is_deleted, updated_at, billed_date_request, billing_period, billed_date, billing_type, description, front_end_url, license, online_confirmation_url, register_request, report_template_path, user_keys_expiration_period)&lt;br /&gt;
SELECT systemid, created_at, is_deleted, updated_at, billed_date_request, billing_period, billed_date, billing_type, description, front_end_url, license, online_confirmation_url, register_request, report_template_path, user_keys_expiration_period&lt;br /&gt;
FROM pc_system;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Чтобы поправить настройки пользователей нужно выполнить запрос:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_keyinfo set key_flags=0 where need_to_use_fingerprint=0;&lt;br /&gt;
update pc_keyinfo set key_flags=1 where need_to_use_fingerprint=1;&lt;br /&gt;
update pc_delayedkeyinfo set key_flags=0 where need_to_use_fingerprint=0;&lt;br /&gt;
update pc_delayedkeyinfo set key_flags=1 where need_to_use_fingerprint=1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Запрос на регистрацию==&lt;br /&gt;
===Получение нового запроса===&lt;br /&gt;
Для получения нового запроса на регистрацию нужно выполнить запрос к БД PCS&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
select * from pc_system;&lt;br /&gt;
&amp;lt;/code&amp;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;
&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;
Для получения обновленной лицензии нужно выполнить запрос к БД PCS&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
select * from pc_system;&lt;br /&gt;
&amp;lt;/code&amp;gt;, и обратиться с результатами запроса в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
===Замена лицензии в БД===&lt;br /&gt;
*На сервере PC Server, удалите файл(*.paycontrol.license) с лицензией, если такой есть.&lt;br /&gt;
*Выполните к БД PC Server запрос:&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; на реальные данные лицензии(*.paycontrol.license), созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных лицензии&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;licenseInformationWithSignature xmlns=&amp;quot;http://ws.safetech.ru/PayControl/services/ws/request/&amp;quot;&amp;gt;&amp;lt;licenseInformation&amp;gt;&amp;lt;systemId&amp;gt;48000c91-dd4a-47d5-9041-fd8d0a32c13b&amp;lt;/systemId&amp;gt;&amp;lt;validTo&amp;gt;2020-11-07T20:59:59.000Z&amp;lt;/validTo&amp;gt;&amp;lt;usersCount&amp;gt;100&amp;lt;/usersCount&amp;gt;&amp;lt;/licenseInformation&amp;gt;&amp;lt;signature&amp;gt;MEQCIDyHJwCnp7iLDSAllrcjVya+ukW6Ov1dJJiSXd8HIowBAiB8cEBnjhm3up1ui2pjp9oqx6GzxOfRCBG0EddiIqCIqA==&amp;lt;/signature&amp;gt;&amp;lt;/licenseInformationWithSignature&amp;gt;&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_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;
&lt;br /&gt;
=PCIS Internal и External=&lt;br /&gt;
==Для PCIS версии ниже, чем 3.7==&lt;br /&gt;
Этот пункт следует выполнять только в случае, если основной сервер PCS имеет версию 3.5, а серверы PCIS имеют версию ниже 3.7 - [[Обновление PCIS до версии 3.7|Обновление PCIS до версии 3.7]]&lt;br /&gt;
&lt;br /&gt;
==Обновление PCIS External(PC External)==&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для обновления необходимо заменить на серверах файл модуля PC External в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]. &lt;br /&gt;
&lt;br /&gt;
Он имеет название вида:&lt;br /&gt;
* PayControl-interaction-rest-3.x.x.war - PC External.&lt;br /&gt;
Перед заменой файлов [[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|остановите Wildfly]].&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;
==Переход с PCIS Internal на PC Pusher==&lt;br /&gt;
===Замена файлов модулей===&lt;br /&gt;
{{Предупреждение|PC Pusher для своей работы не требует использования БД, в отличие от PCIS Internal.}}&lt;br /&gt;
&lt;br /&gt;
Для обновления необходимо заменить на сервере файлы модуля PCIS Internal в директории deployments сервера приложений Wildfly. Файл имеют названия вида:&lt;br /&gt;
&lt;br /&gt;
*PayControl-interaction-module-3.x.xxx.ear - PCIS Internal&lt;br /&gt;
&lt;br /&gt;
Перед заменой файлов [[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|остановите Wildfly]].&lt;br /&gt;
Файлы сервера предыдущей версии настоятельно рекомендуем сохранить для возможности отката на предыдущую версию.&lt;br /&gt;
&lt;br /&gt;
*Новый файл имеет название вида: pc-pusher-5.5.xxx.war&lt;br /&gt;
&lt;br /&gt;
После замены файлов и развёртывания новых, в директории deployments будут созданы файлы с названиями:&lt;br /&gt;
&lt;br /&gt;
*.undeployed, где вместо * будет указано название убранного из директории файла модуля сервера. Файлы с расширением undeployed рекомендуется удалить.&lt;br /&gt;
*и с расширением *.deployed, где вместо * будут указаны названия новых модулей.&lt;br /&gt;
При появлении файлов с расширением *.failed, необходимо [[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|перезапустить Wildfly]].&lt;br /&gt;
===Настройка PC Server для работы с PC Pusher===&lt;br /&gt;
После замены PCIS Internal на PC Pusher &#039;&#039;&#039;необходимо&#039;&#039;&#039; заменить его адрес в БД 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]://pcphost:port/pc-pusher-api/&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее, &#039;&#039;&#039;необходимо&#039;&#039;&#039; предоставить доступ PC Pusher для отправки данных пушей в сервис HMS (Huawei Mobile Services).&lt;br /&gt;
При отправке push-сообщений, запросы должны отправляются по адресу https://push-api.cloud.huawei.com/ ,порт 443.&lt;br /&gt;
&lt;br /&gt;
Также, с сервера PC Pusher &#039;&#039;&#039;должен&#039;&#039;&#039; быть доступен адрес: https://oauth-login.cloud.huawei.com/oauth2/v3/token&lt;br /&gt;
&lt;br /&gt;
В случае, если PC Pusher находится на одном сервере с PC External, то &#039;&#039;&#039;необходимо&#039;&#039;&#039; перенастроить правила URL-фильтрации.&lt;br /&gt;
&lt;br /&gt;
===Настройка PC Pusher===&lt;br /&gt;
Если для подтверждения транзакций используется приложение PayControl, то данная настройка не требуется.&lt;br /&gt;
&lt;br /&gt;
По умолчанию, если app/bundle id для отправки пуш-уведомлений явно не указан для устройства, PCS 3.9 отправляет пуши в приложение PayControl Classic.&lt;br /&gt;
&lt;br /&gt;
Для отправки пушей в другое приложения необходимо:&lt;br /&gt;
# Произвести настройки аутентификационных данных &amp;quot;другого&amp;quot; мобильного приложения в соответствии с [[PC_Pusher_5.2|этой статьей]]&lt;br /&gt;
# Прописать app/bundle id необходимого приложения в БД PCS(после выполнения запроса необходимо перезапустить Wildfly):&lt;br /&gt;
Пример: &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;APP_ID_FOR_PUSHER&#039;, &#039;{&amp;quot;Android&amp;quot;:&amp;quot;com.example.mobile.app&amp;quot;,&amp;quot;iOS&amp;quot;:&amp;quot;com.example.apple.app&amp;quot;,&amp;quot;Huawei&amp;quot;:&amp;quot;com.example.apple.app&amp;quot;}&#039;);&amp;lt;/syntaxhighlight&amp;gt;&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;APP_ID_FOR_PUSHER&#039;, &#039;{&amp;quot;Android&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;iOS&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;Huawei&amp;quot;:&amp;quot;your_appid&amp;quot;}&#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;APP_ID_FOR_PUSHER&#039;, &#039;{&amp;quot;Android&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;iOS&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;Huawei&amp;quot;:&amp;quot;your_appid&amp;quot;}&#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;APP_ID_FOR_PUSHER&#039;, &#039;{&amp;quot;Android&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;iOS&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;Huawei&amp;quot;:&amp;quot;your_appid&amp;quot;}&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Завершение обновления =&lt;br /&gt;
После выполнения вышеизложенных пунктов нужно [[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|запустить wildfly]].&lt;br /&gt;
&lt;br /&gt;
==Правка последовательностей MS SQL==&lt;br /&gt;
&lt;br /&gt;
Данный пункт нужно выполнить в том случае, если в вашей БД нет последовательностей\сиквенсов, описанных ниже, а вместо них используются таблицы.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
* Мы хотим создать сиквенс PC_ATTEMPT_SEQ&lt;br /&gt;
* Для этого идем в таблицу PC_ATTEMPT_SEQ&lt;br /&gt;
* Берем оттуда последнее значение id&lt;br /&gt;
* Добавляем в запрос на создание сиквенса вместо знака вопроса&lt;br /&gt;
* Переименовываем старую таблицу PC_ATTEMPT_SEQ&lt;br /&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;
sp_rename PC_ATTEMPT_SEQ, PC_ATTEMPT_SEQ_OLD;&lt;br /&gt;
sp_rename PC_DELAYEDKEYINFO_SEQ, PC_DELAYEDKEYINFO_SEQ_OLD;&lt;br /&gt;
sp_rename PC_DEVICE_SEQ, PC_DEVICE_SEQ_OLD;&lt;br /&gt;
sp_rename PC_KEYINFO_SEQ, PC_KEYINFO_SEQ_OLD;&lt;br /&gt;
sp_rename PC_PUBLICKEY_SEQ, PC_PUBLICKEY_SEQ_OLD;&lt;br /&gt;
sp_rename PC_SETTING_SEQ, PC_SETTING_SEQ_OLD;&lt;br /&gt;
sp_rename PC_EVENT_SEQ, PC_EVENT_SEQ_OLD;&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;
Знаки вопроса нужно заменить на последний id в таблице-сиквенсе с тем же названием.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
create sequence PC_ATTEMPT_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_DELAYEDKEYINFO_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_DEVICE_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_KEYINFO_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_PUBLICKEY_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_SETTING_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_EVENT_SEQ start with ? increment by 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Удаление ненужных полей ==&lt;br /&gt;
&#039;&#039;&#039;Если&#039;&#039;&#039; у вас всё обновилось и &#039;&#039;&#039;точно&#039;&#039;&#039; работает, можно удалить не нужные поля от предыдущей версии, они больше не нужны, или перенесены.&lt;br /&gt;
&lt;br /&gt;
Удалить не используемые столбцы можно с помощью запросов:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE pc_system &lt;br /&gt;
DROP COLUMN IF EXISTS internal_cert_fingerprint,&lt;br /&gt;
DROP COLUMN IF EXISTS key_container,&lt;br /&gt;
DROP COLUMN IF EXISTS key_password,&lt;br /&gt;
DROP COLUMN IF EXISTS additional_key_options,&lt;br /&gt;
DROP COLUMN IF EXISTS key_type,&lt;br /&gt;
DROP COLUMN IF EXISTS system_type,&lt;br /&gt;
DROP COLUMN IF EXISTS billed_date_request,&lt;br /&gt;
DROP COLUMN IF EXISTS billing_period,&lt;br /&gt;
DROP COLUMN IF EXISTS billed_date,&lt;br /&gt;
DROP COLUMN IF EXISTS billing_type,&lt;br /&gt;
DROP COLUMN IF EXISTS description,&lt;br /&gt;
DROP COLUMN IF EXISTS front_end_url,&lt;br /&gt;
DROP COLUMN IF EXISTS license,&lt;br /&gt;
DROP COLUMN IF EXISTS online_confirmation_url,&lt;br /&gt;
DROP COLUMN IF EXISTS register_request,&lt;br /&gt;
DROP COLUMN IF EXISTS report_template_path,&lt;br /&gt;
DROP COLUMN IF EXISTS user_keys_expiration_period;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_keyinfo DROP COLUMN IF EXISTS need_to_use_fingerprint;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo DROP COLUMN IF EXISTS need_to_use_fingerprint;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Проверка доступности сервисов =&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
* PC Server:&lt;br /&gt;
&amp;lt;code&amp;gt;http://&amp;lt;host&amp;gt;:8080/ws/PayControlServiceV3?wsdl&lt;br /&gt;
&lt;br /&gt;
http://&amp;lt;host&amp;gt;:8080/ws/PayControlReportService?wsdl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* PC Pusher:&lt;br /&gt;
&amp;lt;code&amp;gt;http://&amp;lt;host&amp;gt;:8080/pc-pusher-api/health_check&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* PC External(при запросе на этот адрес должно возвратиться «Not Found»):&lt;br /&gt;
&amp;lt;code&amp;gt;http[s]://&amp;lt;host&amp;gt;:8080/PayControl-interaction-rest/&amp;lt;/code&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;
*При замене файлов необходимо проверить, что в директории &#039;&#039;deployments&#039;&#039; отсутствуют файлы с расширением undeployed.&lt;br /&gt;
*Восстановить БД PCS и PCIS Internal из резервной копии.&lt;br /&gt;
*Также нужно вернуть [[Обновление_PCIS_до_версии_3.7#Дополнительно, только для версии 3.5 | параметр]], отвечающий за работу PCS 3.5 с PCIS 3.7.&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_3.5_%D0%BD%D0%B0_3.9&amp;diff=818</id>
		<title>Обновление PayControl с 3.5 на 3.9</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_3.5_%D0%BD%D0%B0_3.9&amp;diff=818"/>
		<updated>2024-06-25T13:52:53Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Удаление ненужных полей */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В версии 3.8 реализовано взаимодействие с [[PC Pusher 5.2|PC Pusher 5.x]], который, в свою очередь, поддерживает отправку пуш-уведомлений на устройства Huawei. Обновлению с 3.5-3.7 подлежат модули PCS и PC External.&lt;br /&gt;
&lt;br /&gt;
{{Предупреждение|Модуль PCIS Internal 3.5-3.7 подлежит замене на модуль PC Pusher 5.5. PCS с версии 3.8 не поддерживает работу с модулем PCIS Internal.}}&lt;br /&gt;
&lt;br /&gt;
В версии 3.9 добавлена функциональность формирования имитовставки, для соответствия п.5.1 Положения Банка России от 17 апреля 2019 года N 683-П:&lt;br /&gt;
&lt;br /&gt;
    В целях обеспечения целостности электронных сообщений и подтверждения их составления уполномоченным на это лицом кредитные организации должны обеспечивать реализацию мер по использованию усиленной квалифицированной электронной подписи, усиленной неквалифицированной электронной подписи или СКЗИ, реализующих функцию имитозащиты информации с аутентификацией отправителя сообщения.&lt;br /&gt;
&lt;br /&gt;
Модули сервера доступны по ссылкам:&lt;br /&gt;
* PC Server (https://repo.paycontrol.org/server/maven/tech/paycon/server/PayControl-services-module/), версия 3.9.xxx;&lt;br /&gt;
* PC External (https://repo.paycontrol.org/server/maven/tech/paycon/server/PayControl-interaction-rest/), версия 3.9.xxx;&lt;br /&gt;
* PC Pusher (https://repo.paycontrol.org/server/maven/tech/paycon/server/pc-pusher/), версия 5.5.xxx.&lt;br /&gt;
&lt;br /&gt;
Если при обновлении сервера также необходимо обновить Wildfly, то перед обновлением &#039;&#039;&#039;необходимо&#039;&#039;&#039; остановить службу, убрать её из автозапуска.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC требуется обновить Java до версии 11. Версия 8 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и [[Wildfly]] может продолжить работать на версии 8, что приведёт к ошибкам. Для того чтобы компоненты работали под Java 11, необходимо либо удалить неактуальную версию 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;
=Обновление компонентов PCS= &lt;br /&gt;
Для обновления нужно заменить файл приложения сервера &amp;lt;WF_PATH&amp;gt;\standalone\deployments\ на новый:&lt;br /&gt;
* на PCS - файл &#039;&#039;PayControl-services-module-&amp;lt;VERSION&amp;gt;.ear&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|Остановите wildfly]].&lt;br /&gt;
&lt;br /&gt;
==Отключение поддержки совместимости с PCS 3.5==&lt;br /&gt;
Для отключения в модуле PCIS External 3.7 режима совместимости с сервером версии 3.5 необходимо убрать из окружения Java параметр &amp;lt;code&amp;gt;paycontrol.pcsVersion&amp;lt;/code&amp;gt; со значением &amp;lt;code&amp;gt;3.5&amp;lt;/code&amp;gt;. Это можно сделать следующим образом:&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.pcsVersion=3.5&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.pcsVersion=3.5&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Изменения в БД==&lt;br /&gt;
*Для переноса параметров из pc_system в pc_system_params, что необходимо, при обновлении, нужно выполнить запрос:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
INSERT INTO pc_system_params (systemid, created_at, is_deleted, updated_at, billed_date_request, billing_period, billed_date, billing_type, description, front_end_url, license, online_confirmation_url, register_request, report_template_path, user_keys_expiration_period)&lt;br /&gt;
SELECT systemid, created_at, is_deleted, updated_at, billed_date_request, billing_period, billed_date, billing_type, description, front_end_url, license, online_confirmation_url, register_request, report_template_path, user_keys_expiration_period&lt;br /&gt;
FROM pc_system;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Чтобы поправить настройки пользователей нужно выполнить запрос:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_keyinfo set key_flags=0 where need_to_use_fingerprint=0;&lt;br /&gt;
update pc_keyinfo set key_flags=1 where need_to_use_fingerprint=1;&lt;br /&gt;
update pc_delayedkeyinfo set key_flags=0 where need_to_use_fingerprint=0;&lt;br /&gt;
update pc_delayedkeyinfo set key_flags=1 where need_to_use_fingerprint=1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Запрос на регистрацию==&lt;br /&gt;
===Получение нового запроса===&lt;br /&gt;
Для получения нового запроса на регистрацию нужно выполнить запрос к БД PCS&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
select * from pc_system;&lt;br /&gt;
&amp;lt;/code&amp;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;
&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;
Для получения обновленной лицензии нужно выполнить запрос к БД PCS&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
select * from pc_system;&lt;br /&gt;
&amp;lt;/code&amp;gt;, и обратиться с результатами запроса в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
===Замена лицензии в БД===&lt;br /&gt;
*На сервере PC Server, удалите файл(*.paycontrol.license) с лицензией, если такой есть.&lt;br /&gt;
*Выполните к БД PC Server запрос:&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; на реальные данные лицензии(*.paycontrol.license), созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных лицензии&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;licenseInformationWithSignature xmlns=&amp;quot;http://ws.safetech.ru/PayControl/services/ws/request/&amp;quot;&amp;gt;&amp;lt;licenseInformation&amp;gt;&amp;lt;systemId&amp;gt;48000c91-dd4a-47d5-9041-fd8d0a32c13b&amp;lt;/systemId&amp;gt;&amp;lt;validTo&amp;gt;2020-11-07T20:59:59.000Z&amp;lt;/validTo&amp;gt;&amp;lt;usersCount&amp;gt;100&amp;lt;/usersCount&amp;gt;&amp;lt;/licenseInformation&amp;gt;&amp;lt;signature&amp;gt;MEQCIDyHJwCnp7iLDSAllrcjVya+ukW6Ov1dJJiSXd8HIowBAiB8cEBnjhm3up1ui2pjp9oqx6GzxOfRCBG0EddiIqCIqA==&amp;lt;/signature&amp;gt;&amp;lt;/licenseInformationWithSignature&amp;gt;&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_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;
&lt;br /&gt;
=PCIS Internal и External=&lt;br /&gt;
==Для PCIS версии ниже, чем 3.7==&lt;br /&gt;
Этот пункт следует выполнять только в случае, если основной сервер PCS имеет версию 3.5, а серверы PCIS имеют версию ниже 3.7 - [[Обновление PCIS до версии 3.7|Обновление PCIS до версии 3.7]]&lt;br /&gt;
&lt;br /&gt;
==Обновление PCIS External(PC External)==&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для обновления необходимо заменить на серверах файл модуля PC External в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]. &lt;br /&gt;
&lt;br /&gt;
Он имеет название вида:&lt;br /&gt;
* PayControl-interaction-rest-3.x.x.war - PC External.&lt;br /&gt;
Перед заменой файлов [[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|остановите Wildfly]].&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;
==Переход с PCIS Internal на PC Pusher==&lt;br /&gt;
===Замена файлов модулей===&lt;br /&gt;
{{Предупреждение|PC Pusher для своей работы не требует использования БД, в отличие от PCIS Internal.}}&lt;br /&gt;
&lt;br /&gt;
Для обновления необходимо заменить на сервере файлы модуля PCIS Internal в директории deployments сервера приложений Wildfly. Файл имеют названия вида:&lt;br /&gt;
&lt;br /&gt;
*PayControl-interaction-module-3.x.xxx.ear - PCIS Internal&lt;br /&gt;
&lt;br /&gt;
Перед заменой файлов [[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|остановите Wildfly]].&lt;br /&gt;
Файлы сервера предыдущей версии настоятельно рекомендуем сохранить для возможности отката на предыдущую версию.&lt;br /&gt;
&lt;br /&gt;
*Новый файл имеет название вида: pc-pusher-5.5.xxx.war&lt;br /&gt;
&lt;br /&gt;
После замены файлов и развёртывания новых, в директории deployments будут созданы файлы с названиями:&lt;br /&gt;
&lt;br /&gt;
*.undeployed, где вместо * будет указано название убранного из директории файла модуля сервера. Файлы с расширением undeployed рекомендуется удалить.&lt;br /&gt;
*и с расширением *.deployed, где вместо * будут указаны названия новых модулей.&lt;br /&gt;
При появлении файлов с расширением *.failed, необходимо [[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|перезапустить Wildfly]].&lt;br /&gt;
===Настройка PC Server для работы с PC Pusher===&lt;br /&gt;
После замены PCIS Internal на PC Pusher &#039;&#039;&#039;необходимо&#039;&#039;&#039; заменить его адрес в БД 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]://pcphost:port/pc-pusher-api/&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее, &#039;&#039;&#039;необходимо&#039;&#039;&#039; предоставить доступ PC Pusher для отправки данных пушей в сервис HMS (Huawei Mobile Services).&lt;br /&gt;
При отправке push-сообщений, запросы должны отправляются по адресу https://push-api.cloud.huawei.com/ ,порт 443.&lt;br /&gt;
&lt;br /&gt;
Также, с сервера PC Pusher &#039;&#039;&#039;должен&#039;&#039;&#039; быть доступен адрес: https://oauth-login.cloud.huawei.com/oauth2/v3/token&lt;br /&gt;
&lt;br /&gt;
В случае, если PC Pusher находится на одном сервере с PC External, то &#039;&#039;&#039;необходимо&#039;&#039;&#039; перенастроить правила URL-фильтрации.&lt;br /&gt;
&lt;br /&gt;
===Настройка PC Pusher===&lt;br /&gt;
Если для подтверждения транзакций используется приложение PayControl, то данная настройка не требуется.&lt;br /&gt;
&lt;br /&gt;
По умолчанию, если app/bundle id для отправки пуш-уведомлений явно не указан для устройства, PCS 3.9 отправляет пуши в приложение PayControl Classic.&lt;br /&gt;
&lt;br /&gt;
Для отправки пушей в другое приложения необходимо:&lt;br /&gt;
# Произвести настройки аутентификационных данных &amp;quot;другого&amp;quot; мобильного приложения в соответствии с [[PC_Pusher_5.2|этой статьей]]&lt;br /&gt;
# Прописать app/bundle id необходимого приложения в БД PCS(после выполнения запроса необходимо перезапустить Wildfly):&lt;br /&gt;
Пример: &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;APP_ID_FOR_PUSHER&#039;, &#039;{&amp;quot;Android&amp;quot;:&amp;quot;com.example.mobile.app&amp;quot;,&amp;quot;iOS&amp;quot;:&amp;quot;com.example.apple.app&amp;quot;,&amp;quot;Huawei&amp;quot;:&amp;quot;com.example.apple.app&amp;quot;}&#039;);&amp;lt;/syntaxhighlight&amp;gt;&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;APP_ID_FOR_PUSHER&#039;, &#039;{&amp;quot;Android&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;iOS&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;Huawei&amp;quot;:&amp;quot;your_appid&amp;quot;}&#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;APP_ID_FOR_PUSHER&#039;, &#039;{&amp;quot;Android&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;iOS&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;Huawei&amp;quot;:&amp;quot;your_appid&amp;quot;}&#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;APP_ID_FOR_PUSHER&#039;, &#039;{&amp;quot;Android&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;iOS&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;Huawei&amp;quot;:&amp;quot;your_appid&amp;quot;}&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Завершение обновления =&lt;br /&gt;
После выполнения вышеизложенных пунктов нужно [[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|запустить wildfly]].&lt;br /&gt;
&lt;br /&gt;
==Правка последовательностей MS SQL==&lt;br /&gt;
&lt;br /&gt;
Данный пункт нужно выполнить в том случае, если в вашей БД нет последовательностей\сиквенсов, описанных ниже, а вместо них используются таблицы.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
* Мы хотим создать сиквенс PC_ATTEMPT_SEQ&lt;br /&gt;
* Для этого идем в таблицу PC_ATTEMPT_SEQ&lt;br /&gt;
* Берем оттуда последнее значение id&lt;br /&gt;
* Добавляем в запрос на создание сиквенса вместо знака вопроса&lt;br /&gt;
* Переименовываем старую таблицу PC_ATTEMPT_SEQ&lt;br /&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;
sp_rename PC_ATTEMPT_SEQ, PC_ATTEMPT_SEQ_OLD;&lt;br /&gt;
sp_rename PC_DELAYEDKEYINFO_SEQ, PC_DELAYEDKEYINFO_SEQ_OLD;&lt;br /&gt;
sp_rename PC_DEVICE_SEQ, PC_DEVICE_SEQ_OLD;&lt;br /&gt;
sp_rename PC_KEYINFO_SEQ, PC_KEYINFO_SEQ_OLD;&lt;br /&gt;
sp_rename PC_PUBLICKEY_SEQ, PC_PUBLICKEY_SEQ_OLD;&lt;br /&gt;
sp_rename PC_SETTING_SEQ, PC_SETTING_SEQ_OLD;&lt;br /&gt;
sp_rename PC_EVENT_SEQ, PC_EVENT_SEQ_OLD;&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;
Знаки вопроса нужно заменить на последний id в таблице-сиквенсе с тем же названием.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
create sequence PC_ATTEMPT_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_DELAYEDKEYINFO_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_DEVICE_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_KEYINFO_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_PUBLICKEY_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_SETTING_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_EVENT_SEQ start with ? increment by 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Удаление ненужных полей ==&lt;br /&gt;
&#039;&#039;&#039;Если&#039;&#039;&#039; у вас всё обновилось и &#039;&#039;&#039;точно&#039;&#039;&#039; работает, можно удалить не нужные поля от предыдущей версии, они больше не нужны, или перенесены.&lt;br /&gt;
&lt;br /&gt;
Удалить не используемые столбцы можно с помощью запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE pc_system &lt;br /&gt;
DROP COLUMN IF EXISTS internal_cert_fingerprint,&lt;br /&gt;
DROP COLUMN IF EXISTS key_container,&lt;br /&gt;
DROP COLUMN IF EXISTS key_password,&lt;br /&gt;
DROP COLUMN IF EXISTS additional_key_options,&lt;br /&gt;
DROP COLUMN IF EXISTS key_type,&lt;br /&gt;
DROP COLUMN IF EXISTS system_type,&lt;br /&gt;
DROP COLUMN IF EXISTS billed_date_request,&lt;br /&gt;
DROP COLUMN IF EXISTS billing_period,&lt;br /&gt;
DROP COLUMN IF EXISTS billed_date,&lt;br /&gt;
DROP COLUMN IF EXISTS billing_type,&lt;br /&gt;
DROP COLUMN IF EXISTS description,&lt;br /&gt;
DROP COLUMN IF EXISTS front_end_url,&lt;br /&gt;
DROP COLUMN IF EXISTS license,&lt;br /&gt;
DROP COLUMN IF EXISTS online_confirmation_url,&lt;br /&gt;
DROP COLUMN IF EXISTS register_request,&lt;br /&gt;
DROP COLUMN IF EXISTS report_template_path,&lt;br /&gt;
DROP COLUMN IF EXISTS user_keys_expiration_period;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_keyinfo DROP COLUMN IF EXISTS need_to_use_fingerprint;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE pc_delayedkeyinfo DROP COLUMN IF EXISTS need_to_use_fingerprint;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Проверка доступности сервисов =&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
* PC Server:&lt;br /&gt;
&amp;lt;code&amp;gt;http://&amp;lt;host&amp;gt;:8080/ws/PayControlServiceV3?wsdl&lt;br /&gt;
&lt;br /&gt;
http://&amp;lt;host&amp;gt;:8080/ws/PayControlReportService?wsdl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* PC Pusher:&lt;br /&gt;
&amp;lt;code&amp;gt;http://&amp;lt;host&amp;gt;:8080/pc-pusher-api/health_check&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* PC External(при запросе на этот адрес должно возвратиться «Not Found»):&lt;br /&gt;
&amp;lt;code&amp;gt;http[s]://&amp;lt;host&amp;gt;:8080/PayControl-interaction-rest/&amp;lt;/code&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;
*При замене файлов необходимо проверить, что в директории &#039;&#039;deployments&#039;&#039; отсутствуют файлы с расширением undeployed.&lt;br /&gt;
*Восстановить БД PCS и PCIS Internal из резервной копии.&lt;br /&gt;
*Также нужно вернуть [[Обновление_PCIS_до_версии_3.7#Дополнительно, только для версии 3.5 | параметр]], отвечающий за работу PCS 3.5 с PCIS 3.7.&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_3.5_%D0%BD%D0%B0_3.9&amp;diff=817</id>
		<title>Обновление PayControl с 3.5 на 3.9</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_3.5_%D0%BD%D0%B0_3.9&amp;diff=817"/>
		<updated>2024-06-25T13:45:37Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Изменения в БД */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В версии 3.8 реализовано взаимодействие с [[PC Pusher 5.2|PC Pusher 5.x]], который, в свою очередь, поддерживает отправку пуш-уведомлений на устройства Huawei. Обновлению с 3.5-3.7 подлежат модули PCS и PC External.&lt;br /&gt;
&lt;br /&gt;
{{Предупреждение|Модуль PCIS Internal 3.5-3.7 подлежит замене на модуль PC Pusher 5.5. PCS с версии 3.8 не поддерживает работу с модулем PCIS Internal.}}&lt;br /&gt;
&lt;br /&gt;
В версии 3.9 добавлена функциональность формирования имитовставки, для соответствия п.5.1 Положения Банка России от 17 апреля 2019 года N 683-П:&lt;br /&gt;
&lt;br /&gt;
    В целях обеспечения целостности электронных сообщений и подтверждения их составления уполномоченным на это лицом кредитные организации должны обеспечивать реализацию мер по использованию усиленной квалифицированной электронной подписи, усиленной неквалифицированной электронной подписи или СКЗИ, реализующих функцию имитозащиты информации с аутентификацией отправителя сообщения.&lt;br /&gt;
&lt;br /&gt;
Модули сервера доступны по ссылкам:&lt;br /&gt;
* PC Server (https://repo.paycontrol.org/server/maven/tech/paycon/server/PayControl-services-module/), версия 3.9.xxx;&lt;br /&gt;
* PC External (https://repo.paycontrol.org/server/maven/tech/paycon/server/PayControl-interaction-rest/), версия 3.9.xxx;&lt;br /&gt;
* PC Pusher (https://repo.paycontrol.org/server/maven/tech/paycon/server/pc-pusher/), версия 5.5.xxx.&lt;br /&gt;
&lt;br /&gt;
Если при обновлении сервера также необходимо обновить Wildfly, то перед обновлением &#039;&#039;&#039;необходимо&#039;&#039;&#039; остановить службу, убрать её из автозапуска.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC требуется обновить Java до версии 11. Версия 8 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и [[Wildfly]] может продолжить работать на версии 8, что приведёт к ошибкам. Для того чтобы компоненты работали под Java 11, необходимо либо удалить неактуальную версию 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;
=Обновление компонентов PCS= &lt;br /&gt;
Для обновления нужно заменить файл приложения сервера &amp;lt;WF_PATH&amp;gt;\standalone\deployments\ на новый:&lt;br /&gt;
* на PCS - файл &#039;&#039;PayControl-services-module-&amp;lt;VERSION&amp;gt;.ear&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|Остановите wildfly]].&lt;br /&gt;
&lt;br /&gt;
==Отключение поддержки совместимости с PCS 3.5==&lt;br /&gt;
Для отключения в модуле PCIS External 3.7 режима совместимости с сервером версии 3.5 необходимо убрать из окружения Java параметр &amp;lt;code&amp;gt;paycontrol.pcsVersion&amp;lt;/code&amp;gt; со значением &amp;lt;code&amp;gt;3.5&amp;lt;/code&amp;gt;. Это можно сделать следующим образом:&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.pcsVersion=3.5&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.pcsVersion=3.5&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Изменения в БД==&lt;br /&gt;
*Для переноса параметров из pc_system в pc_system_params, что необходимо, при обновлении, нужно выполнить запрос:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
INSERT INTO pc_system_params (systemid, created_at, is_deleted, updated_at, billed_date_request, billing_period, billed_date, billing_type, description, front_end_url, license, online_confirmation_url, register_request, report_template_path, user_keys_expiration_period)&lt;br /&gt;
SELECT systemid, created_at, is_deleted, updated_at, billed_date_request, billing_period, billed_date, billing_type, description, front_end_url, license, online_confirmation_url, register_request, report_template_path, user_keys_expiration_period&lt;br /&gt;
FROM pc_system;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Чтобы поправить настройки пользователей нужно выполнить запрос:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_keyinfo set key_flags=0 where need_to_use_fingerprint=0;&lt;br /&gt;
update pc_keyinfo set key_flags=1 where need_to_use_fingerprint=1;&lt;br /&gt;
update pc_delayedkeyinfo set key_flags=0 where need_to_use_fingerprint=0;&lt;br /&gt;
update pc_delayedkeyinfo set key_flags=1 where need_to_use_fingerprint=1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Запрос на регистрацию==&lt;br /&gt;
===Получение нового запроса===&lt;br /&gt;
Для получения нового запроса на регистрацию нужно выполнить запрос к БД PCS&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
select * from pc_system;&lt;br /&gt;
&amp;lt;/code&amp;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;
&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;
Для получения обновленной лицензии нужно выполнить запрос к БД PCS&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
select * from pc_system;&lt;br /&gt;
&amp;lt;/code&amp;gt;, и обратиться с результатами запроса в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
===Замена лицензии в БД===&lt;br /&gt;
*На сервере PC Server, удалите файл(*.paycontrol.license) с лицензией, если такой есть.&lt;br /&gt;
*Выполните к БД PC Server запрос:&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; на реальные данные лицензии(*.paycontrol.license), созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных лицензии&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;licenseInformationWithSignature xmlns=&amp;quot;http://ws.safetech.ru/PayControl/services/ws/request/&amp;quot;&amp;gt;&amp;lt;licenseInformation&amp;gt;&amp;lt;systemId&amp;gt;48000c91-dd4a-47d5-9041-fd8d0a32c13b&amp;lt;/systemId&amp;gt;&amp;lt;validTo&amp;gt;2020-11-07T20:59:59.000Z&amp;lt;/validTo&amp;gt;&amp;lt;usersCount&amp;gt;100&amp;lt;/usersCount&amp;gt;&amp;lt;/licenseInformation&amp;gt;&amp;lt;signature&amp;gt;MEQCIDyHJwCnp7iLDSAllrcjVya+ukW6Ov1dJJiSXd8HIowBAiB8cEBnjhm3up1ui2pjp9oqx6GzxOfRCBG0EddiIqCIqA==&amp;lt;/signature&amp;gt;&amp;lt;/licenseInformationWithSignature&amp;gt;&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_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;
&lt;br /&gt;
=PCIS Internal и External=&lt;br /&gt;
==Для PCIS версии ниже, чем 3.7==&lt;br /&gt;
Этот пункт следует выполнять только в случае, если основной сервер PCS имеет версию 3.5, а серверы PCIS имеют версию ниже 3.7 - [[Обновление PCIS до версии 3.7|Обновление PCIS до версии 3.7]]&lt;br /&gt;
&lt;br /&gt;
==Обновление PCIS External(PC External)==&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для обновления необходимо заменить на серверах файл модуля PC External в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]. &lt;br /&gt;
&lt;br /&gt;
Он имеет название вида:&lt;br /&gt;
* PayControl-interaction-rest-3.x.x.war - PC External.&lt;br /&gt;
Перед заменой файлов [[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|остановите Wildfly]].&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;
==Переход с PCIS Internal на PC Pusher==&lt;br /&gt;
===Замена файлов модулей===&lt;br /&gt;
{{Предупреждение|PC Pusher для своей работы не требует использования БД, в отличие от PCIS Internal.}}&lt;br /&gt;
&lt;br /&gt;
Для обновления необходимо заменить на сервере файлы модуля PCIS Internal в директории deployments сервера приложений Wildfly. Файл имеют названия вида:&lt;br /&gt;
&lt;br /&gt;
*PayControl-interaction-module-3.x.xxx.ear - PCIS Internal&lt;br /&gt;
&lt;br /&gt;
Перед заменой файлов [[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|остановите Wildfly]].&lt;br /&gt;
Файлы сервера предыдущей версии настоятельно рекомендуем сохранить для возможности отката на предыдущую версию.&lt;br /&gt;
&lt;br /&gt;
*Новый файл имеет название вида: pc-pusher-5.5.xxx.war&lt;br /&gt;
&lt;br /&gt;
После замены файлов и развёртывания новых, в директории deployments будут созданы файлы с названиями:&lt;br /&gt;
&lt;br /&gt;
*.undeployed, где вместо * будет указано название убранного из директории файла модуля сервера. Файлы с расширением undeployed рекомендуется удалить.&lt;br /&gt;
*и с расширением *.deployed, где вместо * будут указаны названия новых модулей.&lt;br /&gt;
При появлении файлов с расширением *.failed, необходимо [[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|перезапустить Wildfly]].&lt;br /&gt;
===Настройка PC Server для работы с PC Pusher===&lt;br /&gt;
После замены PCIS Internal на PC Pusher &#039;&#039;&#039;необходимо&#039;&#039;&#039; заменить его адрес в БД 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]://pcphost:port/pc-pusher-api/&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее, &#039;&#039;&#039;необходимо&#039;&#039;&#039; предоставить доступ PC Pusher для отправки данных пушей в сервис HMS (Huawei Mobile Services).&lt;br /&gt;
При отправке push-сообщений, запросы должны отправляются по адресу https://push-api.cloud.huawei.com/ ,порт 443.&lt;br /&gt;
&lt;br /&gt;
Также, с сервера PC Pusher &#039;&#039;&#039;должен&#039;&#039;&#039; быть доступен адрес: https://oauth-login.cloud.huawei.com/oauth2/v3/token&lt;br /&gt;
&lt;br /&gt;
В случае, если PC Pusher находится на одном сервере с PC External, то &#039;&#039;&#039;необходимо&#039;&#039;&#039; перенастроить правила URL-фильтрации.&lt;br /&gt;
&lt;br /&gt;
===Настройка PC Pusher===&lt;br /&gt;
Если для подтверждения транзакций используется приложение PayControl, то данная настройка не требуется.&lt;br /&gt;
&lt;br /&gt;
По умолчанию, если app/bundle id для отправки пуш-уведомлений явно не указан для устройства, PCS 3.9 отправляет пуши в приложение PayControl Classic.&lt;br /&gt;
&lt;br /&gt;
Для отправки пушей в другое приложения необходимо:&lt;br /&gt;
# Произвести настройки аутентификационных данных &amp;quot;другого&amp;quot; мобильного приложения в соответствии с [[PC_Pusher_5.2|этой статьей]]&lt;br /&gt;
# Прописать app/bundle id необходимого приложения в БД PCS(после выполнения запроса необходимо перезапустить Wildfly):&lt;br /&gt;
Пример: &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;APP_ID_FOR_PUSHER&#039;, &#039;{&amp;quot;Android&amp;quot;:&amp;quot;com.example.mobile.app&amp;quot;,&amp;quot;iOS&amp;quot;:&amp;quot;com.example.apple.app&amp;quot;,&amp;quot;Huawei&amp;quot;:&amp;quot;com.example.apple.app&amp;quot;}&#039;);&amp;lt;/syntaxhighlight&amp;gt;&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;APP_ID_FOR_PUSHER&#039;, &#039;{&amp;quot;Android&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;iOS&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;Huawei&amp;quot;:&amp;quot;your_appid&amp;quot;}&#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;APP_ID_FOR_PUSHER&#039;, &#039;{&amp;quot;Android&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;iOS&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;Huawei&amp;quot;:&amp;quot;your_appid&amp;quot;}&#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;APP_ID_FOR_PUSHER&#039;, &#039;{&amp;quot;Android&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;iOS&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;Huawei&amp;quot;:&amp;quot;your_appid&amp;quot;}&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Завершение обновления =&lt;br /&gt;
После выполнения вышеизложенных пунктов нужно [[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|запустить wildfly]].&lt;br /&gt;
&lt;br /&gt;
==Правка последовательностей MS SQL==&lt;br /&gt;
&lt;br /&gt;
Данный пункт нужно выполнить в том случае, если в вашей БД нет последовательностей\сиквенсов, описанных ниже, а вместо них используются таблицы.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
* Мы хотим создать сиквенс PC_ATTEMPT_SEQ&lt;br /&gt;
* Для этого идем в таблицу PC_ATTEMPT_SEQ&lt;br /&gt;
* Берем оттуда последнее значение id&lt;br /&gt;
* Добавляем в запрос на создание сиквенса вместо знака вопроса&lt;br /&gt;
* Переименовываем старую таблицу PC_ATTEMPT_SEQ&lt;br /&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;
sp_rename PC_ATTEMPT_SEQ, PC_ATTEMPT_SEQ_OLD;&lt;br /&gt;
sp_rename PC_DELAYEDKEYINFO_SEQ, PC_DELAYEDKEYINFO_SEQ_OLD;&lt;br /&gt;
sp_rename PC_DEVICE_SEQ, PC_DEVICE_SEQ_OLD;&lt;br /&gt;
sp_rename PC_KEYINFO_SEQ, PC_KEYINFO_SEQ_OLD;&lt;br /&gt;
sp_rename PC_PUBLICKEY_SEQ, PC_PUBLICKEY_SEQ_OLD;&lt;br /&gt;
sp_rename PC_SETTING_SEQ, PC_SETTING_SEQ_OLD;&lt;br /&gt;
sp_rename PC_EVENT_SEQ, PC_EVENT_SEQ_OLD;&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;
Знаки вопроса нужно заменить на последний id в таблице-сиквенсе с тем же названием.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
create sequence PC_ATTEMPT_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_DELAYEDKEYINFO_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_DEVICE_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_KEYINFO_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_PUBLICKEY_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_SETTING_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_EVENT_SEQ start with ? increment by 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Удаление ненужных полей ==&lt;br /&gt;
&#039;&#039;&#039;Если&#039;&#039;&#039; у вас всё обновилось и &#039;&#039;&#039;точно&#039;&#039;&#039; работает, можно удалить не нужные поля от предыдущей версии, они больше не нужны, или перенесены.&lt;br /&gt;
&lt;br /&gt;
Удалить не используемые столбцы можно с помощью запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE pc_system &lt;br /&gt;
DROP COLUMN IF EXISTS internal_cert_fingerprint,&lt;br /&gt;
DROP COLUMN IF EXISTS key_container,&lt;br /&gt;
DROP COLUMN IF EXISTS key_password,&lt;br /&gt;
DROP COLUMN IF EXISTS additional_key_options,&lt;br /&gt;
DROP COLUMN IF EXISTS key_type,&lt;br /&gt;
DROP COLUMN IF EXISTS system_type,&lt;br /&gt;
DROP COLUMN IF EXISTS billed_date_request,&lt;br /&gt;
DROP COLUMN IF EXISTS billing_period,&lt;br /&gt;
DROP COLUMN IF EXISTS billed_date,&lt;br /&gt;
DROP COLUMN IF EXISTS billing_type,&lt;br /&gt;
DROP COLUMN IF EXISTS description,&lt;br /&gt;
DROP COLUMN IF EXISTS front_end_url,&lt;br /&gt;
DROP COLUMN IF EXISTS license,&lt;br /&gt;
DROP COLUMN IF EXISTS online_confirmation_url,&lt;br /&gt;
DROP COLUMN IF EXISTS register_request,&lt;br /&gt;
DROP COLUMN IF EXISTS report_template_path,&lt;br /&gt;
DROP COLUMN IF EXISTS user_keys_expiration_period;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Проверка доступности сервисов =&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
* PC Server:&lt;br /&gt;
&amp;lt;code&amp;gt;http://&amp;lt;host&amp;gt;:8080/ws/PayControlServiceV3?wsdl&lt;br /&gt;
&lt;br /&gt;
http://&amp;lt;host&amp;gt;:8080/ws/PayControlReportService?wsdl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* PC Pusher:&lt;br /&gt;
&amp;lt;code&amp;gt;http://&amp;lt;host&amp;gt;:8080/pc-pusher-api/health_check&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* PC External(при запросе на этот адрес должно возвратиться «Not Found»):&lt;br /&gt;
&amp;lt;code&amp;gt;http[s]://&amp;lt;host&amp;gt;:8080/PayControl-interaction-rest/&amp;lt;/code&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;
*При замене файлов необходимо проверить, что в директории &#039;&#039;deployments&#039;&#039; отсутствуют файлы с расширением undeployed.&lt;br /&gt;
*Восстановить БД PCS и PCIS Internal из резервной копии.&lt;br /&gt;
*Также нужно вернуть [[Обновление_PCIS_до_версии_3.7#Дополнительно, только для версии 3.5 | параметр]], отвечающий за работу PCS 3.5 с PCIS 3.7.&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_5&amp;diff=816</id>
		<title>Обновление PayControl с версии 3 на версию 5</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_5&amp;diff=816"/>
		<updated>2024-06-06T15:21:41Z</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 требуется JDK 11.&lt;br /&gt;
&lt;br /&gt;
Версия Wildfly должна быть не выше 26.1.3.&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 5 изменены названия серверов:&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;
== Для PCIS версии ниже 3.7 ==&lt;br /&gt;
&lt;br /&gt;
Если версия PCS имеет версию 3.6, а серверы PCIS имеют версию ниже 3.7, то необходимо сначала произвести обновление до 3.7. Инструкция по обновлению доступна по [[PCWiki:Обновление PCIS до версии 3.7|ссылке]].&lt;br /&gt;
&lt;br /&gt;
== Обновление компонентов серверов ==&lt;br /&gt;
&lt;br /&gt;
Для обновления нужно [[Руководство_администратора_PayControl_v5#Запуск и остановка служб сервера PayControl|остановить сервис Wildfly]] и заменить файл приложения сервера &amp;lt;WF_PATH&amp;gt;\standalone\deployments\ на новый:&lt;br /&gt;
* на PCS - файл &#039;&#039;PayControl-services-module-&amp;lt;VERSION&amp;gt;.ear&#039;&#039; заменить на файл pc-server-&amp;lt;VERSION&amp;gt;.ear&lt;br /&gt;
* на PCIS Internal(PC Pusher после обновления) - файл &#039;&#039;PayControl-interaction-module-&amp;lt;VERSION&amp;gt;.ear&#039;&#039; заменить на файл pc-pusher-&amp;lt;VERSION&amp;gt;.war&lt;br /&gt;
* на PCIS External(PC External после обновления) - файл &#039;&#039;PayControl-interaction-rest-&amp;lt;VERSION&amp;gt;.war&#039;&#039; заменить на файл pc-external-&amp;lt;VERSION&amp;gt;.war&lt;br /&gt;
&lt;br /&gt;
== Настройка подключения к БД ==&lt;br /&gt;
&lt;br /&gt;
В файле &amp;lt;WF_HOME&amp;gt;/standalone/configuration/standalone.xml нужно найти и заменить:&lt;br /&gt;
* PayControlDS на PCServerDS&lt;br /&gt;
* PayControlISDS на PCPusherDS&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;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== Postgres ===&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;
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;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oracle ===&lt;br /&gt;
Перед выполнением правок в БД PCS перезапустите Wildfly &#039;&#039;&#039;минимум два раза&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Должны создаться таблицы PC_CERTIFICATE, PC_CMS_SIGNATURE и PC_ONLINE_CREDENTIALS.&lt;br /&gt;
&lt;br /&gt;
Когда эти таблицы появятся в БД, можно выполнять правки.&lt;br /&gt;
&lt;br /&gt;
Если после нескольких перезапусков создались не все таблицы, то выполните правки, а затем, проверьте наличие недостающих таблиц.&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;
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;
&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;
&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 varchar(64));&lt;br /&gt;
alter table pc_event drop column eventposturl;&lt;br /&gt;
alter table pc_event add (event_data clob);&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;
&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;
&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 varchar(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 add (qr_url_scheme varchar(24));&lt;br /&gt;
&lt;br /&gt;
alter table pc_user add (user_name varchar(255));&lt;br /&gt;
alter table pc_user add (blocked NUMBER(5,0));&lt;br /&gt;
&lt;br /&gt;
alter table pc_system_params add (license_1 clob);&lt;br /&gt;
update pc_system_params set license_1 = license;&lt;br /&gt;
alter table pc_system_params drop column license;&lt;br /&gt;
alter table pc_system_params rename column license_1 to license;&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 (operationid varchar(36));&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;
&lt;br /&gt;
alter table pc_keyinfo add (external_approve_data_id varchar(255));&lt;br /&gt;
&lt;br /&gt;
alter table pc_confirm_attempt add (data_hash_1 blob);&lt;br /&gt;
update pc_confirm_attempt set data_hash_1 = data_hash;&lt;br /&gt;
alter table pc_confirm_attempt drop column data_hash;&lt;br /&gt;
alter table pc_confirm_attempt rename column data_hash_1 to data_hash;&lt;br /&gt;
&lt;br /&gt;
alter table pc_delayedkeyinfo add (key_content_1 blob);&lt;br /&gt;
update pc_delayedkeyinfo set key_content_1 = key_content;&lt;br /&gt;
alter table pc_delayedkeyinfo drop column key_content;&lt;br /&gt;
alter table pc_delayedkeyinfo rename column key_content_1 to key_content;&lt;br /&gt;
&lt;br /&gt;
alter table pc_keyinfo add (key_content_1 blob);&lt;br /&gt;
update pc_keyinfo set key_content_1 = key_content;&lt;br /&gt;
alter table pc_keyinfo drop column key_content;&lt;br /&gt;
alter table pc_keyinfo rename column key_content_1 to key_content;&lt;br /&gt;
&lt;br /&gt;
alter table pc_publickey add (public_key_1 blob);&lt;br /&gt;
update pc_publickey set public_key_1 = public_key;&lt;br /&gt;
alter table pc_publickey drop column public_key;&lt;br /&gt;
alter table pc_publickey rename column public_key_1 to public_key;&lt;br /&gt;
&lt;br /&gt;
alter table pc_transaction add (data_hash_1 blob);&lt;br /&gt;
update pc_transaction set data_hash_1 = data_hash;&lt;br /&gt;
alter table pc_transaction drop column data_hash;&lt;br /&gt;
alter table pc_transaction rename column data_hash_1 to data_hash;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE PC_TRANSACTION ADD (DATA_TR_TEXT clob);&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT ADD (SCORING_RESULTS varchar(512));&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT ADD (SCORING_SETTINGS varchar(512));&lt;br /&gt;
alter table PC_SYS_PROPERTY modify (SETTING_VALUE varchar(1023));&lt;br /&gt;
alter table PC_DELAYEDKEYINFO add (RENEW_CHALLENGE varchar(255));&lt;br /&gt;
ALTER TABLE PC_TRANSACTION ADD (EXT_PULP blob);&lt;br /&gt;
ALTER TABLE PC_TRANSACTION ADD (EXTENDED_CHECK NUMBER(5,0));&lt;br /&gt;
ALTER TABLE PC_TRANSACTION ADD (RENDER_TYPE NUMBER(10,0));&lt;br /&gt;
ALTER TABLE PC_TRANSACTION ADD (SCORING_SETTINGS varchar(1023));&lt;br /&gt;
ALTER TABLE PC_TRANSACTION ADD (SNIPPED_TEXT varchar(1023));&lt;br /&gt;
ALTER TABLE PC_TRANSACTION ADD (TRANSACTION_TYPE NUMBER(10,0));&lt;br /&gt;
ALTER TABLE PC_TRANSACTION ADD (SNIPPET_HASH blob);&lt;br /&gt;
ALTER TABLE PC_TRANSACTION ADD (AUTOSIGN_ENABLED NUMBER(5,0));&lt;br /&gt;
ALTER TABLE PC_DEVICE ADD (APP_ID varchar(255));&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY ADD (AUTOSIGN_PUBLIC_KEY blob);&lt;br /&gt;
alter table PC_KEYINFO drop column GOST_IMIT_KEY;&lt;br /&gt;
alter table PC_KEYINFO  add (GOST_IMIT_KEY blob);&lt;br /&gt;
&lt;br /&gt;
## PCSB в запросах нужно заменить на имя вашей схемы и на имя вашего TABLESPACE, где идет указание именно TABLESPACE.&lt;br /&gt;
&lt;br /&gt;
CREATE SEQUENCE PCSB.PC_EXTAUTH_SEQ INCREMENT BY 1 MINVALUE 1 MAXVALUE 9999999999999999999999999999 NOCYCLE CACHE 20 NOORDER;&lt;br /&gt;
CREATE SEQUENCE PCSB.PC_USERS_LICENSE_SEQ INCREMENT BY 1 MINVALUE 1 MAXVALUE 9999999999999999999999999999 NOCYCLE CACHE 20 NOORDER;&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE &amp;quot;PCSB&amp;quot;.&amp;quot;PC_EXTAUTH&amp;quot; &lt;br /&gt;
   (	&amp;quot;EXTAUTHID&amp;quot; NUMBER(19,0) NOT NULL ENABLE, &lt;br /&gt;
	&amp;quot;CREATED_AT&amp;quot; TIMESTAMP (6), &lt;br /&gt;
	&amp;quot;IS_DELETED&amp;quot; NUMBER(5,0) DEFAULT 0 NOT NULL ENABLE, &lt;br /&gt;
	&amp;quot;UPDATED_AT&amp;quot; TIMESTAMP (6), &lt;br /&gt;
	&amp;quot;AUTH_TEMPLATE&amp;quot; VARCHAR2(2048 CHAR), &lt;br /&gt;
	&amp;quot;EVENTID&amp;quot; NUMBER(19,0), &lt;br /&gt;
	&amp;quot;USERID&amp;quot; VARCHAR2(64 CHAR), &lt;br /&gt;
	&amp;quot;AUTH_FAIL_COUNT&amp;quot; NUMBER(*,0), &lt;br /&gt;
	 PRIMARY KEY (&amp;quot;EXTAUTHID&amp;quot;)&lt;br /&gt;
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS &lt;br /&gt;
  TABLESPACE &amp;quot;PCSB&amp;quot;  ENABLE, &lt;br /&gt;
	 CONSTRAINT &amp;quot;PC_EXTAUTH_EVENTID_FK&amp;quot; FOREIGN KEY (&amp;quot;EVENTID&amp;quot;)&lt;br /&gt;
	  REFERENCES &amp;quot;PCSB&amp;quot;.&amp;quot;PC_EVENT&amp;quot; (&amp;quot;EVENTID&amp;quot;) ENABLE, &lt;br /&gt;
	 CONSTRAINT &amp;quot;PC_EXTAUTH_USERID_FK&amp;quot; FOREIGN KEY (&amp;quot;USERID&amp;quot;)&lt;br /&gt;
	  REFERENCES &amp;quot;PCSB&amp;quot;.&amp;quot;PC_USER&amp;quot; (&amp;quot;USERID&amp;quot;) ENABLE&lt;br /&gt;
   ) SEGMENT CREATION DEFERRED &lt;br /&gt;
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 &lt;br /&gt;
 NOCOMPRESS LOGGING&lt;br /&gt;
  TABLESPACE &amp;quot;PCSB&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE &amp;quot;PCSB&amp;quot;.&amp;quot;PC_USERS_LICENSING&amp;quot; &lt;br /&gt;
   (	&amp;quot;USERS_LICENSE_ID&amp;quot; NUMBER(19,0) NOT NULL ENABLE, &lt;br /&gt;
	&amp;quot;CREATED_AT&amp;quot; TIMESTAMP (6), &lt;br /&gt;
	&amp;quot;IS_DELETED&amp;quot; NUMBER(5,0) DEFAULT 0 NOT NULL ENABLE, &lt;br /&gt;
	&amp;quot;UPDATED_AT&amp;quot; TIMESTAMP (6), &lt;br /&gt;
	&amp;quot;LICENSED_AT&amp;quot; TIMESTAMP (6), &lt;br /&gt;
	&amp;quot;LICENSED_TILL&amp;quot; TIMESTAMP (6), &lt;br /&gt;
	&amp;quot;LICENSED_UID&amp;quot; VARCHAR2(255 CHAR), &lt;br /&gt;
	&amp;quot;PC_SIGNATURE&amp;quot; VARCHAR2(255 CHAR), &lt;br /&gt;
	&amp;quot;USERID&amp;quot; VARCHAR2(64 CHAR), &lt;br /&gt;
	 PRIMARY KEY (&amp;quot;USERS_LICENSE_ID&amp;quot;)&lt;br /&gt;
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS &lt;br /&gt;
  TABLESPACE &amp;quot;PCSB&amp;quot;  ENABLE, &lt;br /&gt;
	 CONSTRAINT &amp;quot;PC_USER_LICENSING_USERID_FK&amp;quot; FOREIGN KEY (&amp;quot;USERID&amp;quot;)&lt;br /&gt;
	  REFERENCES &amp;quot;PCSB&amp;quot;.&amp;quot;PC_USER&amp;quot; (&amp;quot;USERID&amp;quot;) ENABLE&lt;br /&gt;
   ) SEGMENT CREATION DEFERRED &lt;br /&gt;
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 &lt;br /&gt;
 NOCOMPRESS LOGGING&lt;br /&gt;
  TABLESPACE &amp;quot;PCSB&amp;quot; ;&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;
&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;
Установите лицензию одним из приведённых в [https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/#установка-лицензии руководстве администратора PC] способов.&lt;br /&gt;
&lt;br /&gt;
== Завершение обновления ==&lt;br /&gt;
&lt;br /&gt;
После выполнения вышеизложенных пунктов нужно [[Руководство_администратора_PayControl_v5#Запуск и остановка служб сервера PayControl|запустить wildfly]].&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;:8080/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8080/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;:8080/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8080/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите Wildfly.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
При возникновении проблем при обновлении необходимо удалить новый файл модуля сервера и заменить его старым файлом. &lt;br /&gt;
&lt;br /&gt;
При замене файлов необходимо проверить, что в директории &#039;&#039;deployments&#039;&#039; отсутствуют файлы с расширением undeployed.&lt;br /&gt;
&lt;br /&gt;
== PCS. Настройка подключения с PC External ==&lt;br /&gt;
На сервере PCIS\PC External необходимо заменить часть строки с адресом сервера 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 -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; на строку &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;&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% -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; &#039;&#039;&#039;выше&#039;&#039;&#039; метки :JAVA_OPTS_SET на строку &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;&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_5&amp;diff=815</id>
		<title>Обновление PayControl с версии 3 на версию 5</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_5&amp;diff=815"/>
		<updated>2024-06-06T15:06:11Z</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 требуется JDK 11.&lt;br /&gt;
&lt;br /&gt;
Версия Wildfly должна быть не выше 26.1.3.&lt;br /&gt;
&lt;br /&gt;
== Изменение названий серверов ==&lt;br /&gt;
&lt;br /&gt;
В версии 5 изменены названия серверов:&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;
== Для PCIS версии ниже 3.7 ==&lt;br /&gt;
&lt;br /&gt;
Если версия PCS имеет версию 3.6, а серверы PCIS имеют версию ниже 3.7, то необходимо сначала произвести обновление до 3.7. Инструкция по обновлению доступна по [[PCWiki:Обновление PCIS до версии 3.7|ссылке]].&lt;br /&gt;
&lt;br /&gt;
== Обновление компонентов серверов ==&lt;br /&gt;
&lt;br /&gt;
Для обновления нужно [[Руководство_администратора_PayControl_v5#Запуск и остановка служб сервера PayControl|остановить сервис Wildfly]] и заменить файл приложения сервера &amp;lt;WF_PATH&amp;gt;\standalone\deployments\ на новый:&lt;br /&gt;
* на PCS - файл &#039;&#039;PayControl-services-module-&amp;lt;VERSION&amp;gt;.ear&#039;&#039; заменить на файл pc-server-&amp;lt;VERSION&amp;gt;.ear&lt;br /&gt;
* на PCIS Internal(PC Pusher после обновления) - файл &#039;&#039;PayControl-interaction-module-&amp;lt;VERSION&amp;gt;.ear&#039;&#039; заменить на файл pc-pusher-&amp;lt;VERSION&amp;gt;.war&lt;br /&gt;
* на PCIS External(PC External после обновления) - файл &#039;&#039;PayControl-interaction-rest-&amp;lt;VERSION&amp;gt;.war&#039;&#039; заменить на файл pc-external-&amp;lt;VERSION&amp;gt;.war&lt;br /&gt;
&lt;br /&gt;
== Настройка подключения к БД ==&lt;br /&gt;
&lt;br /&gt;
В файле &amp;lt;WF_HOME&amp;gt;/standalone/configuration/standalone.xml нужно найти и заменить:&lt;br /&gt;
* PayControlDS на PCServerDS&lt;br /&gt;
* PayControlISDS на PCPusherDS&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;
Для обеспечения должного функционирования системы PC, в некоторые таблицы необходимо внести изменения, выполнив запросы:&lt;br /&gt;
&lt;br /&gt;
=== Postgres ===&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;
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;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Oracle ===&lt;br /&gt;
Перед выполнением правок в БД PCS перезапустите Wildfly &#039;&#039;&#039;минимум два раза&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Должны создаться таблицы PC_CERTIFICATE, PC_CMS_SIGNATURE и PC_ONLINE_CREDENTIALS.&lt;br /&gt;
&lt;br /&gt;
Когда эти таблицы появятся в БД, можно выполнять правки.&lt;br /&gt;
&lt;br /&gt;
Если после нескольких перезапусков создались не все таблицы, то выполните правки, а затем, проверьте наличие недостающих таблиц.&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;
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;
&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;
&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 varchar(64));&lt;br /&gt;
alter table pc_event drop column eventposturl;&lt;br /&gt;
alter table pc_event add (event_data clob);&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;
&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;
&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 varchar(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 add (qr_url_scheme varchar(24));&lt;br /&gt;
&lt;br /&gt;
alter table pc_user add (user_name varchar(255));&lt;br /&gt;
alter table pc_user add (blocked NUMBER(5,0));&lt;br /&gt;
&lt;br /&gt;
alter table pc_system_params add (license_1 clob);&lt;br /&gt;
update pc_system_params set license_1 = license;&lt;br /&gt;
alter table pc_system_params drop column license;&lt;br /&gt;
alter table pc_system_params rename column license_1 to license;&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 (operationid varchar(36));&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;
&lt;br /&gt;
alter table pc_keyinfo add (external_approve_data_id varchar(255));&lt;br /&gt;
&lt;br /&gt;
alter table pc_confirm_attempt add (data_hash_1 blob);&lt;br /&gt;
update pc_confirm_attempt set data_hash_1 = data_hash;&lt;br /&gt;
alter table pc_confirm_attempt drop column data_hash;&lt;br /&gt;
alter table pc_confirm_attempt rename column data_hash_1 to data_hash;&lt;br /&gt;
&lt;br /&gt;
alter table pc_delayedkeyinfo add (key_content_1 blob);&lt;br /&gt;
update pc_delayedkeyinfo set key_content_1 = key_content;&lt;br /&gt;
alter table pc_delayedkeyinfo drop column key_content;&lt;br /&gt;
alter table pc_delayedkeyinfo rename column key_content_1 to key_content;&lt;br /&gt;
&lt;br /&gt;
alter table pc_keyinfo add (key_content_1 blob);&lt;br /&gt;
update pc_keyinfo set key_content_1 = key_content;&lt;br /&gt;
alter table pc_keyinfo drop column key_content;&lt;br /&gt;
alter table pc_keyinfo rename column key_content_1 to key_content;&lt;br /&gt;
&lt;br /&gt;
alter table pc_publickey add (public_key_1 blob);&lt;br /&gt;
update pc_publickey set public_key_1 = public_key;&lt;br /&gt;
alter table pc_publickey drop column public_key;&lt;br /&gt;
alter table pc_publickey rename column public_key_1 to public_key;&lt;br /&gt;
&lt;br /&gt;
alter table pc_transaction add (data_hash_1 blob);&lt;br /&gt;
update pc_transaction set data_hash_1 = data_hash;&lt;br /&gt;
alter table pc_transaction drop column data_hash;&lt;br /&gt;
alter table pc_transaction rename column data_hash_1 to data_hash;&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE PC_TRANSACTION ADD (DATA_TR_TEXT clob);&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT ADD (SCORING_RESULTS varchar(512));&lt;br /&gt;
ALTER TABLE PC_CONFIRM_ATTEMPT ADD (SCORING_SETTINGS varchar(512));&lt;br /&gt;
alter table PC_SYS_PROPERTY modify (SETTING_VALUE varchar(1023));&lt;br /&gt;
alter table PC_DELAYEDKEYINFO add (RENEW_CHALLENGE varchar(255));&lt;br /&gt;
ALTER TABLE PC_TRANSACTION ADD (EXT_PULP blob);&lt;br /&gt;
ALTER TABLE PC_TRANSACTION ADD (EXTENDED_CHECK NUMBER(5,0));&lt;br /&gt;
ALTER TABLE PC_TRANSACTION ADD (RENDER_TYPE NUMBER(10,0));&lt;br /&gt;
ALTER TABLE PC_TRANSACTION ADD (SCORING_SETTINGS varchar(1023));&lt;br /&gt;
ALTER TABLE PC_TRANSACTION ADD (SNIPPED_TEXT varchar(1023));&lt;br /&gt;
ALTER TABLE PC_TRANSACTION ADD (TRANSACTION_TYPE NUMBER(10,0));&lt;br /&gt;
ALTER TABLE PC_TRANSACTION ADD (SNIPPET_HASH blob);&lt;br /&gt;
ALTER TABLE PC_TRANSACTION ADD (AUTOSIGN_ENABLED NUMBER(5,0));&lt;br /&gt;
ALTER TABLE PC_DEVICE ADD (APP_ID varchar(255));&lt;br /&gt;
ALTER TABLE PC_PUBLICKEY ADD (AUTOSIGN_PUBLIC_KEY blob);&lt;br /&gt;
alter table PC_KEYINFO drop column GOST_IMIT_KEY;&lt;br /&gt;
alter table PC_KEYINFO  add (GOST_IMIT_KEY blob);&lt;br /&gt;
&lt;br /&gt;
## PCSB в запросах нужно заменить на имя вашей схемы и на имя вашего TABLESPACE, где идет указание именно TABLESPACE.&lt;br /&gt;
&lt;br /&gt;
CREATE SEQUENCE PCSB.PC_EXTAUTH_SEQ INCREMENT BY 1 MINVALUE 1 MAXVALUE 9999999999999999999999999999 NOCYCLE CACHE 20 NOORDER;&lt;br /&gt;
CREATE SEQUENCE PCSB.PC_USERS_LICENSE_SEQ INCREMENT BY 1 MINVALUE 1 MAXVALUE 9999999999999999999999999999 NOCYCLE CACHE 20 NOORDER;&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE &amp;quot;PCSB&amp;quot;.&amp;quot;PC_EXTAUTH&amp;quot; &lt;br /&gt;
   (	&amp;quot;EXTAUTHID&amp;quot; NUMBER(19,0) NOT NULL ENABLE, &lt;br /&gt;
	&amp;quot;CREATED_AT&amp;quot; TIMESTAMP (6), &lt;br /&gt;
	&amp;quot;IS_DELETED&amp;quot; NUMBER(5,0) DEFAULT 0 NOT NULL ENABLE, &lt;br /&gt;
	&amp;quot;UPDATED_AT&amp;quot; TIMESTAMP (6), &lt;br /&gt;
	&amp;quot;AUTH_TEMPLATE&amp;quot; VARCHAR2(2048 CHAR), &lt;br /&gt;
	&amp;quot;EVENTID&amp;quot; NUMBER(19,0), &lt;br /&gt;
	&amp;quot;USERID&amp;quot; VARCHAR2(64 CHAR), &lt;br /&gt;
	&amp;quot;AUTH_FAIL_COUNT&amp;quot; NUMBER(*,0), &lt;br /&gt;
	 PRIMARY KEY (&amp;quot;EXTAUTHID&amp;quot;)&lt;br /&gt;
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS &lt;br /&gt;
  TABLESPACE &amp;quot;PCSB&amp;quot;  ENABLE, &lt;br /&gt;
	 CONSTRAINT &amp;quot;PC_EXTAUTH_EVENTID_FK&amp;quot; FOREIGN KEY (&amp;quot;EVENTID&amp;quot;)&lt;br /&gt;
	  REFERENCES &amp;quot;PCSB&amp;quot;.&amp;quot;PC_EVENT&amp;quot; (&amp;quot;EVENTID&amp;quot;) ENABLE, &lt;br /&gt;
	 CONSTRAINT &amp;quot;PC_EXTAUTH_USERID_FK&amp;quot; FOREIGN KEY (&amp;quot;USERID&amp;quot;)&lt;br /&gt;
	  REFERENCES &amp;quot;PCSB&amp;quot;.&amp;quot;PC_USER&amp;quot; (&amp;quot;USERID&amp;quot;) ENABLE&lt;br /&gt;
   ) SEGMENT CREATION DEFERRED &lt;br /&gt;
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 &lt;br /&gt;
 NOCOMPRESS LOGGING&lt;br /&gt;
  TABLESPACE &amp;quot;PCSB&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE &amp;quot;PCSB&amp;quot;.&amp;quot;PC_USERS_LICENSING&amp;quot; &lt;br /&gt;
   (	&amp;quot;USERS_LICENSE_ID&amp;quot; NUMBER(19,0) NOT NULL ENABLE, &lt;br /&gt;
	&amp;quot;CREATED_AT&amp;quot; TIMESTAMP (6), &lt;br /&gt;
	&amp;quot;IS_DELETED&amp;quot; NUMBER(5,0) DEFAULT 0 NOT NULL ENABLE, &lt;br /&gt;
	&amp;quot;UPDATED_AT&amp;quot; TIMESTAMP (6), &lt;br /&gt;
	&amp;quot;LICENSED_AT&amp;quot; TIMESTAMP (6), &lt;br /&gt;
	&amp;quot;LICENSED_TILL&amp;quot; TIMESTAMP (6), &lt;br /&gt;
	&amp;quot;LICENSED_UID&amp;quot; VARCHAR2(255 CHAR), &lt;br /&gt;
	&amp;quot;PC_SIGNATURE&amp;quot; VARCHAR2(255 CHAR), &lt;br /&gt;
	&amp;quot;USERID&amp;quot; VARCHAR2(64 CHAR), &lt;br /&gt;
	 PRIMARY KEY (&amp;quot;USERS_LICENSE_ID&amp;quot;)&lt;br /&gt;
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS &lt;br /&gt;
  TABLESPACE &amp;quot;PCSB&amp;quot;  ENABLE, &lt;br /&gt;
	 CONSTRAINT &amp;quot;PC_USER_LICENSING_USERID_FK&amp;quot; FOREIGN KEY (&amp;quot;USERID&amp;quot;)&lt;br /&gt;
	  REFERENCES &amp;quot;PCSB&amp;quot;.&amp;quot;PC_USER&amp;quot; (&amp;quot;USERID&amp;quot;) ENABLE&lt;br /&gt;
   ) SEGMENT CREATION DEFERRED &lt;br /&gt;
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 &lt;br /&gt;
 NOCOMPRESS LOGGING&lt;br /&gt;
  TABLESPACE &amp;quot;PCSB&amp;quot; ;&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;
!!!Для выполнения запросов со 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;
&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;
Установите лицензию одним из приведённых в [https://repo.paycontrol.org/server/doc/latest/pc-admin-guide/ru/#установка-лицензии руководстве администратора PC] способов.&lt;br /&gt;
&lt;br /&gt;
== Завершение обновления ==&lt;br /&gt;
&lt;br /&gt;
После выполнения вышеизложенных пунктов нужно [[Руководство_администратора_PayControl_v5#Запуск и остановка служб сервера PayControl|запустить wildfly]].&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;:8080/pc-pusher-api/&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8080/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;:8080/pc-pusher-api/health_check&lt;br /&gt;
* PC External - http://&amp;lt;host&amp;gt;:8080/pc-client-api/health_check&lt;br /&gt;
&lt;br /&gt;
= Откат обновления в случае сбоя =&lt;br /&gt;
&lt;br /&gt;
Остановите Wildfly.&lt;br /&gt;
&lt;br /&gt;
Восстановите БД PCS и PCIS Internal из бэкапа.&lt;br /&gt;
&lt;br /&gt;
При возникновении проблем при обновлении необходимо удалить новый файл модуля сервера и заменить его старым файлом. &lt;br /&gt;
&lt;br /&gt;
При замене файлов необходимо проверить, что в директории &#039;&#039;deployments&#039;&#039; отсутствуют файлы с расширением undeployed.&lt;br /&gt;
&lt;br /&gt;
== PCS. Настройка подключения с PC External ==&lt;br /&gt;
На сервере PCIS\PC External необходимо заменить часть строки с адресом сервера 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 -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; на строку &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;&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% -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; &#039;&#039;&#039;выше&#039;&#039;&#039; метки :JAVA_OPTS_SET на строку &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;&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_3.5_%D0%BD%D0%B0_3.9&amp;diff=814</id>
		<title>Обновление PayControl с 3.5 на 3.9</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_3.5_%D0%BD%D0%B0_3.9&amp;diff=814"/>
		<updated>2024-06-04T09:54:06Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Отключение поддержки совместимости с PCS 3.5 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В версии 3.8 реализовано взаимодействие с [[PC Pusher 5.2|PC Pusher 5.x]], который, в свою очередь, поддерживает отправку пуш-уведомлений на устройства Huawei. Обновлению с 3.5-3.7 подлежат модули PCS и PC External.&lt;br /&gt;
&lt;br /&gt;
{{Предупреждение|Модуль PCIS Internal 3.5-3.7 подлежит замене на модуль PC Pusher 5.5. PCS с версии 3.8 не поддерживает работу с модулем PCIS Internal.}}&lt;br /&gt;
&lt;br /&gt;
В версии 3.9 добавлена функциональность формирования имитовставки, для соответствия п.5.1 Положения Банка России от 17 апреля 2019 года N 683-П:&lt;br /&gt;
&lt;br /&gt;
    В целях обеспечения целостности электронных сообщений и подтверждения их составления уполномоченным на это лицом кредитные организации должны обеспечивать реализацию мер по использованию усиленной квалифицированной электронной подписи, усиленной неквалифицированной электронной подписи или СКЗИ, реализующих функцию имитозащиты информации с аутентификацией отправителя сообщения.&lt;br /&gt;
&lt;br /&gt;
Модули сервера доступны по ссылкам:&lt;br /&gt;
* PC Server (https://repo.paycontrol.org/server/maven/tech/paycon/server/PayControl-services-module/), версия 3.9.xxx;&lt;br /&gt;
* PC External (https://repo.paycontrol.org/server/maven/tech/paycon/server/PayControl-interaction-rest/), версия 3.9.xxx;&lt;br /&gt;
* PC Pusher (https://repo.paycontrol.org/server/maven/tech/paycon/server/pc-pusher/), версия 5.5.xxx.&lt;br /&gt;
&lt;br /&gt;
Если при обновлении сервера также необходимо обновить Wildfly, то перед обновлением &#039;&#039;&#039;необходимо&#039;&#039;&#039; остановить службу, убрать её из автозапуска.&lt;br /&gt;
&lt;br /&gt;
= Обновление Java =&lt;br /&gt;
&lt;br /&gt;
Перед обновлением компонентов PC требуется обновить Java до версии 11. Версия 8 больше не поддерживается.&lt;br /&gt;
&lt;br /&gt;
При установке Java новой версии, старая версия не удаляется, и [[Wildfly]] может продолжить работать на версии 8, что приведёт к ошибкам. Для того чтобы компоненты работали под Java 11, необходимо либо удалить неактуальную версию 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;
=Обновление компонентов PCS= &lt;br /&gt;
Для обновления нужно заменить файл приложения сервера &amp;lt;WF_PATH&amp;gt;\standalone\deployments\ на новый:&lt;br /&gt;
* на PCS - файл &#039;&#039;PayControl-services-module-&amp;lt;VERSION&amp;gt;.ear&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|Остановите wildfly]].&lt;br /&gt;
&lt;br /&gt;
==Отключение поддержки совместимости с PCS 3.5==&lt;br /&gt;
Для отключения в модуле PCIS External 3.7 режима совместимости с сервером версии 3.5 необходимо убрать из окружения Java параметр &amp;lt;code&amp;gt;paycontrol.pcsVersion&amp;lt;/code&amp;gt; со значением &amp;lt;code&amp;gt;3.5&amp;lt;/code&amp;gt;. Это можно сделать следующим образом:&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.pcsVersion=3.5&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.pcsVersion=3.5&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Изменения в БД==&lt;br /&gt;
*Для переноса параметров из pc_system в pc_system_params, что необходимо, при обновлении, нужно выполнить запрос:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
INSERT INTO pc_system_params (systemid, created_at, is_deleted, updated_at, billed_date_request, billing_period, billed_date, billing_type, description, front_end_url, license, online_confirmation_url, register_request, report_template_path, user_keys_expiration_period)&lt;br /&gt;
SELECT systemid, created_at, is_deleted, updated_at, billed_date_request, billing_period, billed_date, billing_type, description, front_end_url, license, online_confirmation_url, register_request, report_template_path, user_keys_expiration_period&lt;br /&gt;
FROM pc_system;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Чтобы поправить настройки пользователей нужно выполнить запрос:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
update pc_keyinfo set key_flags=0 where need_to_use_fingerprint=0;&lt;br /&gt;
update pc_keyinfo set key_flags=1 where need_to_use_fingerprint=1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Запрос на регистрацию==&lt;br /&gt;
===Получение нового запроса===&lt;br /&gt;
Для получения нового запроса на регистрацию нужно выполнить запрос к БД PCS&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
select * from pc_system;&lt;br /&gt;
&amp;lt;/code&amp;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;
&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;
Для получения обновленной лицензии нужно выполнить запрос к БД PCS&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
select * from pc_system;&lt;br /&gt;
&amp;lt;/code&amp;gt;, и обратиться с результатами запроса в компанию Сэйфтек.&lt;br /&gt;
&lt;br /&gt;
===Замена лицензии в БД===&lt;br /&gt;
*На сервере PC Server, удалите файл(*.paycontrol.license) с лицензией, если такой есть.&lt;br /&gt;
*Выполните к БД PC Server запрос:&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; на реальные данные лицензии(*.paycontrol.license), созданной для Вашей прикладной системы. Обратите внимание, что знаки процента &#039;&#039;&#039;нужно удалить&#039;&#039;&#039;;&lt;br /&gt;
** пример нужных данных лицензии&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;licenseInformationWithSignature xmlns=&amp;quot;http://ws.safetech.ru/PayControl/services/ws/request/&amp;quot;&amp;gt;&amp;lt;licenseInformation&amp;gt;&amp;lt;systemId&amp;gt;48000c91-dd4a-47d5-9041-fd8d0a32c13b&amp;lt;/systemId&amp;gt;&amp;lt;validTo&amp;gt;2020-11-07T20:59:59.000Z&amp;lt;/validTo&amp;gt;&amp;lt;usersCount&amp;gt;100&amp;lt;/usersCount&amp;gt;&amp;lt;/licenseInformation&amp;gt;&amp;lt;signature&amp;gt;MEQCIDyHJwCnp7iLDSAllrcjVya+ukW6Ov1dJJiSXd8HIowBAiB8cEBnjhm3up1ui2pjp9oqx6GzxOfRCBG0EddiIqCIqA==&amp;lt;/signature&amp;gt;&amp;lt;/licenseInformationWithSignature&amp;gt;&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_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;
&lt;br /&gt;
=PCIS Internal и External=&lt;br /&gt;
==Для PCIS версии ниже, чем 3.7==&lt;br /&gt;
Этот пункт следует выполнять только в случае, если основной сервер PCS имеет версию 3.5, а серверы PCIS имеют версию ниже 3.7 - [[Обновление PCIS до версии 3.7|Обновление PCIS до версии 3.7]]&lt;br /&gt;
&lt;br /&gt;
==Обновление PCIS External(PC External)==&lt;br /&gt;
Перед обновлением настоятельно рекомендуем также выполнить резервное копирование баз данных PC.&lt;br /&gt;
&lt;br /&gt;
Для обновления необходимо заменить на серверах файл модуля PC External в директории &#039;&#039;deployments&#039;&#039; сервера приложений [[Wildfly]]. &lt;br /&gt;
&lt;br /&gt;
Он имеет название вида:&lt;br /&gt;
* PayControl-interaction-rest-3.x.x.war - PC External.&lt;br /&gt;
Перед заменой файлов [[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|остановите Wildfly]].&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;
==Переход с PCIS Internal на PC Pusher==&lt;br /&gt;
===Замена файлов модулей===&lt;br /&gt;
{{Предупреждение|PC Pusher для своей работы не требует использования БД, в отличие от PCIS Internal.}}&lt;br /&gt;
&lt;br /&gt;
Для обновления необходимо заменить на сервере файлы модуля PCIS Internal в директории deployments сервера приложений Wildfly. Файл имеют названия вида:&lt;br /&gt;
&lt;br /&gt;
*PayControl-interaction-module-3.x.xxx.ear - PCIS Internal&lt;br /&gt;
&lt;br /&gt;
Перед заменой файлов [[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|остановите Wildfly]].&lt;br /&gt;
Файлы сервера предыдущей версии настоятельно рекомендуем сохранить для возможности отката на предыдущую версию.&lt;br /&gt;
&lt;br /&gt;
*Новый файл имеет название вида: pc-pusher-5.5.xxx.war&lt;br /&gt;
&lt;br /&gt;
После замены файлов и развёртывания новых, в директории deployments будут созданы файлы с названиями:&lt;br /&gt;
&lt;br /&gt;
*.undeployed, где вместо * будет указано название убранного из директории файла модуля сервера. Файлы с расширением undeployed рекомендуется удалить.&lt;br /&gt;
*и с расширением *.deployed, где вместо * будут указаны названия новых модулей.&lt;br /&gt;
При появлении файлов с расширением *.failed, необходимо [[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|перезапустить Wildfly]].&lt;br /&gt;
===Настройка PC Server для работы с PC Pusher===&lt;br /&gt;
После замены PCIS Internal на PC Pusher &#039;&#039;&#039;необходимо&#039;&#039;&#039; заменить его адрес в БД 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]://pcphost:port/pc-pusher-api/&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее, &#039;&#039;&#039;необходимо&#039;&#039;&#039; предоставить доступ PC Pusher для отправки данных пушей в сервис HMS (Huawei Mobile Services).&lt;br /&gt;
При отправке push-сообщений, запросы должны отправляются по адресу https://push-api.cloud.huawei.com/ ,порт 443.&lt;br /&gt;
&lt;br /&gt;
Также, с сервера PC Pusher &#039;&#039;&#039;должен&#039;&#039;&#039; быть доступен адрес: https://oauth-login.cloud.huawei.com/oauth2/v3/token&lt;br /&gt;
&lt;br /&gt;
В случае, если PC Pusher находится на одном сервере с PC External, то &#039;&#039;&#039;необходимо&#039;&#039;&#039; перенастроить правила URL-фильтрации.&lt;br /&gt;
&lt;br /&gt;
===Настройка PC Pusher===&lt;br /&gt;
Если для подтверждения транзакций используется приложение PayControl, то данная настройка не требуется.&lt;br /&gt;
&lt;br /&gt;
По умолчанию, если app/bundle id для отправки пуш-уведомлений явно не указан для устройства, PCS 3.9 отправляет пуши в приложение PayControl Classic.&lt;br /&gt;
&lt;br /&gt;
Для отправки пушей в другое приложения необходимо:&lt;br /&gt;
# Произвести настройки аутентификационных данных &amp;quot;другого&amp;quot; мобильного приложения в соответствии с [[PC_Pusher_5.2|этой статьей]]&lt;br /&gt;
# Прописать app/bundle id необходимого приложения в БД PCS(после выполнения запроса необходимо перезапустить Wildfly):&lt;br /&gt;
Пример: &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;insert into pc_sys_property values (nextval(&#039;pc_setting_seq&#039;), &#039;APP_ID_FOR_PUSHER&#039;, &#039;{&amp;quot;Android&amp;quot;:&amp;quot;com.example.mobile.app&amp;quot;,&amp;quot;iOS&amp;quot;:&amp;quot;com.example.apple.app&amp;quot;,&amp;quot;Huawei&amp;quot;:&amp;quot;com.example.apple.app&amp;quot;}&#039;);&amp;lt;/syntaxhighlight&amp;gt;&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;APP_ID_FOR_PUSHER&#039;, &#039;{&amp;quot;Android&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;iOS&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;Huawei&amp;quot;:&amp;quot;your_appid&amp;quot;}&#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;APP_ID_FOR_PUSHER&#039;, &#039;{&amp;quot;Android&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;iOS&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;Huawei&amp;quot;:&amp;quot;your_appid&amp;quot;}&#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;APP_ID_FOR_PUSHER&#039;, &#039;{&amp;quot;Android&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;iOS&amp;quot;:&amp;quot;your_appid&amp;quot;,&amp;quot;Huawei&amp;quot;:&amp;quot;your_appid&amp;quot;}&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Завершение обновления =&lt;br /&gt;
После выполнения вышеизложенных пунктов нужно [[Руководство_администратора_PayControl_v3#Запуск и остановка служб сервера PayControl|запустить wildfly]].&lt;br /&gt;
&lt;br /&gt;
==Правка последовательностей MS SQL==&lt;br /&gt;
&lt;br /&gt;
Данный пункт нужно выполнить в том случае, если в вашей БД нет последовательностей\сиквенсов, описанных ниже, а вместо них используются таблицы.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
* Мы хотим создать сиквенс PC_ATTEMPT_SEQ&lt;br /&gt;
* Для этого идем в таблицу PC_ATTEMPT_SEQ&lt;br /&gt;
* Берем оттуда последнее значение id&lt;br /&gt;
* Добавляем в запрос на создание сиквенса вместо знака вопроса&lt;br /&gt;
* Переименовываем старую таблицу PC_ATTEMPT_SEQ&lt;br /&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;
sp_rename PC_ATTEMPT_SEQ, PC_ATTEMPT_SEQ_OLD;&lt;br /&gt;
sp_rename PC_DELAYEDKEYINFO_SEQ, PC_DELAYEDKEYINFO_SEQ_OLD;&lt;br /&gt;
sp_rename PC_DEVICE_SEQ, PC_DEVICE_SEQ_OLD;&lt;br /&gt;
sp_rename PC_KEYINFO_SEQ, PC_KEYINFO_SEQ_OLD;&lt;br /&gt;
sp_rename PC_PUBLICKEY_SEQ, PC_PUBLICKEY_SEQ_OLD;&lt;br /&gt;
sp_rename PC_SETTING_SEQ, PC_SETTING_SEQ_OLD;&lt;br /&gt;
sp_rename PC_EVENT_SEQ, PC_EVENT_SEQ_OLD;&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;
Знаки вопроса нужно заменить на последний id в таблице-сиквенсе с тем же названием.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
create sequence PC_ATTEMPT_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_DELAYEDKEYINFO_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_DEVICE_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_KEYINFO_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_PUBLICKEY_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_SETTING_SEQ start with ? increment by 1;&lt;br /&gt;
create sequence PC_EVENT_SEQ start with ? increment by 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Удаление ненужных полей ==&lt;br /&gt;
&#039;&#039;&#039;Если&#039;&#039;&#039; у вас всё обновилось и &#039;&#039;&#039;точно&#039;&#039;&#039; работает, можно удалить не нужные поля от предыдущей версии, они больше не нужны, или перенесены.&lt;br /&gt;
&lt;br /&gt;
Удалить не используемые столбцы можно с помощью запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE pc_system &lt;br /&gt;
DROP COLUMN IF EXISTS internal_cert_fingerprint,&lt;br /&gt;
DROP COLUMN IF EXISTS key_container,&lt;br /&gt;
DROP COLUMN IF EXISTS key_password,&lt;br /&gt;
DROP COLUMN IF EXISTS additional_key_options,&lt;br /&gt;
DROP COLUMN IF EXISTS key_type,&lt;br /&gt;
DROP COLUMN IF EXISTS system_type,&lt;br /&gt;
DROP COLUMN IF EXISTS billed_date_request,&lt;br /&gt;
DROP COLUMN IF EXISTS billing_period,&lt;br /&gt;
DROP COLUMN IF EXISTS billed_date,&lt;br /&gt;
DROP COLUMN IF EXISTS billing_type,&lt;br /&gt;
DROP COLUMN IF EXISTS description,&lt;br /&gt;
DROP COLUMN IF EXISTS front_end_url,&lt;br /&gt;
DROP COLUMN IF EXISTS license,&lt;br /&gt;
DROP COLUMN IF EXISTS online_confirmation_url,&lt;br /&gt;
DROP COLUMN IF EXISTS register_request,&lt;br /&gt;
DROP COLUMN IF EXISTS report_template_path,&lt;br /&gt;
DROP COLUMN IF EXISTS user_keys_expiration_period;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Проверка доступности сервисов =&lt;br /&gt;
Адреса конечных точек по умолчанию:&lt;br /&gt;
* PC Server:&lt;br /&gt;
&amp;lt;code&amp;gt;http://&amp;lt;host&amp;gt;:8080/ws/PayControlServiceV3?wsdl&lt;br /&gt;
&lt;br /&gt;
http://&amp;lt;host&amp;gt;:8080/ws/PayControlReportService?wsdl&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* PC Pusher:&lt;br /&gt;
&amp;lt;code&amp;gt;http://&amp;lt;host&amp;gt;:8080/pc-pusher-api/health_check&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* PC External(при запросе на этот адрес должно возвратиться «Not Found»):&lt;br /&gt;
&amp;lt;code&amp;gt;http[s]://&amp;lt;host&amp;gt;:8080/PayControl-interaction-rest/&amp;lt;/code&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;
*При замене файлов необходимо проверить, что в директории &#039;&#039;deployments&#039;&#039; отсутствуют файлы с расширением undeployed.&lt;br /&gt;
*Восстановить БД PCS и PCIS Internal из резервной копии.&lt;br /&gt;
*Также нужно вернуть [[Обновление_PCIS_до_версии_3.7#Дополнительно, только для версии 3.5 | параметр]], отвечающий за работу PCS 3.5 с PCIS 3.7.&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=813</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=813"/>
		<updated>2024-06-03T13:27: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;
Файлы журналов за текущий день доступны по следующему пути:&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;
==Linux==&lt;br /&gt;
Файл лицензии необходимо скопировать в /opt/wildfly/ на сервер PCS.&lt;br /&gt;
==Windows==&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;
Файл лицензии необходимо скопировать на сервер 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=Push-%D1%83%D0%B2%D0%B5%D0%B4%D0%BE%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=812</id>
		<title>Push-уведомления</title>
		<link rel="alternate" type="text/html" href="https://repo.paycontrol.org/wiki/index.php?title=Push-%D1%83%D0%B2%D0%B5%D0%B4%D0%BE%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=812"/>
		<updated>2024-02-19T07:52:19Z</updated>

		<summary type="html">&lt;p&gt;D.bizyukov: /* Актуальный API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Push-сообщения могут отправляться через [[Сервер PayControl|PCIS Internal]], либо через PayControl Inform.&lt;br /&gt;
=Аутентификация=&lt;br /&gt;
Для отправки push-уведомлений требуется аутентификация.&lt;br /&gt;
==Перечисление аутентификационных данных==&lt;br /&gt;
===Android===&lt;br /&gt;
* Google API Key&lt;br /&gt;
===iOS===&lt;br /&gt;
Для аутентификации используется либо ключ (p8), либо сертификат (p12).&lt;br /&gt;
====p8====&lt;br /&gt;
Аутентификация посредством ключевого файла. Ключ имеет неограниченный срок действия. Требуются следующие данные:&lt;br /&gt;
* ключевой файл в формате p8;&lt;br /&gt;
* APNS App ID,&lt;br /&gt;
* APNS Key ID,&lt;br /&gt;
* APNS Team ID.&lt;br /&gt;
====p12====&lt;br /&gt;
Аутентификация посредством сертификата, имеющего ограниченный срок действия. Требуются следующие данные:&lt;br /&gt;
* APNS App ID,&lt;br /&gt;
* сертификат в формате контейнера p12,&lt;br /&gt;
* пароль для доступа к закрытой части ключа в контейнере.&lt;br /&gt;
==Установка аутентификационных данных==&lt;br /&gt;
Перед внесением необходимо заменить %SYSTEMID% на идентификатор системы.&lt;br /&gt;
===Сервер PayControl 3.6===&lt;br /&gt;
Аутентификационные данные для приложения PayControl:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;INSERT INTO pc_push_credentials (&lt;br /&gt;
systemid,&lt;br /&gt;
google_api_key,&lt;br /&gt;
use_ios_fcm,&lt;br /&gt;
apns_app_id,&lt;br /&gt;
apns_key_file,&lt;br /&gt;
apns_key_id,&lt;br /&gt;
apns_team_id)&lt;br /&gt;
VALUES  (&lt;br /&gt;
&#039;%SYSTEMID%&#039;,&lt;br /&gt;
&#039;AAAAZJTm6y0:APA91bF1OQYv9T2opZtIMJPZknA7tGLifzvTVB3PFSlQejBzPzyeYg4JFn-nud5mE_pZe920I2zR-8Lv-yabeaJ8PdduS96G3ESj_pfxAJAhaT1JistaXMchspMkPLL0e8tLxCmBzhda&#039;,&lt;br /&gt;
&#039;0&#039;,&lt;br /&gt;
&#039;ru.safe-tech.PayControl.v3&#039;,&lt;br /&gt;
&#039;/opt/wildfly/safetech-apns-JVBQX52N5Z.p8&#039;,&lt;br /&gt;
&#039;JVBQX52N5Z&#039;,&lt;br /&gt;
&#039;48HZH4RWJD&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Сервер PayControl 3.7 и 5.1===&lt;br /&gt;
====Структура записи====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
INSERT INTO pc_split_pusher_credentials (&lt;br /&gt;
id,&lt;br /&gt;
appid,&lt;br /&gt;
credentials,&lt;br /&gt;
is_default,&lt;br /&gt;
os,&lt;br /&gt;
systemid,&lt;br /&gt;
templates,&lt;br /&gt;
use_ios_fcm)&lt;br /&gt;
VALUES (&lt;br /&gt;
nextval(&#039;pc_split_pusher_creds_seq&#039;),&lt;br /&gt;
&#039;org.payconfirm.app&#039;,&lt;br /&gt;
&#039;{&amp;quot;google_api_key&amp;quot;:&amp;quot;AAAAPvs4KBA:APA91bEEv_nwmSQZPDBGh0gn2PwqRQusHJNdlekZ-eKcj8IYrm18EcXwJ1wt6nUEOavGcVjPuXJmfhV_9oS6VNbtKjyQSqBb3HHMnJZp6FauWz6hWpVcqsbenqkgamFgCAl1Exrd3JV_&amp;quot;}&#039;,&lt;br /&gt;
0,&lt;br /&gt;
&#039;Android&#039;,&lt;br /&gt;
&#039;%SYSTEMID%&#039;,&lt;br /&gt;
&#039;{&amp;quot;messages&amp;quot;:[{&amp;quot;to&amp;quot;:&amp;quot;%DEVICE_TOKEN%&amp;quot;,&amp;quot;notification&amp;quot;:{&amp;quot;tag&amp;quot;:&amp;quot;%USER_ID%&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;PayControl&amp;quot;,&amp;quot;body&amp;quot;:&amp;quot;%PUSH_TEXT%&amp;quot;,&amp;quot;icon&amp;quot;:&amp;quot;paycontrol_push&amp;quot;,&amp;quot;sound&amp;quot;:&amp;quot;default&amp;quot;},&amp;quot;data&amp;quot;:{&amp;quot;type&amp;quot;:&amp;quot;PayControl_v2&amp;quot;}},{&amp;quot;to&amp;quot;:&amp;quot;%DEVICE_TOKEN%&amp;quot;,&amp;quot;data&amp;quot;: {&amp;quot;type&amp;quot;: &amp;quot;PayControl_v2&amp;quot;, &amp;quot;userid&amp;quot;: &amp;quot;%USER_ID%&amp;quot;}}]}&#039;,&lt;br /&gt;
0);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====== Поле credentials для iOS ====== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;apns_key_file&amp;quot;: &amp;quot;/opt/wildfly/safetech-apns-JVBQX52N5Z.p8&amp;quot;,&lt;br /&gt;
&amp;quot;apns_key_id&amp;quot;: &amp;quot;JVBQX52N5Z&amp;quot;,&lt;br /&gt;
&amp;quot;apns_team_id&amp;quot;: &amp;quot;48HZH4RWJD&amp;quot;,&lt;br /&gt;
&amp;quot;apnsP12File&amp;quot; : &amp;quot;/opt/wildfly/certificate.p12&amp;quot;,&lt;br /&gt;
&amp;quot;apnsP12Pass&amp;quot; : &amp;quot;************&amp;quot;,&lt;br /&gt;
&amp;quot;use_dev_gate&amp;quot;: false&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Поле templates iOS =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;messages&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;aps&amp;quot;: {&lt;br /&gt;
        &amp;quot;alert&amp;quot;: &amp;quot;%PUSH_TEXT%&amp;quot;,&lt;br /&gt;
        &amp;quot;sound&amp;quot;: &amp;quot;%PUSH_SOUND%&amp;quot;,&lt;br /&gt;
        &amp;quot;badge&amp;quot;: &amp;quot;%PUSH_IOS_BADGE%&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;%PUSH_TYPE%&amp;quot;,&lt;br /&gt;
      &amp;quot;userid&amp;quot;: &amp;quot;%USER_ID%&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
      &amp;quot;pc_notification_type&amp;quot; : &amp;quot;alert/background&amp;quot;,&lt;br /&gt;
      &amp;quot;pc_notification_priority&amp;quot; : 10,&lt;br /&gt;
      &amp;quot;pc_notification_timeout&amp;quot;: 600,&lt;br /&gt;
      &amp;quot;pc_collapse_id&amp;quot;: &amp;quot;%USER_ID%&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Параметры с версии 3.7.398&lt;br /&gt;
* pc_notification_type&lt;br /&gt;
* pc_notification_priority&lt;br /&gt;
* pc_notification_timeout&lt;br /&gt;
* &#039;&#039;pc_collapse_id (с 5.0.110?)&#039;&#039;&lt;br /&gt;
задают соответственно&lt;br /&gt;
* apns-push-type. Возможные значения alert/background/voip/complication/fileprovider/mdm. По-умолчанию alert.&lt;br /&gt;
* apns-priority. Возможные значения 5 или 10. По-умолчанию 10.&lt;br /&gt;
* apns-expiration. Задаётся в секундах. Максимально возможное значение в секундах 2147483647. По-умолчанию не передаётся.&lt;br /&gt;
* &#039;&#039;apns-collapse-id. Значение, по которому будут группироваться и очищаться пуши (с 5.0.110?)&#039;&#039;.&lt;br /&gt;
pc_notification_timeout влияет на установку значение apns-expiration, вычисляющегося как (текущее значение UnixTime)+APNS_EXPIRATION.&lt;br /&gt;
&lt;br /&gt;
Подробнее https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/sending_notification_requests_to_apns&lt;br /&gt;
&lt;br /&gt;
Также с версии 3.7.398 в таблице pc_sys_property добавлен параметр APNS_EXPIRATION значение из которого будет браться, если в шаблоне не установлено значение pc_notification_timeout.&lt;br /&gt;
&lt;br /&gt;
===== Поле credentials для Android =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&amp;quot;google_api_key&amp;quot;:&amp;quot;AAAAZJTm6y0:APA91bF1OQYv9T2opZtIMJPZknA7tGLifzvTVB3PFSlQejBzPzyeYg4JFn-nud5mE_pZe920I2zR-8Lv-yabeaJ8PdduS96G3ESj_pfxAJAhaT1JistaXMchspMkPLL0e8tLxCmBzhda&amp;quot;}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====PayControl 3====&lt;br /&gt;
=====Android=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
INSERT INTO pc_split_pusher_credentials (&lt;br /&gt;
id,&lt;br /&gt;
appid,&lt;br /&gt;
credentials,&lt;br /&gt;
is_default,&lt;br /&gt;
os,&lt;br /&gt;
systemid)&lt;br /&gt;
VALUES (&lt;br /&gt;
nextval(&#039;pc_split_pusher_creds_seq&#039;),&lt;br /&gt;
&#039;ru.safe-tech.PayControl.v3&#039;,&lt;br /&gt;
&#039;{&amp;quot;google_api_key&amp;quot;:&amp;quot;AAAAZJTm6y0:APA91bF1OQYv9T2opZtIMJPZknA7tGLifzvTVB3PFSlQejBzPzyeYg4JFn-nud5mE_pZe920I2zR-8Lv-yabeaJ8PdduS96G3ESj_pfxAJAhaT1JistaXMchspMkPLL0e8tLxCmBzhda&amp;quot;}&#039;,&lt;br /&gt;
1,&lt;br /&gt;
&#039;Android&#039;,&lt;br /&gt;
&#039;%SYSTEMID%&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====iOS=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
INSERT INTO pc_split_pusher_credentials (&lt;br /&gt;
id,&lt;br /&gt;
appid,&lt;br /&gt;
credentials,&lt;br /&gt;
is_default,&lt;br /&gt;
os,&lt;br /&gt;
systemid)&lt;br /&gt;
VALUES (&lt;br /&gt;
nextval(&#039;pc_split_pusher_creds_seq&#039;),&lt;br /&gt;
&#039;ru.safe-tech.PayControl.v3&#039;,&lt;br /&gt;
&#039;{&amp;quot;apns_key_file&amp;quot;:&amp;quot;/opt/wildfly/safetech-apns-JVBQX52N5Z.p8&amp;quot;,&amp;quot;apns_key_id&amp;quot;:&amp;quot;JVBQX52N5Z&amp;quot;,&amp;quot;apns_team_id&amp;quot;:&amp;quot;48HZH4RWJD&amp;quot;}&#039;,&lt;br /&gt;
1,&lt;br /&gt;
&#039;iOS&#039;,&lt;br /&gt;
&#039;%SYSTEMID%&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====iOS sandbox=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
INSERT INTO pc_split_pusher_credentials (&lt;br /&gt;
id,&lt;br /&gt;
appid,&lt;br /&gt;
credentials,&lt;br /&gt;
os,&lt;br /&gt;
systemid)&lt;br /&gt;
VALUES (&lt;br /&gt;
nextval(&#039;pc_split_pusher_creds_seq&#039;),&lt;br /&gt;
&#039;ru.safe-tech.PayControl.v3.dev&#039;,&lt;br /&gt;
&#039;{&amp;quot;apns_key_file&amp;quot;:&amp;quot;/opt/wildfly/safetech-apns-JVBQX52N5Z.p8&amp;quot;,&amp;quot;apns_key_id&amp;quot;:&amp;quot;JVBQX52N5Z&amp;quot;,&amp;quot;apns_team_id&amp;quot;:&amp;quot;48HZH4RWJD&amp;quot;,&amp;quot;use_dev_gate&amp;quot;: true}&#039;,&lt;br /&gt;
&#039;iOS&#039;,&lt;br /&gt;
&#039;%SYSTEMID%&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====PayControl 5====&lt;br /&gt;
=====Android=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
INSERT INTO pc_split_pusher_credentials (&lt;br /&gt;
id,&lt;br /&gt;
appid,&lt;br /&gt;
credentials,&lt;br /&gt;
os,&lt;br /&gt;
systemid)&lt;br /&gt;
VALUES (&lt;br /&gt;
nextval(&#039;pc_split_pusher_creds_seq&#039;),&lt;br /&gt;
&#039;org.paycontrol.app&#039;,&lt;br /&gt;
&#039;{&amp;quot;google_api_key&amp;quot;:&amp;quot;AAAAoZ7vyz4:APA91bFqLfNegQCs_GfHGFeOmS68PHWWSzWpeZaYKfnLul9iHufIQJiNIAjgAykeWrTxiDDs9qQzullXww3o5XR0VS9tlBEpuhTMlz4CyHdmN2EhntJBBUlSQa-8--Rw_UzDbKBCGCXk&amp;quot;}&#039;,&lt;br /&gt;
&#039;Android&#039;,&lt;br /&gt;
&#039;%SYSTEMID%&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====iOS=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
INSERT INTO pc_split_pusher_credentials (&lt;br /&gt;
id,&lt;br /&gt;
appid,&lt;br /&gt;
credentials,&lt;br /&gt;
os,&lt;br /&gt;
systemid)&lt;br /&gt;
VALUES (&lt;br /&gt;
nextval(&#039;pc_split_pusher_creds_seq&#039;),&lt;br /&gt;
&#039;org.paycontrol.app&#039;,&lt;br /&gt;
&#039;{&amp;quot;apns_key_file&amp;quot;:&amp;quot;/opt/wildfly/safetech-apns-JVBQX52N5Z.p8&amp;quot;,&amp;quot;apns_key_id&amp;quot;:&amp;quot;JVBQX52N5Z&amp;quot;,&amp;quot;apns_team_id&amp;quot;:&amp;quot;48HZH4RWJD&amp;quot;}&#039;,&lt;br /&gt;
&#039;iOS&#039;,&lt;br /&gt;
&#039;%SYSTEMID%&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====iOS sandbox=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
INSERT INTO pc_split_pusher_credentials (&lt;br /&gt;
id,&lt;br /&gt;
appid,&lt;br /&gt;
credentials,&lt;br /&gt;
os,&lt;br /&gt;
systemid)&lt;br /&gt;
VALUES (&lt;br /&gt;
nextval(&#039;pc_split_pusher_creds_seq&#039;),&lt;br /&gt;
&#039;org.paycontrol.app.dev&#039;,&lt;br /&gt;
&#039;{&amp;quot;apns_key_file&amp;quot;:&amp;quot;/opt/wildfly/safetech-apns-JVBQX52N5Z.p8&amp;quot;,&amp;quot;apns_key_id&amp;quot;:&amp;quot;JVBQX52N5Z&amp;quot;,&amp;quot;apns_team_id&amp;quot;:&amp;quot;48HZH4RWJD&amp;quot;,&amp;quot;use_dev_gate&amp;quot;: true}&#039;,&lt;br /&gt;
&#039;iOS&#039;,&lt;br /&gt;
&#039;%SYSTEMID%&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====PayConfirm 5====&lt;br /&gt;
=====Android=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
INSERT INTO pc_split_pusher_credentials (&lt;br /&gt;
id,&lt;br /&gt;
appid,&lt;br /&gt;
credentials,&lt;br /&gt;
os,&lt;br /&gt;
systemid)&lt;br /&gt;
VALUES (&lt;br /&gt;
nextval(&#039;pc_split_pusher_creds_seq&#039;),&lt;br /&gt;
&#039;org.payconfirm.app&#039;,&lt;br /&gt;
&#039;{&amp;quot;google_api_key&amp;quot;:&amp;quot;AAAA4H70m7M:APA91bFsaPiXXiIuRyj4h-xGZpyd0-I3B9F1udIIergxaK8uL9vPPvUQXOvPfau2w8E-xur_6TlTzmhb2JsO13hBCxVDrNybD6Rj8k4hZKXfs7tC5fnJuWmCIB3-O_4dLo0QHlhfSbGn&amp;quot;}&#039;,&lt;br /&gt;
&#039;Android&#039;,&lt;br /&gt;
&#039;%SYSTEMID%&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====iOS=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
INSERT INTO pc_split_pusher_credentials (&lt;br /&gt;
id,&lt;br /&gt;
appid,&lt;br /&gt;
credentials,&lt;br /&gt;
os,&lt;br /&gt;
systemid)&lt;br /&gt;
VALUES (&lt;br /&gt;
nextval(&#039;pc_split_pusher_creds_seq&#039;),&lt;br /&gt;
&#039;org.payconfirm.app&#039;,&lt;br /&gt;
&#039;{&amp;quot;apns_key_file&amp;quot;:&amp;quot;/opt/pc/AuthKey_QCC684AGC4.p8&amp;quot;,&amp;quot;apns_key_id&amp;quot;:&amp;quot;QCC684AGC4&amp;quot;,&amp;quot;apns_team_id&amp;quot;:&amp;quot;B98K5P3YHV&amp;quot;}&#039;,&lt;br /&gt;
&#039;iOS&#039;,&lt;br /&gt;
&#039;%SYSTEMID%&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=====iOS Sandbox=====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
INSERT INTO pc_split_pusher_credentials (&lt;br /&gt;
id,&lt;br /&gt;
appid,&lt;br /&gt;
credentials,&lt;br /&gt;
os,&lt;br /&gt;
systemid)&lt;br /&gt;
VALUES (&lt;br /&gt;
nextval(&#039;pc_split_pusher_creds_seq&#039;),&lt;br /&gt;
&#039;org.payconfirm.app.dev&#039;,&lt;br /&gt;
&#039;{&amp;quot;apns_key_file&amp;quot;:&amp;quot;/opt/pc/AuthKey_QCC684AGC4.p8&amp;quot;,&amp;quot;apns_key_id&amp;quot;:&amp;quot;QCC684AGC4&amp;quot;,&amp;quot;apns_team_id&amp;quot;:&amp;quot;B98K5P3YHV&amp;quot;,&amp;quot;use_dev_gate&amp;quot;: true}&#039;,&lt;br /&gt;
&#039;iOS&#039;,&lt;br /&gt;
&#039;%SYSTEMID%&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Сервер PayControl 5.2===&lt;br /&gt;
Работа с аутентификационными данными в PayControl версии 5.2 описана в [[PC_Pusher_5.2|этой статье]].&lt;br /&gt;
&lt;br /&gt;
=Настройка шаблонов PayControl Interaction Server Internal (при необходимости)=&lt;br /&gt;
Настройки производятся в [[База данных PayControl#PCIS Internal|БД PCIS]]. Шаблон push-сообщений определяется в формате [[JSON]]. Существует два варианта настройки push-сообщений:&lt;br /&gt;
* для всех [[Прикладная система|прикладных систем]] - задаётся в таблице pc_sys_property (setting_name = ANDROID_PUSH_PAYLOAD_TEMPLATE/IOS_PUSH_PAYLOAD_TEMPLATE);&lt;br /&gt;
* для каждой [[Прикладная система|прикладной системы]] отдельно. Имеет более высокий приоритет. Задаётся в pc_push_credentials. Поля &#039;&#039;&#039;ios_push_template&#039;&#039;&#039; и &#039;&#039;&#039;android_push_template&#039;&#039;&#039; &lt;br /&gt;
==Переменные==&lt;br /&gt;
Доступны следующие переменные для использования в шаблоне:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Переменная&lt;br /&gt;
!Значение&lt;br /&gt;
|-&lt;br /&gt;
|%PUSH_TEXT% || PUSH_TEXT&lt;br /&gt;
|-&lt;br /&gt;
|%PUSH_TITLE% || PUSH_TITLE&lt;br /&gt;
|-&lt;br /&gt;
|%PUSH_SOUND% || PUSH_IOS_SOUND либо PUSH_ANDROID_SOUND, в зависимости от устройства, на которое отправляется пуш&lt;br /&gt;
|-&lt;br /&gt;
|%PUSH_ICON% || PUSH_ICON&lt;br /&gt;
|-&lt;br /&gt;
|%PUSH_IOS_BADGE% || PUSH_IOS_BADGE&lt;br /&gt;
|-&lt;br /&gt;
|%PUSH_TYPE% || &amp;quot;PayControl&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|%USER_ID% || userId&lt;br /&gt;
|-&lt;br /&gt;
|%SYSTEM_ID% || systemId&lt;br /&gt;
|-&lt;br /&gt;
|%TRANSACTION_ID% || transactionId&lt;br /&gt;
|-&lt;br /&gt;
|%DEVICE_TOKEN% || deviceId&lt;br /&gt;
|}&lt;br /&gt;
==Шаблоны для разных версий PCIS==&lt;br /&gt;
===До версии PCIS 3.5 включительно===&lt;br /&gt;
При создании транзакции отправляется одно push сообщение.&lt;br /&gt;
===Версия PCIS 3.5.5===&lt;br /&gt;
При отправке оповещения о созданной транзакции на android отправляются два push-сообщения - Notification и Silent. Такая модификация потребовалась в связи с тем, что некоторые устройства не будят приложение для отрисовки уведомления. Для этого в БД PCIS Internal добавлено поле android_second_push_template. &lt;br /&gt;
&lt;br /&gt;
Таким образом, значения полей выглядят следующим образом:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Поле&lt;br /&gt;
!Значение&lt;br /&gt;
|-&lt;br /&gt;
|android_push_template&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&amp;quot;to&amp;quot;:&amp;quot;%DEVICE_TOKEN%&amp;quot;,&amp;quot;notification&amp;quot;:{&amp;quot;tag&amp;quot;:&amp;quot;%USER_ID%&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;PayControl&amp;quot;,&amp;quot;body&amp;quot;:&amp;quot;%PUSH_TEXT%&amp;quot;,&amp;quot;icon&amp;quot;:&amp;quot;paycontrol_push&amp;quot;,&amp;quot;sound&amp;quot;:&amp;quot;default&amp;quot;},&amp;quot;data&amp;quot;:{&amp;quot;type&amp;quot;:&amp;quot;PayControl_v2&amp;quot;}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|android_second_push_template&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&amp;quot;to&amp;quot;:&amp;quot;%DEVICE_TOKEN%&amp;quot;,&amp;quot;data&amp;quot;: {&amp;quot;type&amp;quot;: &amp;quot;PayControl_v2&amp;quot;, &amp;quot;userid&amp;quot;: &amp;quot;%USER_ID%&amp;quot;}}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===С версии PCIS 3.6===&lt;br /&gt;
Шаблон push-сообщений определяется как массив шаблонов сообщений в формате [[JSON]], которые отправляются последовательно (количество элементов в массиве - от 1):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&amp;quot;messages&amp;quot;:[массив объектов шаблонов push-сообщений, который будет отправлен PayControl]}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Пример:&lt;br /&gt;
* android_push_template &amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&amp;quot;messages&amp;quot;:[{&amp;quot;to&amp;quot;:&amp;quot;%DEVICE_TOKEN%&amp;quot;,&amp;quot;notification&amp;quot;:{&amp;quot;tag&amp;quot;:&amp;quot;%USER_ID%&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;PayControl&amp;quot;,&amp;quot;body&amp;quot;:&amp;quot;%PUSH_TEXT%&amp;quot;,&amp;quot;icon&amp;quot;:&amp;quot;paycontrol_push&amp;quot;,&amp;quot;sound&amp;quot;:&amp;quot;default&amp;quot;},&amp;quot;data&amp;quot;:{&amp;quot;type&amp;quot;:&amp;quot;PayControl_v2&amp;quot;}},{&amp;quot;to&amp;quot;:&amp;quot;%DEVICE_TOKEN%&amp;quot;,&amp;quot;data&amp;quot;: {&amp;quot;type&amp;quot;: &amp;quot;PayControl_v2&amp;quot;, &amp;quot;userid&amp;quot;: &amp;quot;%USER_ID%&amp;quot;}}]}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* ios_push_template &amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&amp;quot;messages&amp;quot;:[{&amp;quot;aps&amp;quot;:{&amp;quot;alert&amp;quot;:&amp;quot;%PUSH_TEXT%&amp;quot;,&amp;quot;sound&amp;quot;:&amp;quot;%PUSH_SOUND%&amp;quot;,&amp;quot;badge&amp;quot;:%PUSH_IOS_BADGE%},&amp;quot;type&amp;quot;:&amp;quot;%PUSH_TYPE%&amp;quot;,&amp;quot;userid&amp;quot;:&amp;quot;%USER_ID%&amp;quot;}]}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Для мобильных приложений версии 3.7 и выше===&lt;br /&gt;
На Android стало достаточно отправки одного data-пуша. При этом можно указать следующие типы (type) (регистр не имеет значения):&lt;br /&gt;
* paycontrol и payconfirm - звук и вибрация;&lt;br /&gt;
* PayControl-v2 - использовать не стоит, т.к. в этом случае звука или вибрации не будет. Применяется в случае, если отправляется 2 пуша - notification и data.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&amp;quot;messages&amp;quot;:[{&amp;quot;to&amp;quot;:&amp;quot;%DEVICE_TOKEN%&amp;quot;,&amp;quot;data&amp;quot;: {&amp;quot;type&amp;quot;: &amp;quot;paycontrol&amp;quot;, &amp;quot;userid&amp;quot;: &amp;quot;%USER_ID%&amp;quot;}}]}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Тем не менее, шаблон следующий:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
   &amp;quot;messages&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;to&amp;quot;:&amp;quot;%DEVICE_TOKEN%&amp;quot;,&lt;br /&gt;
         &amp;quot;notification&amp;quot;:{&lt;br /&gt;
            &amp;quot;tag&amp;quot;:&amp;quot;%USER_ID%&amp;quot;,&lt;br /&gt;
            &amp;quot;title&amp;quot;:&amp;quot;PayControl&amp;quot;,&lt;br /&gt;
            &amp;quot;body&amp;quot;:&amp;quot;%PUSH_TEXT%&amp;quot;,&lt;br /&gt;
            &amp;quot;icon&amp;quot;:&amp;quot;paycontrol_push&amp;quot;,&lt;br /&gt;
            &amp;quot;sound&amp;quot;:&amp;quot;default&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;data&amp;quot;:{&lt;br /&gt;
            &amp;quot;type&amp;quot;:&amp;quot;PayControl_v2&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
         &amp;quot;to&amp;quot;:&amp;quot;%DEVICE_TOKEN%&amp;quot;,&lt;br /&gt;
         &amp;quot;data&amp;quot;:{&lt;br /&gt;
            &amp;quot;type&amp;quot;:&amp;quot;PayControl_v2&amp;quot;,&lt;br /&gt;
            &amp;quot;userid&amp;quot;:&amp;quot;%USER_ID%&amp;quot;&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
   ]&lt;br /&gt;
}&amp;lt;/source&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;update pc_push_credentials set android_push_template=&#039;{&amp;quot;messages&amp;quot;:[{&amp;quot;to&amp;quot;:&amp;quot;%DEVICE_TOKEN%&amp;quot;,&amp;quot;notification&amp;quot;:{&amp;quot;tag&amp;quot;:&amp;quot;%USER_ID%&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;PayControl&amp;quot;,&amp;quot;body&amp;quot;:&amp;quot;%PUSH_TEXT%&amp;quot;,&amp;quot;icon&amp;quot;:&amp;quot;paycontrol_push&amp;quot;,&amp;quot;sound&amp;quot;:&amp;quot;default&amp;quot;},&amp;quot;data&amp;quot;:{&amp;quot;type&amp;quot;:&amp;quot;PayControl_v2&amp;quot;}},{&amp;quot;to&amp;quot;:&amp;quot;%DEVICE_TOKEN%&amp;quot;,&amp;quot;data&amp;quot;: {&amp;quot;type&amp;quot;: &amp;quot;PayControl_v2&amp;quot;, &amp;quot;userid&amp;quot;: &amp;quot;%USER_ID%&amp;quot;}}]}&#039; where systemid=&#039;bef89e01-f248-4841-bd62-8b08056e6fea&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_push_credentials set ios_push_template=&#039;{&amp;quot;messages&amp;quot;:[{&amp;quot;aps&amp;quot;:{&amp;quot;alert&amp;quot;:&amp;quot;%PUSH_TEXT%&amp;quot;,&amp;quot;sound&amp;quot;:&amp;quot;%PUSH_SOUND%&amp;quot;,&amp;quot;badge&amp;quot;:%PUSH_IOS_BADGE%},&amp;quot;type&amp;quot;:&amp;quot;%PUSH_TYPE%&amp;quot;,&amp;quot;userid&amp;quot;:&amp;quot;%USER_ID%&amp;quot;}]}&#039; where systemid=&#039;bef89e01-f248-4841-bd62-8b08056e6fea&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Удаление шаблона второго push-сообщения:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_push_credentials set android_second_push_template = NULL;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Одним запросом:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_push_credentials set android_push_template=&#039;{&amp;quot;messages&amp;quot;:[{&amp;quot;to&amp;quot;:&amp;quot;%DEVICE_TOKEN%&amp;quot;,&amp;quot;notification&amp;quot;:{&amp;quot;tag&amp;quot;:&amp;quot;%USER_ID%&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;PayControl&amp;quot;,&amp;quot;body&amp;quot;:&amp;quot;%PUSH_TEXT%&amp;quot;,&amp;quot;icon&amp;quot;:&amp;quot;paycontrol_push&amp;quot;,&amp;quot;sound&amp;quot;:&amp;quot;default&amp;quot;},&amp;quot;data&amp;quot;:{&amp;quot;type&amp;quot;:&amp;quot;PayControl_v2&amp;quot;}},{&amp;quot;to&amp;quot;:&amp;quot;%DEVICE_TOKEN%&amp;quot;,&amp;quot;data&amp;quot;: {&amp;quot;type&amp;quot;: &amp;quot;PayControl_v2&amp;quot;, &amp;quot;userid&amp;quot;: &amp;quot;%USER_ID%&amp;quot;}}]}&#039;, ios_push_template=&#039;{&amp;quot;messages&amp;quot;:[{&amp;quot;aps&amp;quot;:{&amp;quot;alert&amp;quot;:&amp;quot;%PUSH_TEXT%&amp;quot;,&amp;quot;sound&amp;quot;:&amp;quot;%PUSH_SOUND%&amp;quot;,&amp;quot;badge&amp;quot;:%PUSH_IOS_BADGE%},&amp;quot;type&amp;quot;:&amp;quot;%PUSH_TYPE%&amp;quot;,&amp;quot;userid&amp;quot;:&amp;quot;%USER_ID%&amp;quot;}]}&#039;, android_second_push_template = NULL;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Добавление новой записи===&lt;br /&gt;
Указать верные:&lt;br /&gt;
* google_api_key&lt;br /&gt;
* apns_key_file&lt;br /&gt;
* apns_key_id&lt;br /&gt;
* apns_team_id&lt;br /&gt;
Уточнить:&lt;br /&gt;
* apns_app_id&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;INSERT INTO pc_push_credentials (systemid, android_push_template, google_api_key, ios_push_template, use_ios_fcm, apns_app_id, apns_key_file, apns_key_id, apns_team_id)  VALUES  (&#039;e33affa9-1ff8-4d2a-aa42-856fb59309e0&#039;, &#039;{&amp;quot;messages&amp;quot;:[{&amp;quot;to&amp;quot;:&amp;quot;%DEVICE_TOKEN%&amp;quot;,&amp;quot;notification&amp;quot;:{&amp;quot;tag&amp;quot;:&amp;quot;%USER_ID%&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;PayControl&amp;quot;,&amp;quot;body&amp;quot;:&amp;quot;%PUSH_TEXT%&amp;quot;,&amp;quot;icon&amp;quot;:&amp;quot;paycontrol_push&amp;quot;,&amp;quot;sound&amp;quot;:&amp;quot;default&amp;quot;},&amp;quot;data&amp;quot;:{&amp;quot;type&amp;quot;:&amp;quot;PayControl_v2&amp;quot;}},{&amp;quot;to&amp;quot;:&amp;quot;%DEVICE_TOKEN%&amp;quot;,&amp;quot;data&amp;quot;: {&amp;quot;type&amp;quot;: &amp;quot;PayControl_v2&amp;quot;, &amp;quot;userid&amp;quot;: &amp;quot;%USER_ID%&amp;quot;}}]}&#039;, &#039;AAAAZJTm6y0:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&#039;, &#039;{&amp;quot;messages&amp;quot;:[{&amp;quot;aps&amp;quot;:{&amp;quot;alert&amp;quot;:&amp;quot;%PUSH_TEXT%&amp;quot;,&amp;quot;sound&amp;quot;:&amp;quot;%PUSH_SOUND%&amp;quot;,&amp;quot;badge&amp;quot;:%PUSH_IOS_BADGE%},&amp;quot;type&amp;quot;:&amp;quot;%PUSH_TYPE%&amp;quot;,&amp;quot;userid&amp;quot;:&amp;quot;%USER_ID%&amp;quot;}]}&#039;, &#039;0&#039;,&#039;ru.safe-tech.PayControl.v3&#039;,&#039;/opt/wildfly/safetech-apns-JVBQX52N5Z.p8&#039;,&#039;JVXXXXXXXXX&#039;,&#039;48XXXXXXX&#039;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Использование FCM для iOS ==&lt;br /&gt;
В таблице pc_push_credentials можно выставить значение use_ios_fcm в значение 1. В этом случае для отправки push-сообщения в iOS будет использоваться Google Firebase.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;При использовании use_ios_fcm обязательно указать шаблон push-сообщения для iOS, иначе push-сообщение пойдет в формате APNS, что вызовет ошибку&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Пример шаблона push-сообщения для iOS через FCM:&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&amp;quot;messages&amp;quot;:[{&amp;quot;to&amp;quot;:&amp;quot;%DEVICE_TOKEN%&amp;quot;,&amp;quot;notification&amp;quot;:{&amp;quot;title&amp;quot;:&amp;quot;Название Банка&amp;quot;,&amp;quot;body&amp;quot;:&amp;quot;%PUSH_TEXT%&amp;quot;,&amp;quot;sound&amp;quot;:&amp;quot;%PUSH_SOUND%&amp;quot;,&amp;quot;badge&amp;quot;:%PUSH_IOS_BADGE%},&amp;quot;data&amp;quot;:{&amp;quot;type&amp;quot; : &amp;quot;%PUSH_TYPE%&amp;quot;,&amp;quot;userid&amp;quot;:&amp;quot;%USER_ID%&amp;quot;}}]}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Пример запроса к БД PCIS для переключения на использование FCM для iOS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;update pc_push_credentials set use_ios_fcm=1, ios_push_template=&#039;{&amp;quot;messages&amp;quot;:[{&amp;quot;to&amp;quot;:&amp;quot;%DEVICE_TOKEN%&amp;quot;,&amp;quot;notification&amp;quot;:{&amp;quot;title&amp;quot;:&amp;quot;Название банка&amp;quot;,&amp;quot;body&amp;quot;:&amp;quot;%PUSH_TEXT%&amp;quot;,&amp;quot;sound&amp;quot;:&amp;quot;%PUSH_SOUND%&amp;quot;,&amp;quot;badge&amp;quot;:%PUSH_IOS_BADGE%},&amp;quot;data&amp;quot;:{&amp;quot;type&amp;quot;:&amp;quot;%PUSH_TYPE%&amp;quot;,&amp;quot;userid&amp;quot;:&amp;quot;%USER_ID%&amp;quot;}}]}&#039;;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Настройка для работы через [[pcwiki:PayControl Inform|PayControl Inform]]=&lt;br /&gt;
В [[База данных PayControl#pc_system|БД PCS в таблице pc_system]] значение pc_is_internal_url должно иметь вид:&lt;br /&gt;
   [pc-inform]{PayControl Infrom URL}&lt;br /&gt;
Например:&lt;br /&gt;
   [pc-inform]http://pcinform.local/api/notification/&lt;br /&gt;
&lt;br /&gt;
Для настройки шаблонов push-сообщений, в БД PCS, в [[Сервер PayControl#PCS|таблице pc_sys_properties]] должны быть записи (формат шаблона - PC Inform):&lt;br /&gt;
   setting_name = ANDROID_PUSH_PAYLOAD_TEMPLATE&lt;br /&gt;
   setting_value = {&amp;quot;messages&amp;quot;:[{&amp;quot;notification&amp;quot;:{&amp;quot;tag&amp;quot;:&amp;quot;%USER_ID%&amp;quot;,&amp;quot;title&amp;quot;:&amp;quot;PayControl&amp;quot;,&amp;quot;body&amp;quot;:&amp;quot;%PUSH_TEXT%&amp;quot;,&amp;quot;icon&amp;quot;:&amp;quot;paycontrol_push&amp;quot;,&amp;quot;sound&amp;quot;:&amp;quot;default&amp;quot;},&amp;quot;data&amp;quot;:{&amp;quot;type&amp;quot;:&amp;quot;PayControl_v2&amp;quot;}},{&amp;quot;data&amp;quot;: {&amp;quot;type&amp;quot;: &amp;quot;PayControl_v2&amp;quot;, &amp;quot;userid&amp;quot;: &amp;quot;%USER_ID%&amp;quot;}}]}&lt;br /&gt;
&lt;br /&gt;
   setting_name = IOS_PUSH_PAYLOAD_TEMPLATE&lt;br /&gt;
   setting_value = {&amp;quot;messages&amp;quot;:[{&amp;quot;aps&amp;quot;:{&amp;quot;alert&amp;quot;:&amp;quot;%PUSH_TEXT%&amp;quot;,&amp;quot;sound&amp;quot;:&amp;quot;%PUSH_SOUND%&amp;quot;,&amp;quot;badge&amp;quot;:%PUSH_IOS_BADGE%},&amp;quot;type&amp;quot;:&amp;quot;%PUSH_TYPE%&amp;quot;,&amp;quot;userid&amp;quot;:&amp;quot;%USER_ID%&amp;quot;}]}&lt;br /&gt;
&lt;br /&gt;
=Адреса серверов для отправки Push=&lt;br /&gt;
==Apple Push Notification Service==&lt;br /&gt;
Development server: api.development.push.apple.com:443 (используется для отправки уведомлений в debug-сборки (залитые из XCode))&lt;br /&gt;
&lt;br /&gt;
Production server: &#039;&#039;&#039;api.push.apple.com:443&#039;&#039;&#039; (Используется для отправки в приложения из AppStore и TestFlight)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;!!!В PayControl в настоящее время не используется!!! Вместо порта 443 можно использовать порт 2197 для связи с APNS. К примеру этот порт можно использовать, если система фильтрации на межсетевом экране не позволяет разрешить трафик по 443 порту исключительно с серверами APNS.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Участник:A.bursakov|A.bursakov]] ([[Обсуждение участника:A.bursakov|обсуждение]]) 16:47, 7 августа 2018 (MSK)&lt;br /&gt;
&lt;br /&gt;
Источник - https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingwithAPNs.html&lt;br /&gt;
&lt;br /&gt;
==Google Firebase==&lt;br /&gt;
===Актуальный API===&lt;br /&gt;
Для отправки push-сообщений, запросы должны отправляться по адресу https://&#039;&#039;&#039;fcmdata.googleapis.com&#039;&#039;&#039; и https://&#039;&#039;&#039;oauth2.googleapis.com:443&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
Источник - https://firebase.google.com/docs/reference/fcmdata/rest?hl=ru&lt;br /&gt;
&lt;br /&gt;
===Legacy===&lt;br /&gt;
Для отправки push-сообщений, запросы должны отправляться по адресу https://&#039;&#039;&#039;fcm.googleapis.com:443&#039;&#039;&#039;/fcm/send&lt;br /&gt;
&lt;br /&gt;
[[Участник:A.bursakov|A.bursakov]] ([[Обсуждение участника:A.bursakov|обсуждение]]) 16:47, 7 августа 2018 (MSK)&lt;br /&gt;
&lt;br /&gt;
Источник - https://firebase.google.com/docs/cloud-messaging/http-server-ref&lt;br /&gt;
&lt;br /&gt;
==Huawei Mobile Services==&lt;br /&gt;
Для отправки push-сообщений, запросы должны отправляться по адресу https://&#039;&#039;&#039;push-api.cloud.huawei.com&#039;&#039;&#039; ,порт 443&lt;br /&gt;
&lt;br /&gt;
Также, с сервера PC Pusher должен быть доступен адрес: https://oauth-login.cloud.huawei.com/oauth2/v3/token&lt;br /&gt;
&lt;br /&gt;
Источник - https://developer.huawei.com/consumer/en/doc/quickapp-access-push-kit#h2-1582279071471&lt;br /&gt;
&lt;br /&gt;
=Проблемы при отправке пушей=&lt;br /&gt;
Проблемы при отправке пуша могут быть следующие:&lt;br /&gt;
* Создаётся транзакция без указания notification_type &amp;quot;PUSH&amp;quot;&lt;br /&gt;
* У PCS нет связи с PCP (ошибка свидетельствующая об этом должна быть в логе PCS, в момент попытки отправки пуша).&lt;br /&gt;
* У PCP не настроены аутентификационные данные для отправки пушей&lt;br /&gt;
* У PCP нет доступа к серверам Firebase/APNS&lt;br /&gt;
* На телефоне не разрешён приём пушей для приложения&lt;br /&gt;
[[Категория:Серверная часть]]&lt;br /&gt;
[[Категория:Мобильное приложение]]&lt;/div&gt;</summary>
		<author><name>D.bizyukov</name></author>
	</entry>
</feed>