[mspLiqPay] — платежи через LiqPay в miniShop2

Представляю расширение mspLiqPay для miniShop2, с помощью которого можно принимать оплату картами VISA/MasterCard. Преимущества LiqPay — комиссия 2,75% и быстрое подключение (публичная оферта, не нужно заключать договор). Краткая инструкция по подключению и настройке ниже.

Регистрация в системе LiqPay


Перейдите на сайт liqpay.ua. Сам процесс регистрации довольно простой, авторизация происходит через смс-сообщение, которое приходит на ваш телефон. После подключения нового сайта, для вас будут созданы приватный и публичный ключ, который нужно будет внести в настройки MODX.

Системные настройки MODX


После того, как вы получите приватный и публичный ключ, можно приступить к системным настройкам.

Для страниц успешной оплаты лучше указать id страницы с корзиной, чтобы покупатель видел свой заказ после возврата с платежного сервиса. Чтобы корректно работала переадресация, у вас должны быть включены дружественные URL.
Обратите внимане на системную настройку ms2_payment_liqpay_sandbox — значение 1 означает, что включен тестовый режим и при совершении платежа через систему, деньги с карты взыматься не будут. В рабочем режиме параметр нужно изменить на 0 (тестовый режим выключен).

Включение метода оплаты


Перейдите в настройки miniShop2, вкладка "Cпособы оплаты" и впишите в поле "Класс обработчик" название класса LiqPay.

Ссылка на оплату в письме покупателю


Вы можете добавить ссылку на оплату (в случае, если операция оплаты была прервана) в письмо-уведомление клиенту о новом заказе. Для этого просто добавьте в чанк письма плейсхолдер payment_link:
[[+payment_link]]
Текст ссылки находится в словаре, ключ ms2_payment_link — можно изменить на свое усмотрение.
Богдан
13 декабря 2014, 14:21
modx.pro
5 752
+1

Комментарии: 42

Mihan
13 декабря 2014, 18:03
0
С российскими счетами работают? (Это проект привата, насколько я помню)

