Virtuemart - интернет-магазин на Joomla. Часть 17. Подключение оплаты через ROBOKASSA.
Одной из важнейших составляющих интернет-магазина является оплата покупаемых товаров. Все вопросы, касающиеся денег, требуют особого внимания. Большим минусом VirtueMart является то, что все предустановленные системы оплаты ориентированны на Запад и отечественные системы приходится устанавливать и настраивать вручную. Настройка систем оплаты, в отличие от настройки самого магазина, не так проста. В большинстве случаев требуются дополнительные модули оплаты (файлы, настроенные на взаимодействие с той или иной системой). К счастью, VirtueMart получил широкое распространение и у нас. Поэтому появились некоторые готовые решения для работы с отечественными системами оплаты.
Сегодня я расскажу о том, что такое ROBOKASSA и как ее подключить к VirtueMart в автоматическом и полуавтоматическом режиме.
Еще одной сложностью при работе с системами интернет-оплаты является их многообразие. Если особо не задумываться, то можно назвать сразу несколько очень известных систем: Webmoney, Яндекс.Деньги, rbkmoney, SMS-оплата, оплата через терминалы, банковский перевод, и.т.д. Поскольку конкуренция на рынке велика и постоянно увеличивается, владелец магазина заинтересован в том, чтобы подключить как можно больше способов оплаты (ведь разным покупателям удобно платить через разные системы, а кто-то и вообще может отказаться от покупки, если удобной для него системы не будет в магазине). На этом этапе начинаются сложности как у web-мастера, который делает магазин, так и у заказчика. Web-мастеру приходится подключать множество систем оплаты у каждой их которых свой собственный интерфейс, а заказчику – оформлять документы и улаживать юридические вопросы с каждой из систем, что, поверьте, тоже далеко не просто. Все это существенно замедляет и усложняет процесс разработки интернет-магазина.
Многие это понимали и среди них нашлись предприимчивые люди, которые придумали как решить вышеописанную проблему и при этом заработать. Одна из систем, предоставляющих подобные услуги – ROBOKASSA.
Что такое ROBOKASSA? Это что-то вроде посредника между платежными системами и интернет-магазинами. ROBOKASSA берет на себя все сложности, связанные с оформлением документов и подключением платежных систем. Таким образом, web-мастеру требуется подключить к интернет-магазину всего одну систему оплаты – ROBOKASSA, а заказчику оформить отношение всего с одной стороной – ROBOKASSA. При этом интернет-магазин получает возможность принимать оплату через все платежные системы, подключенные к робокассе, коих очень много. А владельцу магазина уже не нужно беспокоиться о безопасности, т.к. все денежные операции проводятся на сайте ROBOKASSA, т.к. интернет-магазин только отправляет запрос на оплату и получает ответ об успешном или неудачном процессе оплаты.
Комиссия ROBOKASSA составляет
5% от размера платежа (стоимости покупки). Это достаточно много, но допустимо. Особенно для небольших интернет-магазинов. Но при этом можно избавиться от многих проблем, описанных выше. Поэтому ROBOKASSA стала довольно популярной системой. Подключение ROBOKASSA к VirtueMart рассмотрим далее.
Многие модули подключения VirtueMart к ROBOKASSA продаются за деньги. Стоимость составляет порядка 600-1000руб. Если для вас это не деньги, то можно и купить такой модуль, получив при этом тех. поддержку разработчика. Если лишнюю тысячу рублей тратить не хочется, предлагаю вашему вниманию два бесплатных способа подключения VirtueMart к ROBOKASSA: полуавтоматический и автоматический.
Подключение к VirtueMart оплаты через ROBOKASSA. Полуавтоматический режим.
Способ подключения VirtueMart к ROBOKASSA в полуавтоматическом режиме прост как две копейки, но имеет один существенный недостаток – после оплаты заказа покупателем статус товара не изменяется на «Оплачен» автоматически. Его должен изменить администратор магазина (после оплаты администратору магазина приходит на e-mail письмо от ROBOKASSA, что произведена оплата заказа с порядковым номером N. После этого администратор должен зайти в управление заказами, найти заказ N и изменить его статус на «Оплачен»). С одной стороны этот режим хорош тем, что все операции, связанные с деньгами и товаром, контролируются человеком, что, в целом, исключает возможность ошибки. С другой стороны довольно неудобно постоянно менять статусы вручную. К тому же это нужно делать довольно оперативно, т.к. до смены статуса покупателю не придет письмо о подтверждении оплаты и он может не понять прошла оплата удачно или нет.
Использовать этот способ или автоматический, каждый решит для себя сам, а я опишу как его подключить.
В VirtueMart перейдем в «Магазин» –> «Способы оплаты». После чего появится список с доступными способами оплаты.
Отключим все ненужные способы, кликая по зеленым галочкам в соответствующих строках списка.
После того, как ненужные способы оплаты отключены, добавим новый способ, кликнув по кнопке «Новый», которая находится над списком. Появится форма добавления способа оплаты, показанная на следующем рисунке:
Заполняем ее следующим образом:
- Название способа оплаты: ROBOKASSA
- Код: ROBO
- Класс имени платежа: ps_payment
- Способ оплаты: HTML-форма (например, для PayPal)
- Группа покупателей: default
Далее – по желанию.
После этого переходим на вкладку «Настройки» (смотрите самый верх заполняемой формы) и в поле «Дополнительная информация по платежу» вводим следующий код:
После этого сохраняем внесенные настройки. Все. Модуль оплаты через ROBOKASSA в полуавтоматическом режиме установлен.
Хочу заметить, что все будет работать корректно только после активации аккаунта в ROBOKASSA.
Подключение к VirtueMart оплаты через ROBOKASSA. Автоматический режим.
Для того, чтобы после оплаты статус заказа изменялся на «Оплачен» автоматически, требуется несколько другой модуль подключения, включающий дополнительные файлы. Скачать его можно в конце статьи.
При настройке модуля нам понадобятся следующие данные:
- Пароль #1: пароль №1 в личном кабинете ROBOKASSA
- Пароль #2: пароль №2 в личном кабинете ROBOKASSA
При настройке ROBOKASSA следующие:
- Result URL: http://domen.ru/administrator/components/com_virtuemart/notify_rk.php
- Success URL: http://domen.ru/administrator/components/com_virtuemart/succes_rk.php
- Fail URL:http://domen.ru/administrator/components/com_virtuemart/succes_rk.php
- Метод отсылки данных по Result URL: POST
- Метод отсылки данных по Success URL: POST
- Метод отсылки данных по Fail URL: POST
Естественно, вместо «domen.ru» нужно подставить доменное имя вашего сайта.
Форма с заполняемыми данными показана на рисунке (раздел «Администрирование»)
После настройки аккаунта ROBOKASSA нужно внести данные для авторизации в файлы модуля:
- notify_rk.php: пароль #2 в 3 и 260 строке
- succes_rk.php: пароль #1 в 4 строке и доменное имя в 28 строке
- ps_rk_out.php: логин и пароль #1 в 24 и 25 строках
После того, как файлы отредактированы, их нужно добавить на сайт в соответствующие папки(можно просто скопировать папку Administrator в корень сайта. Файлы попадут на нужные места). Далее переходим к настройке модуля в VirtueMart.
Для настройки модуля переходим к списку модулей оплаты «Магазин» –> «Способы оплаты» и добавляем новый модуль. Форму заполняем следующим образом:
- Название способа оплаты: ROBOKASSA
- Код: rk
- Класс имени платежа: ps_robokassa (появится после добавления файлов модуля на сайт)
- Способ оплаты: HTML-форма (например, для PayPal)
- Группа покупателей: default
Далее – по желанию.
После этого переходим на вкладку «Настройки» (смотрите самый верх заполняемой формы), заполняем появившиеся поля и в поле «Дополнительная информация по платежу» вводим следующий код:
На этом настройка закончена. Остается только все проверить и протестировать оплату. Все будет работать корректно только после активации аккаунта в ROBOKASSA.
Дополнительно: Да, кстати, думаю, что вас порадует полезная информация по CMS Joomla!, а также Drupal и Wordpress, которую вы найдете на блоге коллеги по цеху. Блог так и называется -- <<Вебмастеру посвящается. >>
Другие статьи серии Добавить комментарий КомментарииСпасибо большое, но нужно исправить ошибки в коде. стр. 173, 174$rk_post_7= $_POST['inv_id']; //$_POST[inv_id]; $rk_post_10=$_POST['crc']; //$_POST[crc];
стр. 330echo "OK$inv_id"; //"OK$_POST[inv_id]\n";
Спасибо большое автору за материалы по virtue mart. ;)
Спасибо большое, но нужно исправить ошибки в коде. стр. 173, 174$rk_post_7= $_POST['inv_id']; //$_POST[inv_id]; $rk_post_10=$_POST['crc']; //$_POST[crc];
стр. 330echo "OK$inv_id"; //"OK$_POST[inv_id]\n";
Присоединяюсь к вопросу: это изменение имеет особый смысл или можно оставить так как есть в коде автора?
И если имеет смысл, то что оно даёт?Заранее спасибо за ответы. )
Настраиваю автоматическую версию. Никак не избавиться от ошибки: Notice: Undefined index: ROBOKASSA_PENDING_STATUS in /home/u28032/xxxxxx.xx/www/administrator/components/com_virtuemart/classes/payment/ps_robokassa.php on line 127
В чем ошибку искать?
Я не совсем понял вот какой момент - модуль вообще не будет работать до активации аккаунта?
При тестовой покупке выводится сообщение "пользователь не активирован на Робокассе". А если меняю адрес сервера в файле ps_rk_out на тестовый, вообще никакого сообщения не выводится.
добрый вечер. А разве Success URL: http://domen.ru/administrator/components/com_virtuemart/succes_rk.php
это должна быть ссылка на одну и ту же страницу .
Доброго времени суток.
Использую данный модуль, спасибо большое автору.
Но есть единственная проблема, подтверждение почему-то оправляется не на e-mail пользователя, сделавшего заказ, а на webmaster joomlart.com , ( шаблон также от joomlart.com). Подскажите пожалуйста в чем может быть проблема и как её можно решить.
установил Модуль оплаты ROBOKASSA, при попытке совершения платежа прогружается страница с выбором системы оплаты (как видно на скрине) и после этого платёж уходит в космос, т.е. деньги не снимаются (вообще нет никаких признаков обращения к платежным системам) и в робокассе нет никаких сообщений о прохождении платежей. что может быть и как это вылечить?
следовал всем инструкциям указаным на сайте, но у меня получается следующее, после вот этого шага в оплате, загружается шаг с подтверждением своего заказа. после подтверждения заказ выдаёт что он принят и никаких полей для оплаты или новых страниц/окон не загружается. получается что заказ уходит в космос
ЗЫ: я к сожалению распологаю малым временем для решения данной проблемы, по этому я буду признателен если вы предоставите мне возможность решить проблему с вашей помощью в режими реального времени.
По поводу отправки сообщений. С настройкой разобрался, настроил через PHP mail function, до этого не работала вся отправка сообщений вообще, а сейчас сообщения отправляет нормально. Только при подтверждении заказа все равно отправляет подтверждающее сообщение (у администратора на webmaster joomlaart.com ), а удругих пользователей на вымышленные адрес типа nh nh.hong
Подскажите пожалуйста где еще может быть проблема, спасибо.
Собственно вопрос:Когда должна появиться форма с выбором вида оплаты? Иду в оформлении заказа по шагам, адрес - вид доставки - оплата (тут выбираю робокассу) дальше итоговая страница подтвердить заказ, подтверждаю и тут выводится надпись, что аккаунт мой на робокассе не активен. Никакой формы выбора. Если я активирую свой аккаунт то форма выбора появиться как и положено?
До активации просто хотелось бы поинтересоваться у людей которые уже используют модуль - сначала идет подтверждение заказа, а потом уже человек выбирает вид оплаты и оплачивает?
и потом я так понимаю выбрав полу автоматический способ описанный здесь я должен сам отследить заказ? так?а при автоматическом, заказу на сайте в случае корректной оплаты будет присвоен статус оплачен автоматически?
спасибо за оперативный ответ
Игорь, проверьте, что:
– Класс имени платежа: ps_robokassa (появится после добавления файлов модуля на сайт)
– Способ оплаты: HTML-форма (например, для PayPal)
- в поле «Дополнительная информация по платежу» следующий код://php require_once( CLASSPATH. 'payment/ps_rk_out.php' )//(правильный код см. в конце статьи).
Активировать надо обязательно.а то что я про изменения в коде писал - так это для того, чтобы можно было посмотреть как процедура оплаты через робокассу может выглядеть.
Принцип работы тестового сервера Робокассы я так и не понял, поэтому выложил пример для полуавтоматичекой оплаты.
приветВсё настраивал в автоматическом и полуавтоматическом режиме в соответствии с описанием. К сожалению ничего не сработало.
В частности на сайт робокассы переход осуществлен не был. А в письмах также не было никаких ссылок на робокассу.
Oleg, в конце не производится автоматический переход на сайт робокассы, а появляется форма робокассы с выбором способа оплаты, а уже после выбора способа и клика "Оплатить" покупатель переходит на сайт робокассы.
Эта форма появляется на странице, которая загружается после клика по кнопке "Подтвердить заказ".
Подскажите пожалуйста. На странице оплаты робокассы пишутся вот такие ошибки:Notice: Use of undefined constant LMI_PAYMENT_DESC - assumed 'LMI_PAYMENT_DESC' in /home/sovmod/public_html/administrator/components/com_virtuemart/classes/payment/ps_rk_out.php on line 7
Notice: Undefined variable: culture in /home/sovmod/public_html/administrator/components/com_virtuemart/classes/payment/ps_rk_out.php on line 59
кто нибудь поборол?
Аналогичная проблема, прошу помощи в разрешении данной проблемы
Дело не в модуле. Я так понимаю дело в самой робокассе. Когда установил все работало нормально. Позже появилось сообщение Пишет что "Не удалось установить связь с магазином для передачи ему информации об оплате. Через минуту будет произведена повторная попытка"Когда срабатывало через минуту когда нет, в итоге ушел на другую платежную систему. Куда писать не буду чтобы не сочли за рекламу.
На новом сайте у меня возникла проблема с отправкой подтверждаемого письма.
"Подтверждающее письмо было выслано по адресу:" далее не какого адреса, и письмо не куда не отправляется.
Буду очень благодарен вам, если вы постараетесь мне помочь, и найти проблему.
Заранее благодарен,с уважением, Гость)
Отправляются. Я немножко посидел, поковырялся) теперь отправляется все!
Но осталась проблемка: "Подтверждающее письмо было выслано по адресу:" далее никакого адреса
Также в списке заказов нет ни одного заказа (Пробовал с Virtuemart 1.1.8 и 1.1.9). Но мне кажется с заказами не в модуле проблема, поскольку на другом сайте стоит и все работает идеально (огромное спасибо за модуль).
Заранее благодарен,с уважением, Гость)
Установил полуавтоматический скрипт Вашего модуля для оплаты через ROBOKASSA – все работает, но не могу настроить описание заказа // описание заказа// order description$inv_desc = "ROBOKASSA Advanced User Guide";
Если ставить $inv_desc = "ROBOKASSA Advanced User Guide"; , то эта фраза и отображается в модуле оплаты, а если ставить $inv_desc = $db->f , то поле остается пустым. Не подскажите, что именно означает в скрипте выражении $db->f и как настроить вывод описания заказа ? А также возможно ли вместе с описанием заказа выводить предупреждение «Уточняйте наличие товара до его оплаты» - или выводить его в модуле отдельной строкой ? И 3-й вопрос – возможно ли установить запрет оплаты до подтверждения наличия товара продавцом ?
С уважением, Александр.
Установил полуавтоматический скрипт Вашего модуля для оплаты через ROBOKASSA – все работает, но не могу настроить описание заказа // описание заказа// order description$inv_desc = "ROBOKASSA Advanced User Guide";
Если ставить $inv_desc = "ROBOKASSA Advanced User Guide"; , то эта фраза и отображается в модуле оплаты. А если осуществлять продажу (в целях тестирования) не с сайта, а с локального сервера - то описание заказа вообще не отображается в на странице оплаты (графа описание пустая).
Допустим, я присвою описание заказа переменной - как потом её значение вывести через модуль заказа на странице оплаты ?Пытался присвоить $inv_desc = "$opisanie"; - Выдает ошибку
С уважением, Александр
Виктор, так вы скопируйте их туда из модуля.
P.S. А версия Virtuemart действительно старовата, что может быть чревато.
Вдруг, ни с того ни с сяго, без каких либо изменений с моей стороны модуль стал вместо вариантов оплаты выдавать сообщение: