YPay Script - инструкция по установке и использованию
Примечание - поскольку скрипт собирает данные о пользователях - эти данные не должны быть доступны по http.
Соответственно, если вы планируете разместить скрипт на обычном хостинге, а не VPS (что предпочтительнее) - необходимо выбирать хостинг, где веб-сервер указывает на директорию public_html и есть возможность загружать данные как в public_html, так и на уровень выше (в public_html будет загружена только точка входа - index.php, а остальные файлы и папки будут находиться на уровень выше и будут недоступны по http - это важный ньюанс для безопасности данных).
Мы же рассмотрим установку скрипта на VPS/VDS с бесплатной панелью управления VestaCP , как оптимальный вариант (на VPS всегда можно внести правки в конфигурацию сервера самостоятельно, не ведя долгих переписок со службой поддержки хостинга).
СИСТЕМНЫЕ ТРЕБОВАНИЯ:
- PHP 7.1 и выше:
- Установленный ioncube loader
- отключенный open_basedir
Шаг 1 - приобретаем VPS, устанавливаем панель управления VestaCP
Для работы скрипта подойдет любой виртуальный сервер (VPS либо VDS), с операционной системой CentOS 7 x64 без предустановленной панели управления.
Панель управления VestaCP мы установим самостоятельно по инструкции с оф. сайта, так как варианты с предустановленной панелью могут отличаться у разных хостеров по конфигурации, версиям PHP и т.д., в отличие от чистой версии ОС CentOS 7 x64.
1) Подключаемся к серверу по SSH (для windows можно использовать клиент putty, я же буду использовать консоль iTerm на Mac OS):

2) Устанавливаем панель VestaCP в базовом варианте - для работы его будет достаточно. Следуем инструкции с официального сайта панели: https://vestacp.com/install/ :

Повторяем действия из инструкции на сервере (предполагаем что шаг1 выполнен и мы уже подключились к нему по ssh):


Нажимаем y, вводим почту админа, можно вымышленную, и хостнейм сервера - можно оставить по умолчанию:

Установка пошла, обещает устанавливаться около 15 минут но на деле все происходит обычно сильно быстрее. Наблюдаем за процессом установки и не вмешиваемся.

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

3) Сразу же отключим open_basedir в шаблонах конфигурационных файлов apache, чтобы в дальнейшем не приходилось это делать вручную в конфигурационных файлах добавляемых на сервер доменов. Для этого нам нужны минимальные навыки работы в ssh:
Переходим в директорию шаблонов:
cd /usr/local/vesta/data/templates/web/httpd

Далее, c помощью редактора nano, или любого другого который знаете - редактируем файлы default.tpl (шаблон для http) и default.stpl (шаблон для https).
Если получаем предупреждение "bash: nano: command not found", значит нужно установить nano с помощью команды yum install nano -y:

Редактор установлен, редактируем шаблоны конфигов c помощью nano:
nano default.tpl

Меняем строку
php_admin_value open_basedir %docroot%:%home%/%user%/tmp
на:
php_admin_value open_basedir none
Должно получиться так:

Сохраняем файл с помощью комбинации клавиш Ctrl+x:

редактор спрашивает, сохранить ли файл, нажимаем y:

Нажимаем Enter, выходим из редактора, шаблон отредактирован.
То же самое проделываем с файлом default.stpl с помощью команды:
nano default.stpl
4) Обновим php до нужной версии - рекомендую 7.2 , и установим Ioncube:
С помощью nano открываем файл /etc/yum.repos.d/remi-php72.repo :
nano /etc/yum.repos.d/remi-php72.repo
В блоке [remi-php72] меняем enabled=0 на enabled=1:

Сохраняем файл так же как делали с шаблонами выше.
Запускаем обновление php и установку Ioncube loader с помощью команды:
yum update php* -y; yum install php-ioncube-loader -y
В результате должно получиться так (проверяем версию php с помощью команды php -v):

Шаг 2 - Добавляем домен на сервер
Домен должен быть привязан (направлен А-записью на IP сервера). Привязка домена к серверу или хостингу - это базовое понятие, которое должно быть известно любому веб-мастеру, поэтому расписывать подробно этот пункт не будем.
В нашем случае, у нас есть сервер 37.143.14.9 и домен ypayscript.com , уже привязанный к нему. Пингуем, проверяем:

Заходим в панель VestaCP (данные к ней нам высылает хостер, если панель предустановлена, либо сообщает инсталлятор в конце установки, если ставим панель сами), и добавляем домен
В разделе WEB добавляем наш домен:

Открываем домен в браузере по ссылке http://ypayscript.com/- результатом должна быть заглушка, если все сделано правильно:

Желательно подключить также SSL-сертификат. Vesta хороша тем, что поддерживает автоматическое подключение бесплатных SSL-сертификатов LetsEncrypt, которые полностью валидны для браузеров и не уступают недорогим платным сертификатам.
Чтобы подключить сертификат, переходим в редактирование нашего домена.

