Установка компонентов сервера PayControl v3.8 вручную

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

Содержание

Подготовка БД

  • Создать базу данных и пользователя на сервере СУБД, где будет работать база данных PC Server (pcs-user, pcs-pass, pcs-db, pcs-db-host). Предоставить права на доступ пользователю к БД.

Установка Java

Установить последнюю версию JRE 11.

Установка Wildfly

Далее по тексту, под WF_PATH имеется в виду адрес созданной символьной ссылки.

Linux

При распаковке рекомендуется исключить кириллические символы в пути, а также пробелы.

  • Распаковать Wildfly, например, в /opt/.
  • Создать символьную ссылку /opt/wildfly на распакованную директорию. Пример команды:
    ln -s /opt/wildfly-26.0.0.Final/ /opt/wildfly
    

Windows

При распаковке рекомендуется исключить кириллические символы в пути, а также пробелы.

  • Распаковать Wildfly, например, в C:\.
  • Создать символьную ссылку, к примеру C:\wildfly, на распакованную директорию. Пример команды:
    mklink /D C:\wildfly C:\wildfly-26.0.0.Final\
    

Удаление настроек WildFly по-умолчанию

Для удаления настроек по-умолчанию, необходимо выполнить пункты описанные по ссылке Wildfly - Удаление настроек по умолчанию

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

Добавление JDBC-драйвера СУБД

PostgreSQL

  • Скачать актуальный JDBC-драйвер по адресу https://jdbc.postgresql.org/
  • Создать директорию WF_PATH/modules/org/postgresql/main/
  • В директорию WF_PATH/modules/org/postgresql/main/ поместить скачанный postgresql-*.*.*.jar
  • Создать в этой же папке файл module.xml следующего содержания, указав имя файла драйвера вместо "JAR_PATH":
    <?xml version="1.0" encoding="UTF-8"?>
    <module xmlns="urn:jboss:module:1.0" name="org.postgresql">
      <resources>
         <resource-root path="JAR_PATH"/>
      </resources>
      <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
        <module name="javax.servlet.api" optional="true"/>
      </dependencies>
    </module>
    
  • Добавить установленный модуль в качестве драйвера для подключения к СУБД в файл WF_PATH/standalone/configuration/standalone.xml, в секцию <datasources/drivers>, добавив следующий блок:
    <driver name="pgsql" module="org.postgresql">
        <driver-class>org.postgresql.Driver</driver-class>
    </driver>
    

MS SQL

  • Скачать JDBC-драйвер с сайта Microsoft https://docs.microsoft.com/ru-ru/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15
  • Создать директорию WF_PATH/modules/system/layers/base/com/microsoft/sqlserver/main/
  • В директорию распаковать файлы и директории драйвера. Файлы драйвера (*.jar) должны располагаться непосредственно в директории main/
  • Создать в этой же папке файл module.xml следующего содержания, заменив JAR_PATH на имя файла драйвера, например на mssql-jdbc-8.2.2.jre8.jar:
    <?xml version="1.0" encoding="UTF-8"?>
    <module xmlns="urn:jboss:module:1.3" name="com.microsoft.sqlserver">
      <resources>
        <resource-root path="JAR_PATH"/>
      </resources>
      <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
        <module name="javax.xml.bind.api"/>
      </dependencies>
    </module>
    
  • Добавить установленный модуль в качестве драйвера для подключения к СУБД в файл WF_PATH/standalone/configuration/standalone.xml, в секцию <datasources/drivers>, добавив следующий блок:
    <driver name="mssql" module="com.microsoft.sqlserver">
    	<driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
    </driver>
    

Oracle

  • Скачать актуальный JDBC-драйвер по адресу https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html
  • Создать директорию WF_PATH/modules/org/postgresql/main/
  • В директорию WF_PATH/modules/system/layers/base/com/oracle/main/ поместить скачанный ojdbc*.jar.
  • Создать в этой же папке файл module.xml следующего содержания, указав имя файла драйвера вместо "JAR_PATH":
    <?xml version="1.0" encoding="UTF-8"?>
    <module xmlns="urn:jboss:module:1.0" name="com.oracle">
      <resources>
         <resource-root path="JAR_PATH"/>
      </resources>
      <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
      </dependencies>
    </module>
    
  • Добавить установленный модуль в качестве драйвера для подключения к СУБД в файл WF_PATH/standalone/configuration/standalone.xml, в секцию <datasources/drivers>, добавив следующий блок:
    <driver name="oracle" module="com.oracle">
        <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
    </driver>
    

