k-shym / URFAClient

URFAClient PHP (api.xml)
GNU General Public License v3.0
27 stars 9 forks source link

UTM5.3-004: Error code 21. Version: 3 #34

Closed EuPhobos closed 4 years ago

EuPhobos commented 4 years ago

Вроде всё настроил, но при попытке отправить данные на UTM вываливается ошибка: Fatal error: Uncaught exception 'URFAClient_Exception' with message 'Error code 21. Version: 3' in /var/www/urfa/classes/URFAClient/Connection.php:216

Что бы это могло быть? UTM5.3-004

k-shym commented 4 years ago

Не совпадает версия протокола взаимодействия. Пришлите код (создание объекта, вызов функции), попробую воспроизвести у себя на этой версии.

EuPhobos commented 4 years ago

`<? include("./urfa/init.php");

try { $urfa = URFAClient::init(array( 'login' => 'scripts', 'password' => 'тут пароль', 'address' => '127.0.0.1' )); } catch (Exception $exception) { echo "Error in line ", $exception->getLine(); echo $exception->getMessage(); log_error("Ошибка на сервере, невозможно подключиться к URFA", 1); }

$par = array();

$par['account_id'] =31583; $par['credit'] =10; $par['is_blocked'] =0; $par['vat_rate'] =0; $par['sale_tax_rate'] =0; $par['int_status'] =1; $par['unlimited'] =0; $par['auto_enable_inet'] =1; $par['external_id'] =0;

var_dump($urfa->rpcf_save_account($par));

function log_error($msg){print "$msg\n";} ?>`

Вывод: `/var/www/utm$ php test.php PHP Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure in /var/www/utm/urfa/classes/URFAClient/Connection.php on line 129 PHP Fatal error: Uncaught exception 'URFAClient_Exception' with message 'Error code 21. Version: 3' in /var/www/utm/urfa/classes/URFAClient/Connection.php:216 Stack trace:

0 /var/www/utm/urfa/classes/URFAClient/Connection.php(165): URFAClient_Connection->read(Object(URFAClient_Packet))

1 /var/www/utm/urfa/classes/URFAClient/API.php(99): URFAClient_Connection->call(86283)

2 /var/www/utm/test.php(28): URFAClient_API->__call('rpcf_save_accou...', Array)

3 /var/www/utm/test.php(28): URFAClient_API->rpcf_save_account(Array)

4 {main}

thrown in /var/www/utm/urfa/classes/URFAClient/Connection.php on line 216`

Так же в URFAClient.php на строке 14 поставил - const API_XML = 'api_53-004.xml';

k-shym commented 4 years ago

Так же в URFAClient.php на строке 14 поставил - const API_XML = 'api_53-004.xml';

Не нужно так делать, для этого есть параметр api в конфигурации

Если у вас версия URFACleint 1.3.*, по умолчанию используется старый протокол SSLv3. поменяйте на tls. Вот это должно решить ваши проблемы:

$urfa = URFAClient::init([
    'login' => 'scripts',
    'password' => 'тут пароль',
    'address' => '127.0.0.1',
    'protocol' => 'tls',
    'api' => 'полный путь до api.xml например /netup/utm5/xml/api.xml',
]);
EuPhobos commented 4 years ago

Спасибо огромное! Я даже не подумал про ssl..