Установка компонентов сервера PayControl v3.8 вручную — различия между версиями

Материал из PayControl Wiki
Перейти к: навигация, поиск
(Доступ к сервисам)
Строка 99: Строка 99:
 
Для корректной установки PC Server с подключением к БД Oracle требуется создать/изменить некоторые таблицы вручную:
 
Для корректной установки PC Server с подключением к БД Oracle требуется создать/изменить некоторые таблицы вручную:
  
Запросы для PC v3!!!
+
Инструкция:
 +
# Заменить по содержимому ниже <syntaxhighlight lang="sql">
 +
<TABLESPACE_NAME>
 +
<USER_NAME>
 +
<USER_PASS>
 +
</syntaxhighlight>
 +
 
 +
# Из-под пользователя с правами на создание пользователей и табличных пространств выполнить:<syntaxhighlight lang="sql">
 +
---Создание табличного пространства и пользователя---
 +
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>";
 +
</syntaxhighlight>
 +
 
 +
# Из-под созданного пользователя, под которым будет производиться подключение PC к БД выполнить:<syntaxhighlight lang="sql">
 +
---Создание таблиц---
 +
  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"));
 +
 
 +
</syntaxhighlight><syntaxhighlight lang="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);
 +
</syntaxhighlight><syntaxhighlight lang="sql">
 +
---Создание очередей---
 +
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;
 +
</syntaxhighlight>
  
PC_SYSTEM_PARAMS - создать вручную '''перед''' установкой PC
 
<syntaxhighlight lang="sql">create table PC_SYSTEM_PARAMS (systemID varchar2(36) not null,
 
created_at date,
 
is_deleted number(5,0) default 0 not null,
 
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 clob,
 
online_confirmation_url varchar2(255),
 
qr_url_scheme varchar2(24),
 
register_request clob,
 
report_template_path varchar2(255),
 
user_keys_expiration_period number(10,0),
 
primary key (systemID));</syntaxhighlight>
 
  
PC_TRANSACTIONS - создать вручную, или '''изменить''' вручную после создания:
 
<syntaxhighlight lang="sql">ALTER TABLE PC_TRANSACTION DROP COLUMN DATA_BINARY;
 
ALTER TABLE PC_TRANSACTION ADD (DATA_BINARY BLOB);</syntaxhighlight>
 
  
 
==Добавление источников данных для модулей==
 
==Добавление источников данных для модулей==
Строка 128: Строка 313:
  
 
===PostgreSQL===
 
===PostgreSQL===
====PCS====
+
====PC Server====
 
В файл ''%WF_PATH%/standalone/configuration/standalone.xml'' внести следующие изменения добавить новый источник данных в секцию ''<datasources></datasources>'' заменив pcs-db-host, port, pcs-db, pcs-user, pcs-pass:
 
В файл ''%WF_PATH%/standalone/configuration/standalone.xml'' внести следующие изменения добавить новый источник данных в секцию ''<datasources></datasources>'' заменив pcs-db-host, port, pcs-db, pcs-user, pcs-pass:
 
<source lang="xml">
 
<source lang="xml">
Строка 151: Строка 336:
  
 
===MS SQL===
 
===MS SQL===
====PCS====
+
====PC Server====
 
В файл ''%WF_PATH%/standalone/configuration/standalone.xml'' внести следующие изменения добавить новый источник данных в секцию ''<datasources></datasources>'' заменив pcs-db-host, port, pcs-db-host, pcs-db, pcs-user, pcs-pass:
 
В файл ''%WF_PATH%/standalone/configuration/standalone.xml'' внести следующие изменения добавить новый источник данных в секцию ''<datasources></datasources>'' заменив pcs-db-host, port, pcs-db-host, pcs-db, pcs-user, pcs-pass:
 
<source lang="xml">
 
<source lang="xml">
Строка 255: Строка 440:
 
Для отправки запроса можно использовать любое средство отправки HTTP-запросов.
 
Для отправки запроса можно использовать любое средство отправки HTTP-запросов.
 
===Примеры===
 
===Примеры===
====PowerShell====
+
 
 +
====Curl====
 +
