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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...