Оплата замовлень в магазині на Shopkeeper.
Розглянемо 2 найпопулярніших рішення для оплати.
За замовчуванням з магазином встановлюється сніпет Paykeeper. Підтримується система Webmoney (без посередників) і Robokassa. Paykeeper достатньо тісно інтегрується з Shopkeeper: після здійснення оплати замовлення в модулі переводиться в статус "Оплата отримана", а також Paykeeper інтегрується з сніпетів особистого кабінету покупця - SHKUserProfile.
Із додаткових опцій можна відзначити, що проводити оплату можливо як відразу після відправки замовлення, так і після підтвердження замовлення менеджером. Є опція "повторити замовлення".
За замовчуванням Paykeeper буде встановлений із репозиторія разом з магазином. Якщо цього не відбулося, то потрібно завантажити і встановити дистрибутив окремо.
Paykeeper
assets/snippets/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>
Тепер після відправки замовлення на наступній сторінці буде з'являтися кнопка "Оплатити зараз".
result.php
- http://[ваш домен]/assets/snippets/paykeeper/result.php
paykeeper/robokassa/config.php
і введіть свої дані (логін, пароль 1, пароль 2.).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`!]
Рішення для оплати за допомогою сервісу Яндекс.Деньги.
Доступні платіжні методи, якщо ви працюєте як юридична особа:
Для установки даного модуля необхідно:
assets
в папкуassets
Вашого сайтуМодулі
- Управління модулями
- Новий модуль
і створити новий модуль з назвою 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
¤cy=руб.
&noJQuery=1
!]
[!eForm?
&formid=shopOrderForm
&tpl=shopOrderForm
&report=shopOrderReport
&vericode=1
&ccsender=1
&gotoid=35
&subject=Нове замовлення
&eFormOnBeforeMailSent=populateOrderData
&eFormOnMailSent=sendOrderToManager
!]
Перейти в `Модулі` і клацнути по значку поряд з `YandexMoney`, а потім вибрати пункт "Встановити YandexMoney"