cURL (в ОС Linux доступна в репозиториях, для ОС Windows можно скачать с сайта разработчика https://curl.haxx.se/download.html):
 +
# Скопировать файл RegisterSystemRequest.xml (если название файла с запросом на регистрацию отличается, то необходимо либо переименовать его, либо изменить имя этого файла в параметрах команды curl) на сервер в любую директорию на машину, с которой будет производиться запуск команды curl.
 +
# Проверить содержимое файла. Если файл выглядит как
 +
<syntaxhighlight lang="xml">
 +
<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>
 +
</syntaxhighlight>
 +
то, перейти к п.4.
 +
# Если файл выглядит как
 +
PD94bWwgdmVyc2lvbj0iMJlIHhtbG5zPSJodHRwOi8vd3Muc2FmZXRlY2gucS4w... ...ZXF1JlIHhtbG5zPSJodHRwOi8vd3Muc2FmZXRlY2gucnUZ==
 +
то необходимо добавить в его начало
 +
<syntaxhighlight lang="xml">
 +
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pay="http://ws.safetech.ru/PayControlV3/">
 +
  <soapenv:Header/>
 +
  <soapenv:Body>
 +
      <pay:registerSystemRequest>
 +
        <request>
 +
</syntaxhighlight>
 +
и в его конец
 +
<syntaxhighlight lang="xml">
 +
</request>
 +
      </pay:registerSystemRequest>
 +
  </soapenv:Body>
 +
</soapenv:Envelope>
 +
</syntaxhighlight>
 +
чтобы он принял вид, как представлено в п.2.
 +
# Выполнить команду (в той-же директории, где располагается скопированный/изменённый файл), заменив <PCServer_IP/localhost> на DNS-имя сервера или его IP-адрес:
 +
<syntaxhighlight lang="bash">
 +
curl --header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction: registerSystem" --data @RegisterSystemRequest.xml  <PCServer_IP/localhost>:8080/ws/PayControlServiceV3
 +
</syntaxhighlight>
 +
# Если в составе ответа пришла строка <systemId>SYSTEMID ВАШЕЙ ПРИКЛАДНОЙ СИСТЕМЫ</systemId>, значит прикладная система зарегистрирована. Если в составе ответа было <soap:Fault>, значит возникла проблема на этапе регистрации.
 +
# После успешной регистрации прикладной системы на сервере, файл registerSystem.xml больше не нужен.
 +
 
 +
====SOAP UI====
 
<syntaxhighlight lang="PowerShell">
 
<syntaxhighlight lang="PowerShell">
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
 
$headers.Add("Content-Type", "application/json")
 
  
$body = "{n  "request`":"eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjEE9NoZ+W1lIjEE9NoZW... ...9NoZW1lIjEE+9NoZW1lIjEE9NoZW1lIjEE9PSJ9"`n}"
+
</syntaxhighlight>
  
$response = Invoke-RestMethod 'https://dev.paycontrol.org/v5.0/pc-api/' -Method 'POST' -Headers $headers -Body $body
 
$response | ConvertTo-Json
 
</syntaxhighlight>
 
====cURL====
 
<syntaxhighlight lang="bat">
 
curl --location --request POST 'http://<host>:<port>/pc-api/' --header 'Content-Type: application/json' --data '{"request":"eyJyZXF1ZXN0Ijp7InFyVVJMU2NoZW1lIjEE9NoZ+W1lIjEE9NoZW1lIjEE9... ...IjEE9NoZW1lIjEE9PSJ9"}'
 
</syntaxhighlight>
 
  
 
==Доступ к сервисам==
 
==Доступ к сервисам==
Сервисы доступны по ссылкам (при запросе на эти 3 адреса ниже, должна возвратиться WSDL-схема):
+
Сервис PC Server доступен по ссылкам (при запросе на эти 2 адреса ниже, должна возвратиться WSDL-схема):
* PC Server - http://<IP или имя сервера с WF >:8080/ws/PayControlServiceV3?wsdl
+
* http://<IP или имя сервера с WF >:8080/ws/PayControlServiceV3?wsdl
* PC Server - http://<IP или имя сервера с WF >:8080/ws/PayControlReportService?wsdl
+
* http://<IP или имя сервера с WF >:8080/ws/PayControlReportService?wsdl
  
 
Адрес конечной точки PC Pusher по умолчанию:
 
Адрес конечной точки PC Pusher по умолчанию:
* PC Pusher - http://<IP или имя сервера с WF >:8080/pc-pusher-api/
+
* http://<IP или имя сервера с WF >:8080/pc-pusher-api/
 
Адрес PC Pusher health check:
 
Адрес PC Pusher health check:
* PC Pusher - http://<IP или имя сервера с WF >:8080/pc-pusher-api/health_check
+
* http://<IP или имя сервера с WF >:8080/pc-pusher-api/health_check
  
 
PCIS External (при запросе на этот адрес должно возвратиться «Not Found». Также необходимо обратить внимание, на то, какой протокол разрешён – HTTP или HTTPS):
 
PCIS External (при запросе на этот адрес должно возвратиться «Not Found». Также необходимо обратить внимание, на то, какой протокол разрешён – HTTP или HTTPS):
 
* http://<IP или имя сервера с WF >:8080/PayControl-interaction-rest/
 
* http://<IP или имя сервера с WF >:8080/PayControl-interaction-rest/
 
=Внесение аутентификационных данных для отправки push-уведомлений=
 
{{Предупреждение|Для отличных от PostgreSQL СУБД измените метод работы с последовательностями}}
 
 
[[PC_Pusher_5.2|'''Данный пункт не нужен при установке версии 5.2.х''']]
 
 
 
Для '''MSSQL''' необходимо вместо строк <code>nextval('pc_split_pusher_creds_seq'),</code> использовать строку <code>NEXT VALUE FOR pc_split_pusher_creds_seq,</code>.
 
 
Для '''Oracle''' необходимо вместо строк <code>nextval('pc_split_pusher_creds_seq'),</code> использовать строку <code>pc_split_pusher_creds_seq.NEXTVAL,</code>.
 
==В приложение PayControl==
 
Для внесение аутентификационных данных для отправки push-уведомлений в приложение PayControl необходимо выполнить следующие запросы к БД PC Pusher, заменив значения %SYSTEMID% на корректное.
 
 
Обратите внимание, что знаки процента '''нужно удалить'''.
 
