Forumlar / National / Russian / Модули и плагины / QIWI биллинг

inkerman
#1 2010-11-26 05:32
столкнулся с проблемой установки биллинга Киви на сайт. У них это дело работает через SOAP, упакованное в SSL. После правки php.ini модули добавились. Даже демка примера запускается и корректно отрабатывает код. Но фишка в том, что если запустить ту же демку через include, вставленный в плагин биллинга, то получаю ошибку ошибку. Пишет что файлы не найдены, хотя все на месте. Я уже IShopServerWS.wsdl скопировал куда только можно - не помогает. Кто знает с чем это вероятно связано и как починить?

Интересная особенность: ошибка вылазит если плагин запущен средствами котонти. Если обратиться к php файлу напрямую - все работает. Я вот думаю, может ли этот глюк связан с взаимодействием SOAP и котонти? Ну странно что так-то он работает, а если запуск того же файла делать как плагин - ошибка...

А ошибка вот такая: Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'IShopServerWS.wsdl' in X:\home\fmb\www\plugins\billing\IShopServerWSService.php:84 Stack trace: #0 X:\home\fmb\www\plugins\billing\IShopServerWSService.php(84): SoapClient->SoapClient('IShopServerWS.w...', Array) #1 X:\home\fmb\www\plugins\billing\test.php(5): IShopServerWSService->IShopServerWSService('IShopServerWS.w...', Array) #2 X:\home\fmb\www\plugins\billing\billing.php(42): require('X:\home\fmb\www...') #3 X:\home\fmb\www\system\core\plug\plug.inc.php(132): include_once('X:\home\fmb\www...') #4 X:\home\fmb\www\plug.php(31): require_once('X:\home\fmb\www...') #5 {main} thrown in X:\home\fmb\www\plugins\billing\IShopServerWSService.php on line 84

Документация QIWI SOAP
https://ishop.qiwi.ru/docs/OnlineStoresProtocols_SOAP.pdf
Демо пример:
https://ishop.qiwi.ru/docs/qiwi-php-soap.zip
Trustmaster
#2 2010-11-26 15:17
А если путь к wsdl абсолютный прописать?

Кое-что о путях в Cotonti. Поскольку все скрипты всегда запускаются через лоадер в корне сайта, например plug.php, то текущей директорией для скриптов (включая include-файлы плагинов) является именно корень сайта и путь строится относительно него. То есть если файл IShopServerWS.wsdl лежит в папке плагина billing, то относительный путь к нему будет одним из следующих (по вкусу):
$wsdl_path = 'plugins/billing/IShopServerWS.wsdl'; // классика
$wsdl_path = './plugins/billing/IShopServerWS.wsdl'; // то же самое, но найдёт быстрее
$wsdl_path = $cfg['plugins_dir'] . '/billing/IShopServerWS.wsdl'; // то же самое, но поддерживает мультисайтовость 
May the Source be with you!
inkerman
#3 2010-11-27 18:11
Спасибо, Trustmaster! Помогло!