, (*1)
URFAClient
Π£Π½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ PHP ΠΊΠ»ΠΈΠ΅Π½Ρ Π΄Π»Ρ Π±ΠΈΠ»Π»ΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ NetUp UTM5 Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ api.xml, (*2)
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° (composer)
composer require k-shym/urfa-client "^2.0"
ΠΠ°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
- UTM 5.2.1-008 >=
- PHP 5.4 >=
- Ext: JSON, OpenSSL, SimpleXML, Hash, Filter
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²
| option |
default |
ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
| login* |
β |
Π»ΠΎΠ³ΠΈΠ½ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ |
| password* |
β |
ΠΏΠ°ΡΠΎΠ»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ |
| address* |
β |
Π°Π΄ΡΠ΅Ρ ΡΠ΄ΡΠ° UTM5 |
| port |
11758 |
ΠΏΠΎΡΡ ΡΠ΄ΡΠ° UTM5 |
| timeout |
30 |
Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ° ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ° |
| protocol |
auto |
ssl ΠΈΠ»ΠΈ tls (Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Ρ Π²Π΅ΡΡΠΈΠΈ UTM-5.3-002-update16) ΠΈΠ»ΠΈ auto (Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Ρ Π²Π΅ΡΡΠΈΠΈ UTM-5.3-005-update2, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ OpenSSL 1.1) |
| admin |
true |
ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ, Π΅ΡΠ»ΠΈ TRUE ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ admin.crt Π΄Π»Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ssl
|
| api |
api_53-006.xml |
ΠΏΡΡΡ Π΄ΠΎ ΡΠ°ΠΉΠ»Π° api.xml |
CMD
bin/urfaclient -h
The options are as follows:
[-a, --api <path> ] Path to api.xml
[-f, --function <name>] Name function from api.xml
[-t, --type <type>] Type return (array, json, xml), default: array
[-l, --list] List of functions from api.xml
[-h, --help ] This help
[-v, --version ] Version URFAClient
ΠΡΠΈΠΌΠ΅Ρ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ rpcf_add_user_new, Ρ Π½Π°Ρ Π΅ΡΡΡ XML ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅:, (*3)
<function name="rpcf_add_user_new" id="0x2125">
<input>
<string name="login"/>
<string name="password"/>
<string name="full_name" default=""/>
<integer name="is_juridical" default="0"/>
<string name="jur_address" default=""/>
<string name="act_address" default=""/>
<string name="flat_number" default=""/>
<string name="entrance" default=""/>
<string name="floor" default=""/>
<string name="district" default=""/>
<string name="building" default=""/>
<string name="passport" default=""/>
<integer name="house_id" default="0"/>
<string name="work_tel" default=""/>
<string name="home_tel" default=""/>
<string name="mob_tel" default=""/>
<string name="web_page" default=""/>
<string name="icq_number" default=""/>
<string name="tax_number" default=""/>
<string name="kpp_number" default=""/>
<string name="email" default=""/>
<integer name="bank_id" default="0"/>
<string name="bank_account" default=""/>
<string name="comments" default=""/>
<string name="personal_manager" default=""/>
<integer name="connect_date" default="0"/>
<integer name="is_send_invoice" default="0"/>
<integer name="advance_payment" default="0"/>
<integer name="switch_id" default="0"/>
<integer name="port_number" default="0"/>
<integer name="binded_currency_id" default="810"/>
<integer name="parameters_count" default="size(parameter_value)"/>
<for name="i" from="0" count="size(parameter_value)">
<integer name="parameter_id" array_index="i"/>
<string name="parameter_value" array_index="i"/>
</for>
<integer name="groups_count" default="size(groups)"/>
<for name="i" from="0" count="size(groups)">
<integer name="groups" array_index="i"/>
</for>
<integer name="is_blocked" default="0"/>
<double name="balance" default="0.0"/>
<double name="credit" default="0.0"/>
<double name="vat_rate" default="0.0"/>
<double name="sale_tax_rate" default="0.0"/>
<integer name="int_status" default="1"/>
</input>
<output>
<integer name="user_id"/>
<if variable="user_id" value="0" condition="eq">
<integer name="error_code"/>
<string name="error_description"/>
</if>
<if variable="user_id" value="0" condition="ne">
<integer name="basic_account"/>
</if>
</output>
</function>
Π ΡΠ°ΠΊ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ Π²Ρ
ΠΎΠ΄Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ (ΡΠ»Π΅ΠΌΠ΅Π½Ρ input) Π² Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ².
ΠΡΠ»ΠΈ Π² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π°ΡΡΠΈΠ±ΡΡ default, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ., (*4)
ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ rpcf_add_user_new ΠΈΠ· api.xml:, (*5)
bin/urfaclient -f rpcf_add_user_new -t json
```json
{
"login": "",
"password": "",
"full_name": "",
"is_juridical": 0,
"jur_address": "",
"act_address": "",
"flat_number": "",
"entrance": "",
"floor": "",
"district": "",
"building": "",
"passport": "",
"house_id": 0,
"work_tel": "",
"home_tel": "",
"mob_tel": "",
"web_page": "",
"icq_number": "",
"tax_number": "",
"kpp_number": "",
"email": "",
"bank_id": 0,
"bank_account": "",
"comments": "",
"personal_manager": "",
"connect_date": 0,
"is_send_invoice": 0,
"advance_payment": 0,
"switch_id": 0,
"port_number": 0,
"binded_currency_id": 0,
"parameters_count": [
{
"parameter_id": 0,
"parameter_value": ""
}
],
"groups_count": [
{
"groups": 0
}
],
"is_blocked": 0,
"balance": 0,
"credit": 0,
"vat_rate": 0,
"sale_tax_rate": 0,
"int_status": 0
}, (*6)
ΠΠ° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π½Π°ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π½Π΅Π²Π°ΠΆΠ΅Π½.
ΠΠ°ΠΊ Π±ΡΠ»ΠΎ Π·Π°ΠΌΠ΅ΡΠ΅Π½ΠΎ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ UTM5 Π½Π΅ ΠΏΡΠΈΡΠ»ΠΈ ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡ ΡΠΎΡΠΌΠ°ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΡΡΠ΄Π° Π²ΠΎΠ·Π½ΠΈΠΊ Π²ΠΎΠΏΡΠΎΡ, ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠΌΡ Π΄Π°Π²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ `for` Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π°?
ΠΠΎΡΡΠΎΠΌΡ Π±ΡΠ»ΠΎ ΠΏΡΠΈΠ½ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΡ Π°ΡΡΠΈΠ±ΡΡΠ° ΡΡΠ΅ΡΡΠΈΠΊΠ° `*_count`. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊ:
```php
[
// ...
'parameters_count' => [
[
'parameter_id' => 0,
'parameter_value' => 'ΠΌ',
],
[
'parameter_id' => 1,
'parameter_value' => '13.06.2014',
],
],
'groups_count' => [
[
'groups' => 1000,
],
[
'groups' => 1001,
],
],
// ...
];
ΠΡΠ»ΠΈ ΠΏΠΎΠΏΠ°Π΄Π΅ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ error Π±ΡΠ΄Π΅Ρ Π²ΡΠ±ΡΠΎΡΠ΅Π½ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ XML Described error:, Π° Π΄Π°Π»Π΅Π΅ Π°ΡΡΠΈΠ±ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ., (*7)
C ΡΡΠ»ΠΎΠ²ΠΈΡΠΌΠΈ if Π²ΡΠ΅ ΠΏΡΠΎΡΡΠΎ, Π΅ΡΠ»ΠΈ ΠΈΡΡΠΈΠ½Π°, ΡΠΎ Π·Π°Ρ
ΠΎΠ΄ΠΈΠΌ Π²Π½ΡΡΡΡ. Π ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅., (*8)
Π ΠΈΡΠΎΠ³Π΅, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ:, (*9)
require __DIR__ . '/vendor/autoload.php';
use URFAClient\URFAClient;
$urfa = URFAClient::init([
'login' => 'init',
'password' => 'init',
'address' => 'localhost',
]);
$result = $urfa->rpcf_add_user_new([
'login'=>'test',
'password'=>'test',
]);
$result = $urfa->rpcf_add_user_new('{
"login": "test2",
"password": "test2"
}');
Π ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ $result ΠΏΠΎΠΏΠ°Π΄ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ output., (*10)
Π’Π΅ΡΡΡ
docker-compose up -d
docker exec -t urfa composer install
docker exec -t urfa vendor/bin/phpunit --coverage-text
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
- Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π»ΠΎΡΡ Π½Π° Π²Π΅ΡΡΠΈΠΈ Π±ΠΈΠ»Π»ΠΈΠ½Π³Π° UTM-5.3-003, UTM-5.4-004 ΠΈ UTM-5.5-015
- Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π»ΠΈΡΡ Π½Π΅ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· api.xml
- ΠΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ api.xml ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΡΠΈΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ ΠΏΡΠΈΡΡΠ»Π°ΠΉΡΠ΅ api.xml ΠΈ ΠΏΠΎΠ»Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΡΠ΄ΡΠ° UTM5. Π£Π΄Π°ΡΠΈ!, (*11)