Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Ошибка при уведомлении с Робокассы


Abit

Recommended Posts

Люди у меня такая проблема.

У хочу на своем магазине использовать робокассу, в тестовом после проверок у меня в поле Уведомление о платеже выходит ошибка

<br /><b>Fatal error</b>: Call to a member function getFile() on a non-object in <b>/путь к папке сайта/system/engine/front.php</b> on line <b>34</b><br />

ссылка для уведомления выглядит так http://www.сайт/index.php?route=payment/robokassa/callback

Что делать в коде ковырялся так и не понял в чем причина.

Надіслати
Поділитися на інших сайтах


Так проблема решена ... причина была в модуле Simple URL V1.0 помогла в фалике /system/library/response.php который заменялся этим модулем дописать в строке исключения замены этой ссылки так же как и ссылок админ панели

public function output() {

global $registry;

if ($registry->get('config')->get('config_seo_url') and !preg_match('/\/admin\//ism', $this->output) and ! preg_match('/robokassa\/callback/ism', $this->output)) {

$ouput = preg_replace('/index\.php\?route=([-a-z0-9_.\/]*+)(?:(\&|\&)([-a-z0-9+&@\/%=_.]*+))?/i', '${1}?${3}', $this->output);

} else {

$ouput = $this->output;

}

if ($this->level) {

$ouput = $this->compress($ouput, $this->level);

}

if (!headers_sent()) {

foreach ($this->headers as $header) {

header($header, TRUE);

}

}

echo $ouput;

}

Надіслати
Поділитися на інших сайтах


Ребят, та же проблема, та же версия магазина, тот же Simple URL V1.0, но вариант от Abit не устраняет первопричину, а маскирует ее. Да, ошибка перестала появляться, но с тем же успехом и заказы вообще не принимаются, даже статус Ожидание при оформлении заказа клиентом в панели админисратора не появляется: вообще заказ как бы не был совершен. До работы "с ошибкой", хоть она и проявлялась, все заказы успешно видел "продавец" со статусом оплачено, но сейчас... Хотел бы еще уточнить у знатоков: должны ли письма отправляться продавцу по мере оплаты/поступления заказа? у меня их нет...

Надіслати
Поділитися на інших сайтах


XYZ

Ты прав заметил то, что заказ не работает не сразу.

Я ковырялся в коде и по мере догадок и распечатываний переменных /system/engine/front.php сделал вывод, что ошибка возникает в коде нового /catalog/controller/common/seo_url.php его заменяет модуль Simple URL V1.0 но так и не понял что там делать.

Надіслати
Поділитися на інших сайтах


Думаю надо в .htaccess запретить редирект и рерайт ссылок платежных методов... примерно так:

после строк

RewriteCond %{QUERY_STRING} ^route=([a-z-_/]+)$ [NC]
и

RewriteCond %{QUERY_STRING} ^route=([a-z-_/]+)\&(.*)$ [NC]
добавить строку

RewriteCond %{QUERY_STRING} !(^route=payment)

и в response.php запретить карябать такие ссылки...

Надіслати
Поділитися на інших сайтах

Yesvik

не помогло все равно выдает ошибку (

<br />
<b>Fatal error</b>:  Call to a member function getFile() on a non-object in <b> /путь/chaevnya.com/system/engine/front.php</b> on line <b>36</b><br />

Не могли бы показать как должен выглядеть файл .htaccess

в моем случае он такой

Options +FollowSymlinks

# Запретить листинг директорий
Options -Indexes

AddType application/x-httpd-php .phtml
AddHandler application/x-httpd-php .phtml

RewriteCond %{HTTP_HOST} ^chaevnya.com
RewriteRule (.*) http://www.chaevnya.com/$1 [R=301,L]

# Закрыть доступ к файлам шаблонов
<FilesMatch "\.tpl">
Order deny,allow
Deny from all
</FilesMatch>

# Необходимо для ЧПУ.
RewriteEngine On
RewriteBase /

# This will prevent redirect loop for the below three RewriteRule.
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]

# E.g external redirect /index.php?route=common/home to /common/home
# X-Requested-With (http header created by jQuery.load()) prevent this rule from AJAX request E.g Get product/product/review when open product details.
RewriteCond %{HTTP:X-Requested-With} !XMLHttpRequest [NC]
RewriteCond %{QUERY_STRING} ^route=([a-z-_/]+)$ [NC]
RewriteCond %{QUERY_STRING} !(^route=payment)
RewriteRule ^index\.php %1/? [R=301,L]

# E.g external redirect /index.php?route=product/product&product_id=8 to /product/product?product_id=8
RewriteCond %{HTTP:X-Requested-With} !XMLHttpRequest [NC]
RewriteCond %{QUERY_STRING} ^route=([a-z-_/]+)\&(.*)$ [NC]
RewriteCond %{QUERY_STRING} !(^route=payment)
RewriteRule ^index\.php %1/?%2 [R=301,L]

# E.g internal redirect /common/home to /index.php?route=common/home
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*)/$|^([^?]*)$ index.php?_route_=$1$2 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*)/$|^([^?]*)$ admin/index.php?_route_=$1$2 [L,QSA]
Надіслати
Поділитися на інших сайтах


Посмотрел твой магазин...

ссылки вида /index.php?route=blahblah/blahblah редиректятся на /blahblah/blahblah/

ссылки вида /index.php?route=payment/blahblah не редиректятся

так что к .htaccess тут претензий нет и правки ты сделал абсолютно правильно.

Уведомления от платежных систем будут проходить без каких либо изменений.

Какая версия магазина?

  • +1 2
Надіслати
Поділитися на інших сайтах

Посмотрел твой магазин... ссылки вида /index.php?route=blahblah/blahblah редиректятся на /blahblah/blahblah/ссылки вида /index.php?route=payment/blahblah не редиректятсятак что к .htaccess тут претензий нет и правки ты сделал абсолютно правильно.Уведомления от платежных систем будут проходить без каких либо изменений.Какая версия магазина?

Версия ocstore_v0.1.7 + стоит модуль замены урлов, т.е. он убирает вот такие вещи "index.php?route="

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.