Оплата заказа

    Оплата заказов в магазине на Shopkeeper.

    Рассмотрим 2 самых популярных решения для оплаты.

    Paykeeper

    По-умолчанию с магазином устанавливается сниппет Paykeeper. Поддерживается система Webmoney (без посредников) и Robokassa. Paykeeper достаточно тесно интегрируется с Shopkeeper: после совершения оплаты заказ в модуле переводится в статус "Оплата получена", а также Paykeeper интегрируется со сниппетом личного кабинета покупателя - SHKUserProfile.

    Из дополнительных опций можно отметить, что производить оплату возможно как сразу после отправки заказа, так и после подтверждения заказа менеджером. Есть опция "повторить заказ".

    Настойки Paykeeper

    Установка

    По-умолчанию Paykeeper будет установлен из репозитория вместе с магазином. Если этого не произошло, то нужно скачать и установить дистрибутив отдельно.

    Установка Paykeeper вручную:

    • В системе управления создать новый сниппет
    • Название сниппета: Paykeeper
    • Описание: Онлайн-оплата покупок
    • Открыть файл сниппета из репозитория, скопировать содержимое и вставить в поле "Код сниппета", сохранить.
    • Скопировать все файлы сниппета в папку assets/snippets/paykeeper/.

    Настойки Paykeeper

    Оплата сразу после отправки заказа

    В системе управления открыть для редактирования страницу, которая открывается после оформления заказа (&gotoid в eForm).

    Вставить в поле "Содержимое ресурса" или в шаблон страницы вызов сниппета:

    [!Paykeeper!]

    Проверьте чтобы на странице оформления заказа в вызове сниппета eForm был указан параметр &gotoid.

    Пример:

    [!eForm?
    &gotoid=`15`
    &formid=`shopOrderForm`
    &tpl=`shopOrderForm`
    &report=`shopOrderReport`
    &subject=`Новый заказ`
    &eFormOnBeforeMailSent=`populateOrderData` 
    &eFormOnMailSent=`sendOrderToManager`
    !] 

    где 15 - это ID страницы, которая будет открываться после отправки заказа.

    В шаблоне формы должен быть выпадающий список (select) для выбора метода оплаты.

    Пример:

    <select name="payment" >
      <option value="При получении">При получении</option>
      <option value="webmoney">WebMoney</option>
      <option value="robokassa">Другие электронные деньги</option>
    </select>

    Теперь после отправки заказа на следующей странице будет появляться кнопка "Оплатить сейчас".

    Настройка платежных систем

    Настройка ROBOKASSA

    • В личном кабинете в поле "Result URL" введите URL, по которой доступен файл result.php - http://[ваш домен]/assets/snippets/paykeeper/result.php
    • Метод отсылки данных по Result URL - POST.
    • Success URL - страница, которая будет открываться после успешного прохождения платежа.
    • Метод отсылки данных по Success URL - POST
    • Fail URL - страница, которая будет открываться после незавершенного платежа.
    • Метод отсылки данных по Fail URL - POST
    • Введите Пароль #1 и Пароль #2.
    • Откройте файл paykeeper/robokassa/config.php и введите свои данные (логин, пароль 1, пароль 2.).

    Настройка WEBMONEY

    • У вас должен быть Аттестат продавца. Откройте сайт http://merchant.webmoney.ru/ и авторизуйтесь
    • Перейдите "Настройки" -> "Web Merchant Interface" -> "R-кошелек" -> "Настроить".
    • Настройки анологичные Robokassa.
    • Откройте файл paykeeper/webmoney/config.php и введите номер R-кошелька ($purse['rub']) и Secret Key.

    Шаблоны, чанки и плейсхолдеры

    Параметр сниппета Описание Плейсхолдеры в шаблоне Примечание
    &WMstartPayTpl Шаблон первой страницы при оплате Webmoney. [+action+] - action для формы;
    [+email+] - адрес электронной почты пользователя;
    [+payment_button+] - название кнопки;
    [+disabled+] - блокировка кнопки, если пользователь незарегистрирован и e-mail не указан (disabled="disabled").
    Пример: paykeeper/tpl/WMstartPayTpl.tpl
    &RKstartPayTpl Шаблон первой страницы при оплате через Robokassa. Пример: paykeeper/tpl/RKstartPayTpl.tpl
    &WMpayTpl Шаблон страницы второго шага оплаты Webmoney (перед переходом на страницу системы оплаты). [+action+] - action для формы;
    [+email_string+] - строка с предупреждением, если указан некорректный e-mail;
    [+pay_summ+] - сумма платежа;
    [+pay_purse_type+] - тип WM-кошелька для оплаты;
    [+h_inputs+] - скрытые текстовые, необходимые для системы оптаты.
    Пример: paykeeper/tpl/WMkpayTpl.tpl
    &RKpayTpl Шаблон страницы второго шага оплаты Robokassa (перед переходом на страницу системы оплаты). [+action+] - см. выше.
    [+email_string+] - см. выше.
    [+pay_summ+] - см. выше.
    [+pay_currency+] - валюта (руб.)
    [+h_inputs+] - см. выше.
    Пример: paykeeper/tpl/RKpayTpl.tpl

    Параметры сниппета

    Параметр Описание и значения Значение по умолчанию Примечание
    &lang язык Язык системы управления В настоящее время доступны языки:
    `russian` (папка paykeeper/lang/)
    &paymentDesc Описание платежа `Оплата покупки в интернет-магазине`  
    &paymentButton Название кнопки на первой странице `Оплатить сейчас`  
    &resultURL URL страницы "Result URL" `http://[ваш сайт]/assets/snippets/paykeeper/result.php` Не обязательный параметр. Можно применять для Webmoney.
    &payment_method Метод оплаты
    `webmoney`, `robokassa`
    $_SESSION['shk_payment_method']  
    &payment_orderid ID заказа $_SESSION['shk_order_id']  
    &payment_userid ID пользователя $_SESSION['shk_order_user_id']  
    &payment_useremail E-mail пользователя $_SESSION['shk_order_user_email']  
    &payment_value Сумма оплаты $_SESSION['shk_order_price']  
    &payment_currency Валюта оплаты $_SESSION['shk_currency']  
    &payment_reserve Зарезервировать товар для оплаты
    `true`, `false`
    `false` Оплата производится после того как статус заказа переводится в "Принят к оплате". Новый параметр в версии 1.5.
    &WMstartPayTpl Имя чанка с шаблоном первой страницы при оплате Webmoney `@FILE:assets/snippets/paykeeper/tpl/WMstartPayTpl.tpl` Если чанки хранятся в файлах, можно указать путь с командой "@FILE:". Если чанки созданы в системе управления, то указывается только имя чанка (например &WMstartPayTpl=`WMstartPay`)
    &WMpayTpl Имя чанка с шаблоном страницы второго шага оплаты Webmoney (перед переходом на страницу системы оплаты) `@FILE:assets/snippets/paykeeper/tpl/WMkpayTpl.tpl`
    &RKstartPayTpl Имя чанка с шаблоном первой страницы при оплате через Robokassa `@FILE:assets/snippets/paykeeper/tpl/RKstartPayTpl.tpl`
    &RKpayTpl Имя чанка с шаблоном страницы второго шага оплаты Robokassa (перед переходом на страницу системы оплаты) `@FILE:assets/snippets/paykeeper/tpl/RKpayTpl.tpl`
    &payTest Тестовый режим оплаты. Возможные значения: `true`, `false`. `false`  

    Особенности и дополнительные возможности

    Если сниппет вызывается без параметров, значения суммы оплаты, ID заказа и т.д. берется из сессий, которые создаются сниппетом Shopkeeper после сохранения заказа.

    Сниппет можно вызывать из других сниппетов через функцию $modx->runSnippet().

    В данной версии (1.x) для WebMoney поддерживается оплата только WMR (рубли). Сниппет тесторовался только с кодировкой сайта UTF-8, т.к. она является рекомендуемой для Evolution CMS. C другой кодировкой корректная работа не гарантируется.

    Примеры вызова Paykeeper:

    Оплата после отправки заказа

    [!Paykeeper!] 

    Резервирование (оплата после подтверждения менеджером)

    [!Paykeeper? &payment_reserve=`true`!] 

    Оплата отдельного заказа

    [!Paykeeper?
    &payment_method=`webmoney`
    &payment_orderid=`2`
    &payment_value=`100`
    &payment_currency=`WMR`!]

    Yandex.Money

    Решение для оплаты при помощи сервиса Яндекс.Деньги.

    Доступные платежные методы, если вы работаете как юридическое лицо:

    • Банковские карты - Visa (включая Electron), MasterCard и Maestro любого банка мира
    • Электронные деньги - Яндекс.Деньги, WebMoney и QIWI Wallet
    • Наличные - Более 170 тысяч пунктов оплаты по России
    • Баланс телефона - Билайн, МегаФон и МТС
    • Интернет банкинг - Альфа-Клик, Сбербанк Онлайн, MasterPass и Промсвязьбанк
    • Кредитование

    Установка модуля

    Установка модуля

    Для установки данного модуля необходимо:

    • Распаковать архив и переместить папку assets в папку assets Вашего сайта
    • Перейти в административную панель Evolution CMS
    • Перейти в меню Модули - Управление модулями - Новый модуль и создать новый модуль с названием YandexMoney
    • Вставить в код модуля YandexMoney следующий код:
      
      include '../assets/snippets/yandexmoney/yandexmoney.class.php';

    $dbname = $modx->db->config['dbase']; //имя базы данных $dbprefix = $modx->db->config['table_prefix']; //префикс таблиц $mod_table = $dbprefix."yandexmoney"; //таблица модуля $theme = $modx->config['manager_theme']; //тема админки $basePath = $modx->config['base_path']; //путь до сайта на сервере

    $action = isset($_POST['action']) ? $_POST['action']:'';

    switch($action) {

    //Установка модуля (создание таблицы в БД) case 'install': $sql = "CREATE TABLE $mod_table (id INT(11) NOT NULL AUTO_INCREMENT, config LONGTEXT, PRIMARY KEY (id))"; $modx->db->query($sql);

    $sql = "INSERT INTO $mod_table (id, config) VALUES (1, '')"; $modx->db->query($sql);

    header("Location: $_SERVER[REQUEST_URI]"); break;

    //Удаление таблицы модуля case "uninstall": $sql = "DROP TABLE $mod_table"; $modx->db->query($sql); header("Location: $_SERVER[REQUEST_URI]"); break;

    //Обновление записи в БД case 'save': $fields = array( 'config' => serialize($_POST['config']) ); $ym_stat = new yamoney_statistics($_POST['config']); $query = $modx->db->update($fields, $mod_table, 'id = 1'); header("Location: $_SERVER[REQUEST_URI]"); break;

    //Перезагрузка страницы (сброс $_POST) case 'reload': header("Location: $_SERVER[REQUEST_URI]"); break;

    //Страница модуля default: echo Yandexmoney::adminHeadHtml($theme);; if (!Yandexmoney::isInstalled($dbname, $mod_table)){ //если таблицы не существует, выводим кнопку "Установить модуль" echo Yandexmoney::adminInstallHtml(); }else{ $data_query = $modx->db->select("*", $mod_table, "", "id ASC", ""); $row = $modx->db->getRow($data_query); $config = unserialize($row['config']);

        $ym = new Yandexmoney($config);
        echo $ym->adminModuleHtml();
    }
    break;

    }

    
    Перейти в меню `Элементы` - `Сниппеты` и создать новый сниппет с названием `YandexMoney`.
    
    Вставить следующий код:
    

    <?php $dbname = $modx->db->config['dbase']; //имя базы данных $dbprefix = $modx->db->config['table_prefix']; //префикс таблиц $mod_table = $dbprefix."yandexmoney"; //таблица модуля $theme = $modx->config['manager_theme']; //тема админки $basePath = $modx->config['base_path']; //путь до сайта на сервере if(!defined('YANDEXMONEY_PATH')) { define('YANDEXMONEY_PATH', MODX_BASE_PATH."assets/snippets/yandexmoney/"); } require_once YANDEXMONEY_PATH.'yandexmoney.class.php';

    $data_query = $modx->db->select("*", $mod_table, "", "id ASC", ""); $row = $modx->db->getRow($data_query); $config = unserialize($row['config']); $ym = new Yandexmoney($config); if ($_POST['payment']){ $ym->pay_method = $_POST['payment']; } if ($action == 'showMethods') { return $ym->getSelectHtml(); } ?>

    
    Перейти в меню `Элементы - Управление файлами` и в файл `assests/snippets/shopkeeper/shopkeeper.inc.php` вставить следующий код:
    

    if(!function_exists('sendOrderToManager')){ function sendOrderToManager(&$fields){ global $modx, $shkconf;

      if(!class_exists('Shopkeeper')) require_once MODX_BASE_PATH."assets/snippets/shopkeeper/class.shopkeeper.php";
      if(!defined('YANDEXMONEY_PATH')) define('YANDEXMONEY_PATH', MODX_BASE_PATH."assets/snippets/yandexmoney/");
      if(!function_exists('YandexMoneyForm')) require_once YANDEXMONEY_PATH.'yandexmoney.class.php';
      $shopCart = new Shopkeeper($modx, $shkconf);
    
      $shopCart->sendOrderToManager($fields);
    
      YandexMoneyForm($fields); 
    
      return true;
    }

    }

    
    Перейти в меню `Элементы - Чанки` и создать новый чанк с названием `YandexMoney`
    
    Вставить в код чанка `YandexMoney` следующий код:
    

    [[YandexMoney?&action=showMethods]]

    
    Пример с вставленной строкой `[[YandexMoney?&action=`showMethods`]]`:
    
    
    В коде страницы с формой заказа необходимо вставить следующий код:
    

    [[YandexMoney? &action=beforeCart]]

    
    Пример с вставленной строкой `[[YandexMoney? &action=`beforeCart`]]`:
    

    [[YandexMoney? &action=beforeCart ]]

    [!Shopkeeper? &cartType=full &priceTV=price &orderFormPage=34 &currency=руб. &noJQuery=1 !]

    [!eForm? &formid=shopOrderForm &tpl=shopOrderForm &report=shopOrderReport &vericode=1 &ccsender=1 &gotoid=35 &subject=Новый заказ &eFormOnBeforeMailSent=populateOrderData &eFormOnMailSent=sendOrderToManager !]

    
    
    Перейти в `Модули` и щелкнуть по значку рядом с `YandexMoney`, а затем выбрать пункт "Установить YandexMoney"