Особенности маппинга Oracle

Для корректной установки PC Server с подключением к БД Oracle требуется создать/изменить некоторые таблицы вручную:

Инструкция:

  • Заменить по содержимому ниже
    <TABLESPACE_NAME>
    <USER_NAME>
    <USER_PASS>
    
  • Из-под пользователя с правами на создание пользователей и табличных пространств выполнить:
    ---Создание табличного пространства и пользователя---
    CREATE TABLESPACE <TABLESPACE_NAME> DATAFILE '<TABLESPACE_NAME>.DAT' SIZE 50M AUTOEXTEND ON;
    CREATE USER "<USER_NAME>" IDENTIFIED BY "<USER_PASS>" DEFAULT TABLESPACE <TABLESPACE_NAME>;
    GRANT CREATE SESSION TO "<USER_NAME>";
    GRANT CREATE TABLE TO "<USER_NAME>";
    GRANT CREATE SEQUENCE TO "<USER_NAME>";
    GRANT UNLIMITED TABLESPACE TO "<USER_NAME>";
    
  • Из-под созданного пользователя, под которым будет производиться подключение PC к БД выполнить:
    ---Создание таблиц---
       CREATE TABLE "PC_SYS_PROPERTY" 
       ("SETTING_ID" NUMBER(19,0) NOT NULL ENABLE, 
    	"SETTING_NAME" VARCHAR2(255), 
    	"SETTING_VALUE" VARCHAR2(255),
    	 PRIMARY KEY ("SETTING_ID"),
    	 CONSTRAINT "UK_BYEQYB1KICGD7SNXKM5L52582" UNIQUE ("SETTING_NAME"));
     
    	CREATE TABLE "PC_SYSTEM" 
       (	"SYSTEMID" VARCHAR2(36) NOT NULL ENABLE, 
    	"CREATED_AT" DATE, 
    	"IS_DELETED" NUMBER(5,0), 
    	"UPDATED_AT" DATE, 
    	"EVENTS_POST_URL" VARCHAR2(1024), 
    	"NAME" VARCHAR2(255), 
    	"PC_IS_EXTERNAL_URL" VARCHAR2(255), 
    	"PC_IS_INTERNAL_URL" VARCHAR2(255), 
    	 PRIMARY KEY ("SYSTEMID"));
    
    	CREATE TABLE "PC_SYSTEM_PARAMS" 
    (	"SYSTEMID" VARCHAR2(36) NOT NULL ENABLE, 
    	"CREATED_AT" DATE, 
    	"IS_DELETED" NUMBER(5,0), 
    	"UPDATED_AT" DATE, 
    	"BILLED_DATE_REQUEST" CLOB, 
    	"BILLING_PERIOD" NUMBER(10,0), 
    	"BILLED_DATE" DATE, 
    	"BILLING_TYPE" NUMBER(10,0), 
    	"DESCRIPTION" VARCHAR2(255), 
    	"FRONT_END_URL" VARCHAR2(255), 
    	"LICENSE" VARCHAR2(2048), 
    	"ONLINE_CONFIRMATION_URL" VARCHAR2(255), 
    	"REGISTER_REQUEST" CLOB, 
    	"REPORT_TEMPLATE_PATH" VARCHAR2(255), 
    	"USER_KEYS_EXPIRATION_PERIOD" NUMBER(10,0),
    	 PRIMARY KEY ("SYSTEMID"));
     
    	  CREATE TABLE "PC_USER" 
       ("USERID" VARCHAR2(64) NOT NULL ENABLE, 
    	"CREATED_AT" DATE, 
    	"IS_DELETED" NUMBER(5,0), 
    	"UPDATED_AT" DATE, 
    	"BILLED_DATE" DATE, 
    	"SYSTEMID" VARCHAR2(36), 
    	 PRIMARY KEY ("USERID"),
    	 CONSTRAINT "FKGLUVAW7N4TKK6V6XALY8IK3S2" FOREIGN KEY ("SYSTEMID")
    	  REFERENCES "PC_SYSTEM" ("SYSTEMID") ENABLE
       );
     
      CREATE TABLE "PC_TRANSACTION" 
       (	"TRANSACTIONID" VARCHAR2(36) NOT NULL ENABLE, 
    	"CREATED_AT" DATE, 
    	"IS_DELETED" NUMBER(5,0), 
    	"UPDATED_AT" DATE, 
    	"CALLBACK_URL" VARCHAR2(255), 
    	"IS_CLEANED" NUMBER(5,0), 
    	"CONFIRM_CODE_LENGTH" NUMBER(10,0), 
    	"CONFIRMATION_TYPE" NUMBER(10,0), 
    	"DECLINE_REASON" VARCHAR2(64), 
    	"DATA_HASH" RAW(255), 
    	"NOTIF_ID" VARCHAR2(255), 
    	"STATUS" NUMBER(10,0), 
    	"TIME_TO_LIVE" NUMBER(10,0), 
    	"DATA_BINARY" BLOB, 
    	"DATA_TEXT" VARCHAR2(3095), 
    	"USERID" VARCHAR2(64), 
    	 PRIMARY KEY ("TRANSACTIONID"),
    	 CONSTRAINT "FKARQ3VEGMNJXEJK8ONU4HRHEN3" FOREIGN KEY ("USERID")
    	  REFERENCES "PC_USER" ("USERID") ENABLE
    	 );
     
    	CREATE TABLE "PC_CONFIRM_ATTEMPT" 
       (	"CONFIRM_ATTEMPT_ID" NUMBER(19,0) NOT NULL ENABLE, 
    	"CREATED_AT" DATE, 
    	"IS_DELETED" NUMBER(5,0), 
    	"UPDATED_AT" DATE, 
    	"CONFIRM_CODE" VARCHAR2(255), 
    	"CONFIRM_RESULT" NUMBER(10,0), 
    	"DATA_HASH" RAW(255), 
    	"SIGNATURE" VARCHAR2(512), 
    	"TRANSACTIONID" VARCHAR2(36), 
    	"USERID" VARCHAR2(64), 
    	 PRIMARY KEY ("CONFIRM_ATTEMPT_ID"), 
    	 CONSTRAINT "FK5258W9Y6WQ4FY55U41WB30OWG" FOREIGN KEY ("TRANSACTIONID")
    	  REFERENCES "PC_TRANSACTION" ("TRANSACTIONID") ENABLE, 
    	 CONSTRAINT "FKHEJP6UYKY6U4X8QFDPV4VA63Y" FOREIGN KEY ("USERID")
    	  REFERENCES "PC_USER" ("USERID") ENABLE
       );
     
    	CREATE TABLE "PC_DELAYEDKEYINFO" 
       (	"TYPE" NUMBER(10,0) NOT NULL ENABLE, 
    	"DELAYEDKEYID" NUMBER(19,0) NOT NULL ENABLE, 
    	"CREATED_AT" DATE, 
    	"IS_DELETED" NUMBER(5,0), 
    	"UPDATED_AT" DATE, 
    	"KEY_CONTAINER_ID" VARCHAR2(255), 
    	"KEY_CONTENT" RAW(255), 
    	"EXPIRATION_DATE" DATE, 
    	"USER_KEY_VERSION" NUMBER(10,0), 
    	"USERID" VARCHAR2(64), 
    	 PRIMARY KEY ("DELAYEDKEYID"), 
    	 CONSTRAINT "FK73X95ORVBL8BA0T3A3WEWADRF" FOREIGN KEY ("USERID")
    	  REFERENCES "PC_USER" ("USERID") ENABLE
       );
     
    CREATE TABLE "PC_DEVICE" 
       (	"TYPE" NUMBER(10,0) NOT NULL ENABLE, 
    	"DEVICEID" NUMBER(19,0) NOT NULL ENABLE, 
    	"CREATED_AT" DATE, 
    	"IS_DELETED" NUMBER(5,0), 
    	"UPDATED_AT" DATE, 
    	"DEVICE_PUSH_ID" VARCHAR2(255), 
    	"USERID" VARCHAR2(64), 
    	 PRIMARY KEY ("DEVICEID"), 
    	 CONSTRAINT "FK8CMG562COTMP53MVGRDDF1EYA" FOREIGN KEY ("USERID")
    	  REFERENCES "PC_USER" ("USERID") ENABLE
       );
     
     
        CREATE TABLE "PC_KEYINFO" 
       (	"TYPE" NUMBER(10,0) NOT NULL ENABLE, 
    	"KEYID" NUMBER(19,0) NOT NULL ENABLE, 
    	"CREATED_AT" DATE, 
    	"IS_DELETED" NUMBER(5,0), 
    	"UPDATED_AT" DATE, 
    	"KEY_CONTAINER_ID" VARCHAR2(255), 
    	"KEY_CONTENT" RAW(255), 
    	"EXPIRATION_DATE" DATE, 
    	"DEVICE_FINGERPRINT" VARCHAR2(255), 
    	"USER_KEY_VERSION" NUMBER(10,0), 
    	"USERID" VARCHAR2(64), 
    	 PRIMARY KEY ("KEYID"), 
    	 CONSTRAINT "FKN3VEB4OTVNAIE35AWBD0HDS90" FOREIGN KEY ("USERID")
    	  REFERENCES "PC_USER" ("USERID") ENABLE
       );
     
      CREATE TABLE "PC_PUBLICKEY" 
       (	"PUBLICKEYID" NUMBER(19,0) NOT NULL ENABLE, 
    	"CREATED_AT" DATE, 
    	"IS_DELETED" NUMBER(5,0), 
    	"UPDATED_AT" DATE, 
    	"PUBLIC_KEY" RAW(512), 
    	"KEYID" NUMBER(19,0), 
    	 PRIMARY KEY ("PUBLICKEYID"), 
    	 CONSTRAINT "FKEMTGHSA74S1WI903R2TN7T3N" FOREIGN KEY ("KEYID")
    	  REFERENCES "PC_KEYINFO" ("KEYID") ENABLE
       );
    
      CREATE TABLE "PC_EVENT" 
       (	"EVENTID" NUMBER(19,0) NOT NULL ENABLE, 
    	"CREATED_AT" DATE, 
    	"IS_DELETED" NUMBER(5,0), 
    	"UPDATED_AT" DATE, 
    	"AUTH_CODE" VARCHAR2(64), 
    	"DEVICE_EVENTID" VARCHAR2(36), 
    	"DEVICE_INFO" CLOB, 
    	"DEVICE_TIME" DATE, 
    	"EVENTPOSTURL" VARCHAR2(255), 
    	"REQUEST_HMAC" VARCHAR2(64), 
    	"REQUEST_HASH" VARCHAR2(64), 
    	"REQUEST_RESULT" NUMBER(10,0), 
    	"REQUEST_TYPE" VARCHAR2(36), 
    	"REQUESTER_IP" VARCHAR2(15), 
    	"SESSIONID" VARCHAR2(36), 
    	"TRANSACTIONID" VARCHAR2(36), 
    	"USERID" VARCHAR2(64), 
    	 PRIMARY KEY ("EVENTID"));
    
    ---Создание индексов
    CREATE INDEX pc_keyinfo1_idx ON PC_KEYINFO (userID, expiration_date, is_deleted);
    CREATE INDEX pc_delayedkeyinfo1_idx ON PC_DELAYEDKEYINFO (userID, is_deleted);
    CREATE INDEX pc_device1_idx ON PC_DEVICE (userID, is_deleted); 
    CREATE INDEX pc_transaction1_idx ON PC_TRANSACTION (userID, status);
    CREATE INDEX pc_device2_idx ON PC_DEVICE (userID); 
    CREATE INDEX pc_keyinfo2_idx ON PC_KEYINFO (userID); 
    CREATE INDEX pc_transaction2_idx ON PC_TRANSACTION (userID); 
    CREATE INDEX pc_user1_idx ON PC_USER (systemID);
    
    ---Создание очередей---
    create sequence PC_ATTEMPT_SEQ start with 1 increment by 1;
    create sequence PC_DELAYEDKEYINFO_SEQ start with 1 increment by 1;
    create sequence PC_DEVICE_SEQ start with 1 increment by 1;
    create sequence PC_KEYINFO_SEQ start with 1 increment by 1;
    create sequence PC_PUBLICKEY_SEQ start with 1 increment by 1;
    create sequence PC_SETTING_SEQ start with 1 increment by 1;
    create sequence PC_EVENT_SEQ start with 1 increment by 1;
    create sequence PC_PUSH_SEQ start with 1 increment by 1;
    