Удаляем содержимое поле aliases (в него кстати в дальнейшем можно будет добавлять новые домены при необходимости смены домена скрипта):

Отмечаем опции для SSL:

Сохраняем, проверяем работу сайта по https://ypayscript.com/. Если все сделано правильно, то увидим такую картину:

Шаг 3 - загружаем скрипт по FTP на сервер:
Подключаться по фтп нужно от имени пользователя, для которого добавлен сайт. В нашем случае это admin:

Переходим в директорию /web/ypayscript.com, загружаем в нее содержимое архива со скриптом, за исключением директории public:

Также в эту же директорию нужно загрузить файл лицензии lic.dat , полученный от продавца после оплаты, иначе скрипт работать не будет!
Содержимое директории public из архива со с криптом загружаем в public_html на сервере:

Сохраняем,
Шаг 4: проверяем установку скрипта
Открываем сайт в браузере, если все сделано правильно - должна быть такая картина (главная страница не используется - поэтому скрипт выдает сообщение Page Not Found, здесь все верно!):

Шаг 5 - настройка скрипта для приема оплат
Вся настройка приема оплат производится за счет редактирования конфигурационного файла: src/Config.php:

По комментариям к переменным в конфиге, в принципе, все понятно, но давайте рассмотрим подробно каждый момент.
1) Выбираем режим работы:
- tele2cards (p2p оплата на карты, рекомендуемый способ);
- tele2phone - оплата на сим карты tele2;
- yandex (оплата на кошельки яндекса по апи, на данный момент не рекомендуемый способ в связи с участившейся блокировкой кошельков).
- kievstar - оплата на сим карты Kievstar (Украина), подходит только для установки оплат для Украины - в переменной $mode_UA.
Режимы задаем в переменных $mode (глобальный способ) и $mode_UA (режим для Украины) как на скрине выше.
Логика работы скрипта следующая - после ввода карты определяется страна карты по ее номеру. Если Украина - проводим платеж через режим, установленный в $mode_UA, если другая страна - то через режим, установленный в $mode.
Если выбран yandex:
1) Первым делом нужно получить Yandex API ID, делается это для того, чтобы получать по апи от яндекса задания на прием оплат. API ID нужен только для одного кошелька, а не для каждого, то есть получить его нужно только один раз.
Для этого сначала создаем приложение в яндекс деньгах по ссылке https://tech.yandex.ru/money/apps/?_openstat=settings%3Bother%3Bapps%3Bapi :

Заполняем поля примерно так (на самом деле эти данные ни на что не влияют и нам нужен только идентификатор приложения):

Вписываем идентификатор в конфиг, в переменную $yandexApiID:

Далее настраиваем кошельки на которые мы будем принимать оплаты:
Если выбран tele2cards: просто задать карты для приема средств в массиве $tele2cards:

Если выбран tele2phone: просто задаем кошельки для приема в массиве $tele2phones, без пробелов и без +, начиная с 7:

Если выбран kievstar - просто задаем кошельки для приема в массиве $kievstar_phones, без пробелов и без +, начиная с 380.
В переменной $rur_to_uah устанавливаем курс рубля к гривне.
После этого можно протестировать прием оплат на первом платеже который уже есть в конфиге:

Для каждого платежа формируются две ссылки:
1) http://ypayscript.com/start/pay1 - форма ввода емейла и имени, пригодится для сбора базы клиентов. Шаблон данной формы - templates/theme1.html

2) Наша форма ввода карты: http://ypayscript.com/card-input/pay1 . Шаблон данной формы - templates/cards/card1.html :

Настоятельно рекомендую проверить оплату на товаре на 1 рубль чтобы убедиться , что все настроено верно.
В случае успешного платежа - скрипт выполнит редирект пользователя на ссылку success_url платежа, в случае неуспешной - на fail_url.
Чтобы принимать оплаты - вешаем наши ссылки http://ypayscript.com/start/pay1 (можно сразу http://ypayscript.com/card-input/pay1 , если не нужно сохранять данные о пользователе) , где pay1 - идентификатор платежа из конфига, на наши лендинги продажи товаров на ссылку "купить", либо даем их покупателям напрямую - это уже зависит от того, что и как вы собираетесь продавать.
В последнем обновлении добавлена также статистика последних оплат и удобный вывод апселлов из конфига:

Ссылка на доступ к статистике будет иметь вид
http://ypayscript.com/stat?key=secret
Где secret - значение переменной $secretKey из конфига:

Дополнительные материалы:
https://telegra.ph/YPay-Script---opisanie-skripta-i-FAQ-02-23 - описание скрипта с видео процесса приема оплаты.
http://project1147174.tilda.ws/page4952280.html - тестовая оплата на 1 рубль.