paykeeper22.0-pl
Сниппет “Онлайн оплата” - Paykeeper2
http://modx-shopkeeper.ru/ - Бесплатный компонент для MODX Revolution для создания интернет-магазина. http://e-store.modx-shopkeeper.ru/ - Электронные товары.
Paykeeper 2
Сниппет для продажи электронных товаров, а так же оплаты заказов в интернет-магазине на основе Shopkeeper 3.x. Компонент для управления электронными товарами (Фронт-енд написан на Angular2 + TypeScript). Используется библиотека Omnipay. Эта библиотека позволяет делать единый API для разных платежных систем. Сайт проекта: http://omnipay.thephpleague.com/
В состав входят готовые обработчики для платежных систем: Yandex.Kassa (агрегатор), WebMoney, PayPal.
Есть инструкция по подключению других платежных систем с помощью компонентов Omnipay. Требуются базовые (начальные) знания PHP.
Агрегатор Яндекс.Касса имеет следующие методы оплаты:
Банковские карты - Visa (включая Electron), MasterCard и Maestro. Яндекс.Деньги - От 25 млн пользователей электронных кошельков. WebMoney - Из рублевых WM-кошельков. QIWI Wallet - На сайте QIWI и через приложение QIWI Wallet. Наличные - Через терминалы, банкоматы и салоны связи — это больше 250 000 пунктов в России и других странах. Платежи через интернет-банки - Через «Альфа-клик», интернет-банк «Промсвязьбанка», Сбербанк Онлайн и MasterPass — всего около 30 млн пользователей. Платежи со счета мобильного - От абонентов Билайна, МегаФона, МТС. Платежи через кредитные сервисы - «КупиВкредит» («Тинькофф Банк»), доверительный платеж («Куппи.ру»).
Техническая поддержка:
http://modx-shopkeeper.ru/forum/
Если на форуме долго нет ответа, можно писать на почту автору с помощью форм: http://modx-shopkeeper.ru/contacts/ или http://e-store.modx-shopkeeper.ru/kontaktyi.html
Параметры сниппета Paykeeper2:
gateway - Название платежной системы (или агрегатора). Пример: &gateway=YandexMoney
action - Действие. payment - оплата, download_form - скачивание эл. товаров.
product - Ссылка на товар или информация, которая продается. Указывается вместо productId.
productName - Название товара.
productId - ID товара (не обязательно). Если не указано, создается новый ID для товара, указанного в параметре “product”.
orderId - ID заказа в магазине. Используется для оплаты заказов в магазине, созданном на базе Shopkeeper 3.x.
price - Цена товара. Если указывается productId, то цену указывать не нужно.
currency - Валюта. По умолчанию: RUB
method - Метод оплаты (не обязательно).
lang - Язык. По умолчанию: ru
autoLink - Автоматически переводить значение параметра “product” в полную ссылку. По умолчанию: true
testMode - Тестовый режим оплаты. По умолчанию: false
printParameters - Показать список обязательный поле оплаты. По умолчанию: false
tpl - Чанк шаблона формы оплаты. По умолчанию: pk_form
chunkEmailPurchases - Чанк шаблона письма со ссылкой на скачивание эл. товаров. По умолчанию: pk_chunkEmailPurchases
chunkDownloadsItem - Чанк одного товара в списке. По умолчанию: pk_chunkDownloadsItem
chunkDownloadsOuter - Чанк обертки для списка товаров. По умолчанию: pk_chunkDownloadsOuter
shop_className - Имя класса таблицы заказов магазина. По умолчанию: shopkeeper3
shop_packageName - Имя пакета таблицы заказов магазина. По умолчанию: shk_order
Справка: Вместо значения “true” нужно указывать “1” (еденица без кавычек). Вместо значения “false” нужно указывать “0” (ноль без кавычек).
Примеры
Страница электронного товара
[[!Paykeeper2?
&gateway=
YandexMoney
&tpl=pk_form
&product=
&productName=[[*e_product]]
&price=[[*pagetitle]]
]][[*price]]
[[!Paykeeper2?
&gateway=
YandexMoney
&tpl=pk_form
&productId=
]][[*product_id]]
Оплата заказа в интернет магазине на базе Shopkeeper 3.x:
[[!Paykeeper2?
&gateway=
YandexMoney
&tpl=pk_form
&orderId=
]][[!+shk.id]]
Страница “Мои покупки”
[[!Paykeeper2?
&action=
download_form
&tpl=pk_downloadForm
&toPlaceholder=pkForm
]]
[[!+paykeeper2.msg:wrap=
<div class="alert
]][[!+paykeeper2.is_error:eq=
1:then=
alert-danger:else=
alert-success]]
">|</div>
[[!+pkForm]]
Параметр &gateway можно устанавливать динамически. Дабавьте в форму селект с выбором метода оплаты.
Пример:
select id=”pkInputMethod[[+sid]]
” name=”method” class=”form-control”>
<option value="WebMoney__R">WebMoney</option>
В данном значение до разделителя “” это название платежной системы, а то что после - метод оплаты. Если в значении нет разделителя “”, то используется платежная система, которая указана в параметре &gateway.
—————————————————————————
Плейсхолдеры на странице вызова сниппета
На странице где вызывается сниппет Paykeeper2 доступны плейсхолдеры:
[[!+paykeeper2.msq]]
- Текст сообщения.
[[!+paykeeper2.is_error]]
- Сообщение - ошибка (1) или нет (0).
[[!+paykeeper2.price]]
- Цена товара.
[[!+paykeeper2.productName]]
- Название товара.
”!” - значит, что значение плейсхолдера не кэшируется.
Пример использования:
[[!+paykeeper2.msg:wrap=
<div class="alert
]][[!+paykeeper2.is_error:eq=
1:then=
alert-danger:else=
alert-success]]
">|</div>
Код сниппета “wrap” можно взять в файле: /core/components/paykeeper2/elements/snippets/snippet.wrap.php или здесь: https://modx.today/posts/2015/11/the-story-of-my-super-snippet
—————————————————————————
Яндекс.Касса
https://kassa.yandex.ru/
Зарегистрироваться на сайте системы Яндекс.Касса.
Для сheckURL и paymentAvisoURL указать: https://[АДРЕС ВАШЕГО САЙТА]/assets/components/paykeeper2/connector_result.php
successURL и failURL - динамические
В админке сайта перейти в “Настройки системы” -> “paykeeper2” (пространство имен в фильтре). Заполнить все необходимые поля (есть комментарии).
Включить тестовый режим (см. параметры сниппета) и протестировать оплату.
Справка: Для подключения сайта к системе “Яндекс.Касса” нужен SSL сертификат (https).
Тестовые данные https://tech.yandex.ru/money/doc/payment-solution/examples/examples-test-data-docpage/
Документация https://money.yandex.ru/doc.xml?id=527069
Примеры на PHP https://github.com/YandexMoney/yandexmoney/tree/master/Yandex.Kassa/example%20integration/php
Пример вызова сниппета:
[[!Paykeeper2?
&gateway=
YandexMoney
&tpl=pk_form
&product=
&productName=[[*e_product]]
&price=[[*pagetitle]]
]][[*price]]
WebMoney
https://wiki.webmoney.ru/projects/webmoney/wiki/Merchant_WebMoney_Transfer
Описание интерфейса сервиса Web Merchant Interface: https://merchant.webmoney.ru/conf/guide.asp
Result URL https://[АДРЕС ВАШЕГО САЙТА]/assets/components/paykeeper2/connector_result_wm.php
[[!Paykeeper2?
&gateway=
WebMoney
&tpl=pk_form
&product=
&productName=[[*e_product]]
&price=[[*pagetitle]]
]][[*price]]
notifyUrl - URL, на которы платежная система будет отправлять запросы для проведения платежа (Result URL в настройках WebMoney Merchant). Должен быть таким: https://[АДРЕС ВАШЕГО САЙТА]/assets/components/paykeeper2/connector_result_wm.php
В админке сайта перейти в “Настройки системы” -> “paykeeper2” (пространство имен в фильтре). Заполнить все необходимые поля (есть комментарии).
Cкриншоты настроек платежной системы: /core/components/paykeeper2/docs/screenshots/wm_001.png /core/components/paykeeper2/docs/screenshots/wm_002.png
Подключение платежных систем с помощью компонентов OmniPay
Сайт проекта: http://omnipay.thephpleague.com/
Репозиторий: https://github.com/thephpleague/omnipay
На примере PayPal
Документация платежной системы PayPal: https://developer.paypal.com/webapps/developer/docs/classic/products/#pfg https://developer.paypal.com/docs/classic/payflow/integration-guide/#configuring-hosted-pages-using-paypal-manager https://developer.paypal.com/docs/classic/express-checkout/integration-guide/ECGettingStarted/#id0832BA0605Z
Список валют: https://developer.paypal.com/docs/classic/api/currency_codes/#paypal
- Устанавливаем composer:
cd /var/www/html/my_site/core/components/paykeeper2 curl -s http://getcomposer.org/installer | php php composer.phar update
Установка в ОС Windows: https://getcomposer.org/doc/00-intro.md#installation-windows
- Загружаем код компонента:
composer require omnipay/paypal:~2.0
Код компонента будет загружен в папку vendor.
- В админке переходим в “Системные настройки” -> “paykeeper2”
Создаем параметр: paykeeper2.PayPal.namespace
Значение: PayPal_Express
Namespace вы можете узнать в документации компонента.
- На любой странице вызываем сниппет так:
[[!Paykeeper2?
&gateway=
PayPal
&printParameters=1
]]
На выходе вы увидете массив необходимых параметров.
В данном случае такой:
Array ( [PayPal Express] => Array ( [username] => [password] => [signature] => [testMode] => [solutionType] => Array ( [0] => Sole [1] => Mark ) [landingPage] => Array ( [0] => Billing [1] => Login ) [brandName] => [headerImageUrl] => [logoImageUrl] => [borderColor] => )
)
Это значит, что в системных настройках нужно создать дополнительные параметры:
paykeeper2.PayPal.username paykeeper2.PayPal.password paykeeper2.PayPal.signature
Остальные по желанию. Пример данных:
username=sdk-three_api1.sdk.com password=QFZCWN5HZM8VBG7Q signature=A-IzJhZZjhg29XQ2qnhapuwxIDzyAZQ92FRP5dqBzVesOkzbdUONzmOU
Войдите в систему PayPal на сайте https://www.paypal.com/. Далее перейдите по ссылке “Настройки продавца” (слева внизу). В строке “Доступ к API-интерфейсу” перейти по ссылке “Обновить”. Далее ссылка “Просмотр подписи API” (Вариант 2). См. скриншот core/components/paykeeper2/docs/screenshots/paypal_api.png Здесь Вы можете взять данные для настройки платежей.
Кроме того, обязательными параметрами для всех платежных систем являются:
paykeeper2.PayPal.notifyUrl - URL обработчика платежных данных. paykeeper2.PayPal.returnUrl - URL на который нужно вернуться после оплаты. paykeeper2.PayPal.cancelUrl - URL на который нужно перенаправить в случае отказа от оплаты.
notifyUrl - URL по которому платежная система отправляет данные платежа в фоновом режиме. Некоторые системы (как PayPal Express) не умеют отправлять данные в фоновом режиме (не заметно для пользователя), для таких систем нужно добавить дополнительный параметр:
paykeeper2.PayPal.successUrl - URL на который нужно перенаправить после успешного платежа. В этом случае в параметре “returnUrl” нужно указать такой же URL как “notifyUrl”.
Примеры значений: paykeeper2.PayPal.notifyUrl={site_url}assets/components/paykeeper2/connector_result_paypal.php paykeeper2.PayPal.returnUrl={site_url}assets/components/paykeeper2/connector_result_paypal.php paykeeper2.PayPal.cancelUrl={site_url}platezh-ne-vyipolnen.html paykeeper2.PayPal.successUrl={site_url}spasibo-za-pokupku.html
- Если у вас используются несколько платежных систем, в форму (чанк указанный в параметре “tpl”) можно добавить выбор:
В этом случае платежная система будет браться из значения до разделителя “__”. Второй параметр (после разделителя) - метод оплаты.
В вызове сниппета “Paykeeper2” параметр &gateway=PayPal
можно не указывать.
- Тестовый вызов сниппета:
[[!Paykeeper2?
&gateway=
PayPal
&tpl=pk_form
&product=http://test.com/files/file.zip
&productName=Тестовый товар
&price=1
¤cy=RUB
&testMode=1
]]
- Теперь нужно написать обработчик прохождения платежа. Прилагаются примеры:
/assets/components/paykeeper2/connector_result.php - Yandex.Kassa /assets/components/paykeeper2/connector_result_wm.php - WebMoney /assets/components/paykeeper2/connector_result_paypal.php - PayPal
Для защиты от индексирования поисковыми роботами страницы “Мои покупки” создайте в корне сайта файл robots.txt. Пример содержания:
User-agent: * Disallow: /moi-pokupki.html
Если у вас не открывается “Журнал ошибок” в админке, удалите файл: /core/cache/logs/error.log
Возможно этот файл слишком большой по размеру или в него попали не читаемые для MODX символы.
Важно!
На сервере должна быть правильно настроена временная зона. Проверить можно в админке “Отчеты” -> “Информация о системе” -> “Серверное время”
Для PHP, если Москва: date.timezone = Europe/Moscow
Время mysql можно проверить выполнив запрос (можно в phpMyAdmin): SELECT NOW();
Сверьте время с текущим.
Установить временную зону MySQL (Москва): SET GLOBAL time_zone = ‘+3:00’;
Также время можно проверить в терминале (консоли сервера). Выполните команду: date Настройка временной зоны для сервера Ubuntu (Debian) производится через команду: dpkg-reconfigure tzdata
Временные зоны:
Europe/Moscow
Список временных зон http://php.net/manual/ru/timezones.php
cd ***/core/components/paykeeper2 php composer.phar update
composer require yandexmoney/omnipay composer require dercoder/omnipay-webmoney composer require omnipay/paypal