Добавление источников данных для PC Server

При установке PC Pusher версии 5.2.х и выше, подключение к БД PC Pusher не требуется

PostgreSQL

PC Server

В файл WF_PATH/standalone/configuration/standalone.xml внести следующие изменения добавить новый источник данных в секцию <datasources></datasources> заменив pcs-db-host, port, pcs-db, pcs-user, pcs-pass:

<datasource jta="true" jndi-name="java:jboss/datasources/PayControlDS" pool-name="PayControlDS" enabled="true" use-ccm="true">
    <connection-url>jdbc:postgresql://pcs-db-host:port/pcs-db</connection-url>
    <driver-class>org.postgresql.Driver</driver-class>
    <driver>pgsql</driver>
    <security>
        <user-name>pcs-user</user-name>
        <password>pcs-pass</password>
    </security>
    <validation>
        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"/>
        <background-validation>true</background-validation>
        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"/>
    </validation>
</datasource>

MS SQL

PC Server

В файл WF_PATH/standalone/configuration/standalone.xml внести следующие изменения добавить новый источник данных в секцию <datasources></datasources> заменив pcs-db-host, port, pcs-db-host, pcs-db, pcs-user, pcs-pass:

<datasource jta="true" jndi-name="java:jboss/datasources/PayControlDS" pool-name="PayControlDS" enabled="true" use-ccm="true">
	<connection-url>jdbc:sqlserver://pcs-db-host:port;databaseName=pcs-db</connection-url>
	<driver>mssql</driver>
	<security>
		<user-name>pcs-user</user-name>
		<password>pcs-pass</password>
	</security>
	<pool>
		<min-pool-size>5</min-pool-size>
		<max-pool-size>50</max-pool-size>
		<prefill>false</prefill>
		<use-strict-min>false</use-strict-min>
		<flush-strategy>FailingConnectionOnly</flush-strategy>
	</pool>
	<validation>
		<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"></valid-connection-checker>
	</validation>
