Оплата замовлення

    Оплата замовлень в магазині на 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"