После выполнения запросов необходимо [[Руководство_администратора_PayControl_v5#Запуск и остановка служб сервера PayControl|перезапустить Wildfly]] сервера PC Pusher.
 
 
Пример для СУБД PostgreSQL:
 
<syntaxhighlight lang="sql">INSERT INTO pc_split_pusher_credentials (
 
id,
 
appid,
 
credentials,
 
os,
 
systemid)
 
VALUES (
 
nextval('pc_split_pusher_creds_seq'),
 
'org.paycontrol.app',
 
'{"google_api_key":"AAAAoZ7vyz4:APA91bFqLfNegQCs_GfHGFeOmS68PHWWSzWpeZaYKfnLul9iHufIQJiNIAjgAykeWrTxiDDs9qQzullXww3o5XR0VS9tlBEpuhTMlz4CyHdmN2EhntJBBUlSQa-8--Rw_UzDbKBCGCXk"}',
 
'Android',
 
'%SYSTEMID%');
 
 
INSERT INTO pc_split_pusher_credentials (
 
id,
 
appid,
 
credentials,
 
os,
 
systemid)
 
VALUES (
 
nextval('pc_split_pusher_creds_seq'),
 
'org.paycontrol.app',
 
'{"apns_key_file":"C:\\wildfly\\safetech-apns-JVBQX52N5Z.p8","apns_key_id":"JVBQX52N5Z","apns_team_id":"48HZH4RWJD"}',
 
'iOS',
 
'%SYSTEMID%');</syntaxhighlight>
 
 
==В приложение PayConfirm==
 
Для внесение аутентификационных данных для отправки push-уведомлений в приложение PayConfirm необходимо выполнить следующие запросы к БД PC Pusher, заменив значения %SYSTEMID% на корректное.
 
 
Обратите внимание, что знаки процента '''нужно удалить'''.
 
После выполнения запросов необходимо [[Руководство_администратора_PayControl_v5#Запуск и остановка служб сервера PayControl|перезапустить Wildfly]] сервера PC Pusher.
 
 
Пример для СУБД PostgreSQL:
 
<syntaxhighlight lang="sql">INSERT INTO pc_split_pusher_credentials (
 
id,
 
appid,
 
credentials,
 
os,
 
systemid)
 
VALUES (
 
nextval('pc_split_pusher_creds_seq'),
 
'org.payconfirm.app',
 
'{"google_api_key":"AAAA4H70m7M:APA91bFsaPiXXiIuRyj4h-xGZpyd0-I3B9F1udIIergxaK8uL9vPPvUQXOvPfau2w8E-xur_6TlTzmhb2JsO13hBCxVDrNybD6Rj8k4hZKXfs7tC5fnJuWmCIB3-O_4dLo0QHlhfSbGn"}',
 
'Android',
 
'%SYSTEMID%');
 
 
INSERT INTO pc_split_pusher_credentials (
 
id,
 
appid,
 
credentials,
 
os,
 
systemid)
 
VALUES (
 
nextval('pc_split_pusher_creds_seq'),
 
'org.payconfirm.app',
 
'{"apns_key_file":"C:\\wildfly\\safetech-apns-JVBQX52N5Z.p8","apns_key_id":"QCC684AGC4","apns_team_id":"B98K5P3YHV"}',
 
'iOS',
 
'%SYSTEMID%');</syntaxhighlight>
 
 
==В другое мобильное приложение==
 
Для внесение аутентификационных данных для отправки push-уведомлений необходимо выполнить запрос к БД PC Pusher, заменив значение %SYSTEMID%, %appid%, %путь к файлу ключа%, %apns_key_id%, %apns_team_id%, %google_api_key% на корректные (эти данные, за исключением %SYSTEMID%, можно получить от владельцев аккаунта, под чьим именем публикуется приложение), и, '''удалив''' знаки процента:
 
<syntaxhighlight lang="sql">
 
INSERT INTO pc_split_pusher_credentials (
 
id,
 
appid,
 
credentials,
 
is_default,
 
os,
 
systemid)
 
VALUES (
 
nextval('pc_split_pusher_credentials_id_seq'),
 
'%appid%',
 
'{"google_api_key":"%google_api_key%"}',
 
1,
 
'Android',
 
'%SYSTEMID%');
 
 
INSERT INTO pc_split_pusher_credentials (
 
id,
 
appid,
 
credentials,
 
is_default,
 
os,
 
systemid)
 
VALUES (
 
nextval('pc_split_pusher_credentials_id_seq'),
 
'%appid%',
 
'{"apns_key_file":"%путь к файлу ключа%","apns_key_id":"%apns_key_id%","apns_team_id":"%apns_team_id%"}',
 
1,
 
'iOS',
 
'%SYSTEMID%');
 
 
commit;
 
</syntaxhighlight>
 
  
 
=Корректировка (смена) адресов компонентов серверов PC (при необходимости)=
 
=Корректировка (смена) адресов компонентов серверов PC (при необходимости)=

Версия 15:34, 26 октября 2021

Содержание

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

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

Установка Java

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

Обновление Security

JRE 1.8

JRE 11

Замена файлов библиотек не требуется.

Установка Wildfly

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

Linux

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

Windows

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

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

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

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

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

PostgreSQL

  • Скачать актуальный JDBC-драйвер по адресу https://jdbc.postgresql.org/
  • Создать директорию %WF_PATH%/modules/org/postgresql/main/
  • В директорию %WF_PATH%/modules/org/postgresql/main/ поместить скачанный postgresql-42.2.15.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="postgresql" 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="com.oracle" module="com.oracle">
    <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
</driver>

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

В работе
Статья в процессе написания


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

Инструкция:

  1. Заменить по содержимому ниже
    <TABLESPACE_NAME>
    <USER_NAME>
    <USER_PASS>
    
  1. Из-под пользователя с правами на создание пользователей и табличных пространств выполнить:
    ---Создание табличного пространства и пользователя---
    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>";
    
  1. Из-под созданного пользователя, под которым будет производиться подключение 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;
    


Добавление источников данных для модулей

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

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/PCServerDS" 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>
    <connection-property name="url">
        jdbc:postgresql://pcs-db-host:port/pcs-db
    </connection-property>
    <driver>postgresql</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/PCServerDS" pool-name="PayControlDS" enabled="true" use-ccm="true">
	<connection-url>jdbc:sqlserver://pcs-db-host:port;databaseName=pcs-db</connection-url>
	<connection-property name="url">
		jdbc:sqlserver://pcs-db-host:port;databaseName=pcs-db
	</connection-property>
	<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>

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

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

  • на Linux в файл %WF_PATH%/bin/standalone.conf нужно добавить
    JAVA_OPTS="$JAVA_OPTS -Dpcservice.endpoint=http://<host>:<port>/ws/PayControlServiceV3?wsdl -Duser.language=ru -Dpaycontrol.locale=ru"
    
  • на 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 - файл pc-server-<VERSION>.ear
    • на PC Pusher - файл pc-pusher-<VERSION>.war
    • на PC External - файл pc-external-<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/*

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

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

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

На продуктивной среде после этого необходимо создать индексы в базе данных 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.

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

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.

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

SOAP UI


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

Сервис 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 (при необходимости)

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

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

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

JAVA_OPTS="$JAVA_OPTS -Dpc_url=http[s]://<IP или DNS-имя>[:PORT]/pc-api/ -Duser.language=ru -Dpc_locale=ru"

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

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

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

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

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

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

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