Jump to content

проблемы с модулем оплаты liqpay


Recommended Posts

freebsd_admin

добрый день.

тестирую модуль оплаты liqpay

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

покупаю тестовый товар

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

Warning: addslashes() expects parameter 1 to be string, array given in /usr/local/www/shop/inc/vam_address_format.inc.php on line 66

Warning: Cannot modify header information - headers already sent by (output started at /usr/local/www/shop164/inc/vam_address_format.inc.php:66) in /usr/local/www/shop/inc/vam_redirect.inc.php on line 47

При этом оплата с ликпей уходит. Но статус заказа не меняется и соответственно невозможно из админки понять оплачен заказ или нет

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

p.s. страна Украина, валюта гривня.

Link to post
Share on other sites
  • Replies 63
  • Created
  • Last Reply

Top Posters In This Topic

  • support

    30

  • freebsd_admin

    19

  • yulianna_yuliya

    13

  • Boris

    2

Попробуйте в /inc/vam_address_format.inc.php поменять:


if ($firstname == '') $firstname = addslashes($address['name']);
if ($country == '') $country = addslashes($address['country']);
[/code] на:
[code]
if ($firstname == '') $firstname = addslashes((string)$address['name']);
if ($country == '') $country = addslashes((string)$address['country']);

Link to post
Share on other sites
freebsd_admin

Спасибо, помогло. Ошибки исчезли.

Возникла следующая проблема: после оплаты не поменялся статус заказа на выбранный в модуле liqpay.

Link to post
Share on other sites
freebsd_admin

И еще в админке в настройках статуса заказа не выходит написать статус заказа для украинского языка. после обновления все остается по прежнему. Видно только русский вариант статуса. Возможно это связано с переходом и с версии 1.63 на 1.64 при импорте базы?

Link to post
Share on other sites

Если модуль настроили так как написано здесь - http://vamshop.ru/forum/topic/8436-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-%d0%bc%d0%be%d0%b4%d1%83%d0%bb%d1%8f-%d0%be%d0%bf%d0%bb%d0%b0%d1%82%d1%8b-liqpay/page__hl__liqpay__fromsearch__1

Всё меняется автоматически, проверено.

Link to post
Share on other sites
freebsd_admin

id и пароль указаны..

"Укажите оплаченный статус заказа Доставлен"

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

Деньги нормально проходят.

Link to post
Share on other sites

Проверяйте тогда, что присылает liqpay.php на этот файл, какие данные приходят после платежа и смотрите, почему у Вас условие смены статуса заказа не работает, я не в курсе, что у Вас не так.

Link to post
Share on other sites
freebsd_admin

поставил для эксперимента голый движок, создал товар, оплатил через ликпей. Сперва была ошибка как раньше, поменял две строки в

/inc/vam_address_format.inc.php. Ошибки пропали, деньги ушли, а статус не поменялся.. версия магазина 1.64

Проверяйте тогда, что присылает liqpay.php на этот файл, какие данные приходят после платежа и смотрите, почему у Вас условие смены статуса заказа не работает, я не в курсе, что у Вас не так.

А как и где это проверить?

Link to post
Share on other sites

В /liqpay.php есть закомментированный код сохранения присылаемых $_POST данных от liqpay в log файл.

Вот расскомментируйте код, правильно укажите путь до лог файла, создайте лог файл, а затем смотрите, что присылает liqpay после оплаты и смотрите, почему у Вас не срабатывает.

Повторяю, что в текущей версии модуля liqpay всё работает, на том же vamshop.ru платят и всё меняется.

Link to post
Share on other sites
freebsd_admin

Сделал как Вы сказали. В логе какая-то билиберда.

"2011-08-17 15:38:44 - signature= набор символов ;operation_xml = набор символов."

А какой текст должен быть в логе чтоб определить что все правильно работает?

Link to post
Share on other sites

У Вас магазин какой версии вообще?

Если старой, то возьмите файлы /liqpay.php

/includes/modules/payment/liqpay.php из текущей версии и переустановите модуль в админке - модули - оплаты.

Всё правильно, данные присылает liqpay.

У Вас в магазине одна валюта?!

или разные и заказ в разных валютах оформляется?!

Для пробы, в /liqpay.php закомментируйте или удалите:


if ($xml->status == 'success') {
if (number_format($xml->amount,0) == number_format($order->info['total'],0)) {
[/code] и внизу:
[code]
}
}

Link to post
Share on other sites
freebsd_admin

версия магазина 1.64

Валюта одна - гривна, русскую удалил в файле языка поменял RUR на UAH, в админке поставил использовать валюту текущего языка.

с кодом буду пробовать.

Link to post
Share on other sites
freebsd_admin

После того как закомментировал, все прошло удачно! Статус изменился.

Link to post
Share on other sites

Если у Вас не виртуальные товары, то можно конечно оставить, но если виртуальные, то не очень хорошо удалять условие.

Link to post
Share on other sites
freebsd_admin

Товары как раз виртуальные.. Что нужно изменить чтоб заработало? Это проблема связана с изменением валюты?

Link to post
Share on other sites

Попробуйте хотя бы оставить одноу условие:

if ($xml->status == 'success') {
[/code]

Link to post
Share on other sites
freebsd_admin

Оставил одно условие:

if ($xml->status == 'success') {

Платеж проходит, статус меняется. А что теперь делать со вторым условием? За что оно отвечает?

Link to post
Share on other sites

Проверяется сумма заказа, видимо, оно не срабатывает у Вас.

Попробуйте поменять:

if (number_format($xml->amount,0) == number_format($order->info['total'],0)) {
[/code] на:
[code]if (number_format($xml->amount,0, '', '.') == number_format($order->info['total'],0, '', '.')) {

Link to post
Share on other sites
freebsd_admin

Поменял, статус заказа не поменялся.

в описании валюты:


Название: Гривня
Код: UAH
Символ слева:
Символ справа: грн.
Десятичный знак: ,
Разделитель тысяч: .
Десятичные порядки: 2
Последний раз скорректировано:
Величина: 1.00000000
Пример:
30 = 30,00 грн.
[/CODE]

Link to post
Share on other sites

Ну тогда нужно в лог файл писать значение $order->info['total'] и $xml->amount или как там.

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

Link to post
Share on other sites
freebsd_admin

попробовал, не получилось вывести в лог файле.

Вот часть ответственная за лог:


$fp = fopen('/путь/liqpay.log', 'a+');
$str=date('Y-m-d H:i:s').' - ';
foreach ($_REQUEST as $vn=>$vv) {
$str.=$vn.'='.$vv.';';
}
fwrite($fp, $str."\n");
fclose($fp);
[/CODE]

Что именно нужно прописать и где чтоб вывести в логе эти переменные?

Link to post
Share on other sites

Наверное заменить $str на $str.=$xml->amount;

Если нужно только это значение сохранить.

Link to post
Share on other sites

И запись лога нужно вниз опустить, после:


$xml = simplexml_load_string($xml_decoded);
[/code]

Иначе не запишется ничего.

Link to post
Share on other sites

×
×
  • Create New...