</datasource>

Oracle

PC Server

В файл WF_PATH/standalone/configuration/standalone.xml внести следующие изменения добавить новый источник данных в секцию <datasources></datasources> заменив pcs-db-host, port, pcs-db, pcs-user, pcs-pass:

<datasource jta="true" jndi-name="java:jboss/datasources/PayControlDS" pool-name="PayControlDS" enabled="true" use-ccm="true">
    <connection-url>jdbc:oracle:thin:@pcs-db-host:port:sid</connection-url>
    <driver-class>org.postgresql.Driver</driver-class>
    <driver>oracle</driver>
    <security>
        <user-name>pcs-user</user-name>
        <password>pcs-pass</password>
    </security>
    <pool>
        <min-pool-size>1</min-pool-size>
        <max-pool-size>5</max-pool-size>
        <prefill>true</prefill>
    </pool>
    <validation>
        <check-valid-connection-sql>select 1 from dual</check-valid-connection-sql>
        <validate-on-match>false</validate-on-match>
        <background-validation>true</background-validation>
        <background-validation-millis>10000</background-validation-millis>
    </validation>
</datasource>

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

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

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

Настройка выделения памяти серверу

На всех серверах установить максимальный объем доступной для использования памяти:

  • на Linux в WF_PATH/bin/standalone.conf указать объём «ОбщийОбъёмОЗУ - 512MB»
  • на Windows в WF_PATH\bin\standalone.conf.bat указать объём «ОбщийОбъёмОЗУ - 1536MB»