Вообще, они коррелируют с российской юрисдикцией, чтобы не было проблем (сами понимаете, они в любой момент могут возникнуть)?
    Богдан
    13 декабря 2014, 19:49
    0
    На сайте LiqPay пишут, что платежи принимать могут мерчанты из Украины, России, Латвии. Насколько это юридически закреплено для граждан России и Латвии, к сожалению, не знаю…
    Паша Палиенко
    01 апреля 2016, 10:06
    0
    Как дать понять системе, что на сайте несколько валют и в зависимости от этого чтоб менялся «Предлагаемая валюта платежа»
      Богдан
      01 апреля 2016, 13:38
      +1
      Паша, к сожалению, такой возмоности нет. Валюта платежа берется из системных настроек.
        Паша Палиенко
        01 апреля 2016, 13:56
        0
        Спасибо за ответ, в поле «Предлагаемая валюта платежа» нельзя передать чанки который реализует смену валюты у меня в магазине?
          Богдан
          01 апреля 2016, 14:51
          +1
          Без переделывания модуля оплаты и вашего плагина/сниппета, который переключает язык — не получится никак.
            Паша Палиенко
            01 апреля 2016, 15:00
            0
            подскажите где капать на стороне оплаты
              Богдан
              01 апреля 2016, 17:25
              -1
              Смотрите в файле core/components/minishop2/custom/payment/liqpay.class.php, строка 21 со следующим кодом:
              ,'currency' => $this->modx->getOption('ms2_payment_liqpay_currency', 'USD', true)
              Здесь модуль получает валюту из системных настроек.
                Паша Палиенко
                01 апреля 2016, 17:44
                0
                Этот код который отвечает за валюты
                <?php
                /** @var array $scriptProperties */
                /** @var currencyrate $currencyrate */
                if (!$currencyrate = $modx->getService('currencyrate', 'currencyrate', $modx->getOption('currencyrate_core_path', null, $modx->getOption('core_path') . 'components/currencyrate/') . 'model/currencyrate/', $scriptProperties)) {
                	return 'Could not load currencyrate class!';
                }
                $currencyrate->initialize($modx->context->key, $scriptProperties);
                if (empty($selected)) {$selected = '';}
                if (empty($outputSeparator)) {$outputSeparator = "\n";}
                if (!empty($currencyrate->currency)) {
                	$selected = $currencyrate->currency;
                }
                $modx->setPlaceholder('currency', $currencyrate->currency);
                $class = 'CRlist';
                // Start building "Where" expression
                $where = array();
                if (empty($showInactive)) {$where[$class.'.active'] = 1;}
                // Add
                $innerJoin = array();
                // Fields to select
                $select = array(
                	$class => implode(',', array_keys($modx->getFieldMeta($class)))
                );
                // Add custom parameters
                foreach (array('where','innerJoin','select') as $v) {
                	if (!empty($scriptProperties[$v])) {
                		$tmp = $modx->fromJSON($scriptProperties[$v]);
                		if (is_array($tmp)) {
                			$$v = array_merge($$v, $tmp);
                		}
                	}
                	unset($scriptProperties[$v]);
                }
                $currencyrate->pdoTools->addTime('Conditions prepared');
                $default = array(
                	'class' => $class,
                	'innerJoin' => $modx->toJSON($innerJoin),
                	'where' => $modx->toJSON($where),
                	'select' => $modx->toJSON($select),
                	'groupby' => $class.'.id',
                	'sortby' => $class.'.rank',
                	'sortdir' => 'ASC',
                	'fastMode' => false,
                	'return' => !empty($returnIds) ? 'ids' : 'data',
                	'nestedChunkPrefix' => 'cr_',
                	'disableConditions' => true
                );
                // Merge all properties and run!
                $currencyrate->pdoTools->addTime('Query parameters ready');
                $currencyrate->pdoTools->setConfig(array_merge($default, $scriptProperties), false);
                $data = $currencyrate->pdoTools->run();
                // Processing rows
                $rows = array();
                if (!empty($data) && is_array($data)) {
                	foreach ($data as $k => $row) {
                		$row['idx'] = $currencyrate->pdoTools->idx++;
                		$row['selected'] = $row['charcode'] == $selected ? 'selected' : '';
                		$rows[] = empty($tplRow) ? $row : $currencyrate->pdoTools->getChunk($tplRow, $row);
                	}
                }
                $rows = implode($outputSeparator, $rows);
                $output = empty($tplOuter)
                	? $currencyrate->pdoTools->getChunk('', array('rows' => $rows))
                	: $currencyrate->pdoTools->getChunk($tplOuter, array_merge($scriptProperties, array('rows' => $rows)));
                $currencyrate->pdoTools->addTime('Returning processed chunks');
                $log = '';
                if ($modx->user->hasSessionContext('mgr') && !empty($showLog)) {
                	$log .= '<pre class="crLog">' . print_r($currencyrate->pdoTools->getTime(), 1) . '</pre>';
                }
                $output .= $log;
                if (!empty($toPlaceholder)) {
                	$modx->setPlaceholder($toPlaceholder, $output);
                }
                else {
                	return $output;
                }
                в нем я нашел
                $row['selected'] = $row['charcode'] == $selected ? 'selected' : '';
                в роде как это передает валюту
                Два вопроса, как к ликпею подключить это сниптет, чтоб он видел переменные, или же как глобально объявить переменную в которую я запихну валюту и передам в ликпей класс, спасибо.
                  Богдан
                  02 апреля 2016, 13:10
                  0
                  Наверное нужно расширять класс msOrderHandler. Не могу подсказать точно, не очень разбираюсь в логике работы miniShop2.
      Alexey Kiskenbassker
      20 апреля 2016, 12:09
      0
      Расширение работает для мультиязычных сайтов на Babel?
        Богдан
        21 апреля 2016, 15:17
        0
        Алексей, к сожалению, не будет работать. Язык интерфейса LiqPay можно менять только в системных настройках MODX.
          DOM
          DOM
          14 декабря 2018, 12:07
          0
          А если системную настройку продублировать под разные контексты, и внести в них язык интерфейса соответствующий контексту?
            Артем
            22 декабря 2018, 05:54
            0
            Плюсую вопрос, тоже интересует
        Михаил
        14 февраля 2019, 17:36
        0
        Приветствую!!!
        Вопрос к разработчику:
        Подскажите, насколько актуальной является версия расширения на сегодня? В планах было приобрести но смотрю что последнее обновление было еще в 2016 году.
        Заранее спасибо за ответ
          Николай Савин
          18 февраля 2019, 10:57
          +1
          Здравствуйте. Вопрос неоднозначный. Автор компонента сменился. Теперь он у меня на поддержке, но возможности проверить работу компонента в деле не было. Давайте у Вас и проверим. Если вдруг что-то не будет работать, в рамках техподдержки можем доработать компонент до рабочего состояния.
            Михаил
            18 февраля 2019, 12:21
            0
            Компонент был уже куплен и проверен. Он не работает поскольку банально изменились названия полей запроса. Я проверял под API 3 ПриватБанка оно является актуальным на данный момент (https://www.liqpay.ua/documentation/api/aquiring/checkout/doc).
            Кроме того у компонента не подвязаны коллбэки liqpay (https://www.liqpay.ua/documentation/api/callback)
            Пожалуйста, доработайте его. Будет замечательный и полезный компонент.
            Спасибо

            П.С. Проверял на локальном сервере, поэтому прям сразу не получится показать. Но, в качестве наглядного примера могу залить на свой тестовый хостинг.
              Leonid Krylov
              18 февраля 2019, 13:24
              0
              Михаил, готовы провести возврат денег, пришлите номер заказа на info@modstore.pro.
                Михаил
                18 февраля 2019, 14:50
                0
                Инфо отправил.
                Подскажите, а сам компонент планируется обновлять или нет?
                Если нет, тогда его просто бессмысленно держать в магазине.
                  Leonid Krylov
                  18 февраля 2019, 15:03
                  0
                  Спасибо, получил.
                  Компонент отключён, ждем реанимации руками Николая.
          Борис
          18 апреля 2019, 12:27
          0
          Компонент снова доступен в modstore.
          Значит, теперь все работает и можно смело покупать?
            Николай Савин
            18 апреля 2019, 18:51
            0
            Да. С момента реанимации было уже порядка 15 покупок, никто не жалуется.
              Evgeniy
              18 апреля 2019, 23:57
              0
              поправьте ссылки с Liqpay.com на Liqpay.ua
              ain.ua/2019/04/10/ze-liqpay/
              по крайней мере в шапке поста. Ну и в компоненте, если еще есть
                Николай Савин
                19 апреля 2019, 08:08
                +1
                Так это не мой пост, я тут просто по хозяйски отвечаю.
                Вообще почитал — да ужас. Это что ж за банк такой, что первое — не пользуется доменом .com, второе раз уж пользовался — допускает такое. Лично у меня возникли бы вопросы о доверии.
                  Evgeniy
                  19 апреля 2019, 11:50
                  0
                  извините, не заметил действительно :)
                  ньюансами нашей политической жизни предлагаю не загрязнять ресурс, главное что нужно вынести — регистрировать собственность (в т.ч. и нематериальную) компании правильно, а не на тех кто может уволиться вместе с доменом
                  тогда это переадресую к @Михаил
                    Николай Савин
                    19 апреля 2019, 14:47
                    0
                    Компонент некоторое время принадлежит мне, так что адресовать наверное никому не надо. Но над заметкой я не властен.
                      Evgeniy
                      19 апреля 2019, 14:50
                      0
                      ну тогда вы поправьте упоминания старого домена в компоненте (если они еще остались), а с заметкой просим помочь @Василий Наумкин
                        Николай Савин
                        19 апреля 2019, 14:52
                        0
                        Да конечно. Василий — если читаешь — смени по возможности автора этой заметки на меня.
                          Василий Наумкин
                          19 апреля 2019, 18:19
                          0
                          Отредактировал текст заметки.

                          Автора менять нельзя.
            Владимир
            27 мая 2019, 16:35
            0
            Ребята, добрый день! Нужна помощь, использую модуль мультивалютности, задача конвертировать цену передаваемую в LiqPay c евро в гривны, вобщем разработчики модуля
            msmulticurrency
            дали мне этот кусок кода, а куда вставить реально не пойму
            $convertCurrencyId = 2; // ID валюты в которую нужно конвертировать цену.
            $msmc = $modx->getService('msmulticurrency', 'MsMC');
            $convertPrice =  $msmc->getPrice($price, 0, $convertCurrencyId, 0, false);
              При отмене оплаты не редиректит на страницу указанную в системных натсройках. Всегда перенаправляет в корзину. Что делать? Дружественные урлы включены.
                Николай Савин
                18 августа 2019, 21:07
                0
                Здравствуйте. Для начала откройте заявочку в техподдержке modstore.pro — будем решать.
                  Наталья
                  07 февраля 2020, 19:12
                  0
                  Николай, таже проблема — при отмене оплаты отправляет на страницу успешной оплаты. Настройки перепроверила. В техподдержку не могу обратиться, год прошел (разработка сайта затянулась, только сейчас занялись модулем). Modx, miniShop2 — последние версии. Как быть?

                  И еще вопросик, вариантов для контекстов не появилось? только 1 язык возможен?
                    Николай Савин
                    07 февраля 2020, 20:31
                    0
                    Здравствуйте. Рекомендую приобрести техподдержку еще на год. Деньги не то чтобы серьезные.
                    У LiqPay (самого банка) нет настроек для возврата в случае ошибки. Поэтому всегда срабатывает редирект только на один единый адрес. По крайней мере я таких настроек не видел. Если я ошибаюсь — можете ткнуть пальцем.
                    Что касается языков и контекстов — что вы имеете ввиду? Сам платежный модуль с языком вообще не работает. Только с валютой. Пользователю модуль ничего не выводит, все что видит пользователь, и то что можно переводить — это уже miniShop2.
                    Ваша задача наверняка решаема, но не в формате вопроса-ответа.
                      Наталья
                      07 февраля 2020, 21:02
                      0
                      Спасибо за быстрый ответ. Модуль уже оплачен, включая указанные функции — страница отказа + страница успешной оплаты. Если это не так, как вернуть деньги, чтоб оплатить его снова?



                      Контексты — на сайте 2 языка, в настройках msLiqPay — 1 поле для выбора языка. Вернуть после оплаты на корректную языковую версию, и тем более в корзину, не получится.
                      Особенность miniShop2 — при смене контекста товар/заказ не сохраняется…
                        Николай Савин
                        07 февраля 2020, 21:19
                        0
                        Согласно правил modstore.pro Вы приобретаете не программу, а техподдержку на год.
                        Для разрешения спорных вопросов Вы можете обратиться к администрации магазина, я к ней не отношусь.
                          Наталья
                          07 февраля 2020, 21:25
                          0
                          Ок. Для меня проблематично оплатить в РФ. Тогда знакомый ездил туда, оплатил мне сразу все модули. Сейчас такой возможности нет.
                            Наталья
                            07 февраля 2020, 21:30
                            0
                            Но чувствовать себя обманутой как то не приятно. Мне продали модуль, который не соответствует описанию на странице его продажи в modstore.pro.
                Евгений
                24 мая 2021, 11:39
                0
                При отмене оплаты перекидывает на страницу успешной оплаты, все ссылки в системных настройках правильные. Как правильно настроить подскажите пожалуйста?
                  Николай Савин
                  24 мая 2021, 11:41
                  0
                  Насколько я знаю, на данный момент в системе LiqPay нет отдельной ссылки для отмены или неуспешной оплаты.
                  Компонент старый — давно писался — отсюда фактически неиспользуемая системная настройка.

                  Если и есть нечто подобное — значит нужно компонент переделать.
                  Виктор
                  27 января 2022, 19:23
                  0
                  Приветствую! Возник такой вопрос. Если я правильно понял, с этого года нужно передавать на liqpay дополнительные данные — www.liqpay.ua/documentation/data_signature

                  Можно будет доработать модуль? Сколько это выйдет по бюджету?
                    Николай Савин
                    27 января 2022, 19:36
                    0
                    Добрый день. Да доработку можно заказать, напишите в телеграм мне. Обсудим.
                    Здесь главная забота — отсутствие площадки для тестов. Нужен клиент для подключения.
                    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                    42