Для этого в строке JAVA_OPTS="-Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true" поменять значение параметра Xmx на выделяемый объём.

Запуск проекта

  • Скопировать файл приложения сервера WF_PATH\standalone\deployments\:
    • на PC Server - файл PayControl-services-module-<VERSION>.ear
    • на PC Pusher - файл pc-pusher-<VERSION>.war
    • на PCIS External - файл PayControl-interaction-rest-<VERSION>.war

Один сервер WildFly может запускать одно или несколько приложений сервера

  • Запустить
    • Linux
      WF_PATH/bin/standalone.sh -b 0.0.0.0
      
    • Windows
      WF_PATH\bin\standalone.bat -b 0.0.0.0
      
    где -b 0.0.0.0 - позволяет подключаться к серверу используя любой его интерфейс (опция bind)
  • Дождаться старта WF, проверить, что нет ошибок запуска.

Настройка автозапуска службы сервера

Linux

Для настройки автозапуска службы, перейти в каталог WF_PATH/docs/contrib/scripts/systemd/ и выполнить шаги, описанные в файле README в этом каталоге, за исключением пунктов распаковки и создания символьной ссылки на каталог. Пункт chown -R wildfly:wildfly /opt/wildfly необходимо выполнить с параметрами «-RH» (параметр «H» указывает, что если на вход подана символьная ссылка, то нужно пойти вглубь каталога, на который она ссылается). Таким образом команда должна выглядеть следующим образом:

chown -RHv wildfly:wildfly /opt/wildfly

При запуске в качестве службы, возможно отклонение запросов. В таком случае необходимо установить параметры JAVA_OPTS в файле standalone.conf:

JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address=0.0.0.0"

Windows

Скопировать папку
WF_PATH\docs\contrib\scripts\service\
в папку
WF_PATH\bin\


Выполнить

WF_PATH\bin\service\service.bat install /startup

При запуске в качестве службы, возможно отклонение запросов. В таком случае необходимо установить параметры JAVA_OPTS в файле standalone.conf.bat выше метки :JAVA_OPTS_SET.

set "JAVA_OPTS=%JAVA_OPTS% -Djboss.bind.address=0.0.0.0"

URL-фильтрация при совмещении PC Pusher и PCIS External

При совмещении ролей PC Pusher и PCIS External на одном сервере необходимо исключить возможность выполнения запросов PC Pusher со стороны сети интернет.

Для этого необходимо со стороны сети интернет разрешить подключения только на конечную точку PCIS External.
Конечная точка PCIS External - <host>:<port>/PayControl-interaction-rest/*
Доступ к другим конечным точкам должен быть запрещен.

При этом доступ к PC Pusher со стороны PC Server должен сохраниться.
Конечная точка PC Pusher - <host>:<port>/pc-pusher-api/*

Внесение изменений в БД

Создание индексов БД PC Server

После первого запуска приложения, в базе данных будут созданы необходимые таблицы.

На продуктивной среде после этого необходимо создать индексы в базе данных(за исключением Oracle) PC Server.

Для этого выполните SQL скрипт:

create index pc_keyinfo1_idx on PC_KEYINFO (userID, expiration_date, is_deleted);
create index pc_delayedkeyinfo1_idx on PC_DELAYEDKEYINFO (userID, is_deleted);
create index pc_device1_idx on PC_DEVICE (userID, is_deleted); 
create index pc_transaction1_idx on PC_TRANSACTION (userID, status);
create index pc_device2_idx on PC_DEVICE (userID); 
create index pc_keyinfo2_idx on PC_KEYINFO (userID); 
create index pc_transaction2_idx on PC_TRANSACTION (userID); 
create index pc_user1_idx on PC_USER (systemID);

Корректировка типов данных для MS SQL

Java-приложение при создании таблиц БД неоптимально устанавливает тип для одного из полей для СУБД MS SQL.

Для его корректировки после того, как таблицы созданы, выполните запрос

ALTER TABLE PC_TRANSACTION ALTER COLUMN DATA_BINARY image;

Регистрация системы

После успешного запуска приложения PC Server до начала работы необходимо зарегистрировать прикладную систему.

Это действие выполняется путем отправки на PC Server HTTP POST запроса, сформированного ST/Airome. Содержание запроса предоставляется дополнительно.

Для отправки запроса можно использовать любое средство отправки HTTP-запросов.

Примеры

Curl

cURL (в ОС Linux доступна в репозиториях, для ОС Windows можно скачать с сайта разработчика https://curl.haxx.se/download.html):

  • 1. Скопировать файл RegisterSystemRequest.xml (если название файла с запросом на регистрацию отличается, то необходимо либо переименовать его, либо изменить имя этого файла в параметрах команды curl) на сервер в любую директорию на машину, с которой будет производиться запуск команды curl.
  • 2. Проверить содержимое файла. Если файл выглядит как
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pay="http://ws.safetech.ru/PayControlV3/">
       <soapenv:Header/>
       <soapenv:Body>
          <pay:registerSystemRequest>
             <request>PD94bWwgdmVyc2lvbj0iMJlIHhtbG5zPSJodHRwOi8vd3Muc2FmZXRlY2gucS4w... ...ZXF1JlIHhtbG5zPSJodHRwOi8vd3Muc2FmZXRlY2gucnUZ==</request>
          </pay:registerSystemRequest>
       </soapenv:Body>
    </soapenv:Envelope>
    

то, перейти к п.4.

  • 3. Если файл выглядит как

PD94bWwgdmVyc2lvbj0iMJlIHhtbG5zPSJodHRwOi8vd3Muc2FmZXRlY2gucS4w... ...ZXF1JlIHhtbG5zPSJodHRwOi8vd3Muc2FmZXRlY2gucnUZ==

то необходимо добавить в его начало

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pay="http://ws.safetech.ru/PayControlV3/">
   <soapenv:Header/>
   <soapenv:Body>
      <pay:registerSystemRequest>
         <request>

и в его конец

</request>
      </pay:registerSystemRequest>
   </soapenv:Body>
</soapenv:Envelope>

чтобы он принял вид, как представлено в п.2.

  • 4. Выполнить команду (в той-же директории, где располагается скопированный/изменённый файл), заменив <PCServer_IP/localhost> на DNS-имя сервера или его IP-адрес:
    curl --header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction: registerSystem" --data @RegisterSystemRequest.xml  <PCServer_IP/localhost>:8080/ws/PayControlServiceV3
    


  • Если в составе ответа пришла строка <systemId>SYSTEMID ВАШЕЙ ПРИКЛАДНОЙ СИСТЕМЫ</systemId>, значит прикладная система зарегистрирована.
  • Если в составе ответа было <soap:Fault>, значит возникла проблема на этапе регистрации.
  • После успешной регистрации прикладной системы на сервере, файл registerSystem.xml больше не нужен.

SOAP UI

  • 1. Добавить подключение к серверу PCS, указав адрес WSDL схемы:

Soap add conn.jpg

  • 2. Создать новый запрос из категории registerSystem

Soap register system.jpg

  • 3. Выполнить запрос


  • Если в составе ответа пришла строка <systemId>SYSTEMID ВАШЕЙ ПРИКЛАДНОЙ СИСТЕМЫ</systemId>, значит прикладная система зарегистрирована.
  • Если в составе ответа было <soap:Fault>, значит возникла проблема на этапе регистрации.

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

Сервис PC Server доступен по ссылкам (при запросе на эти 2 адреса ниже, должна возвратиться WSDL-схема):

  • http://<IP или имя сервера с WF >:8080/ws/PayControlServiceV3?wsdl
  • http://<IP или имя сервера с WF >:8080/ws/PayControlReportService?wsdl

Адрес конечной точки PC Pusher по умолчанию:

  • http://<IP или имя сервера с WF >:8080/pc-pusher-api/

Адрес PC Pusher health check:

  • http://<IP или имя сервера с WF >:8080/pc-pusher-api/health_check

PCIS External (при запросе на этот адрес должно возвратиться «Not Found». Также необходимо обратить внимание, на то, какой протокол разрешён – HTTP или HTTPS):

  • http://<IP или имя сервера с WF >:8080/PayControl-interaction-rest/

Настройка PC Pusher для отправки пушей в другое приложение (при необходимости)

Необходимо выполнить пункты описанные по ссылке "Настройка PCS и PC Pusher"

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

В работе
Предупреждение! Не рекомендуется дополнительно указывать номер порта, в случаях, если для HTTP используется порт 80, или для HTTPS используется порт 443

Учёт изменения адреса сервера PCS

Для учёта изменения адреса сервера PCS необходимо произвести изменения в настройках PCIS External. В файле /opt/wildfly/bin/standalone.conf, в следующей строке, указав правильный адрес и при необходимости порт сервера PCS, а также уточнив протокол подключения (HTTP/HTTPS):

JAVA_OPTS="$JAVA_OPTS -Dpcservice.endpoint=http[s]://<IP или DNS-имя>[:PORT]/ws/PayControlServiceV3?wsdl -Duser.language=ru -Dpaycontrol.locale=ru"

Учёт изменения адреса сервера PC Pusher

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

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

Учёт изменения внешнего адреса сервера PCIS External

В работе
Предупреждение! Если система была переведена в промышленную эксплуатацию, при смене адреса для доступа мобильных устройств, не рекомендуется выводить из действия предыдущий адрес на протяжении всего срока действия выпущенных ключей пользователя. Иначе мобильное приложение потеряет доступ к серверу PayControl и для восстановления будет необходимо перевыпустить ключ и заново добавить его в приложение пользователя.

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

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