Здравствуйте, уважаемые читатели хабра. Данная статья является продолжением цикла материалов о том, как построить VPS-хостинг с нуля на базе RUVDS White Label API. В вводной статье цикла мы говорили о том, что в первую очередь нам понадобится сайт и предложили 3 варианта, как его можно создать. Мы детально остановимся на варианте с использованием популярных CMS и плагинов к ним, которые призваны быстро предоставить так необходимую нам функциональность по приему платежей и оплате серверов.
В серии публикаций мы рассмотрим такие популярные CMS, как Wordpress, Joomla и Drupal.
Почему мы выбрали именно их:
- Поддерживаются почти всеми популярными shared-хостингами
- Написаны на PHP (низкий порог вхождения, обширное комьюнити, множество справочных материалов и программистов-фрилансеров)
- Бесплатны (для старта с минимальными вложениями это важно)
- Распространены в интернете
Disclaimer: Мы не утверждаем, что эти CMS самые популярные или самые лучшие. Также мы не говорим о том, что PHP язык номер один и вы просто обязаны использовать только его. Вы можете использовать любые технологии, которые подойдут для решения задачи по созданию своего VPS-хостинга. В данный материал добавлено множество ссылок на сторонние источники, содержимое которых мы не стали включать в его текст, иначе он бы был менее читабельным и цельным. Надеемся вы сочтете их полезными. Итак, приступим.
В данной статье мы рассмотрим Wordpress (как развернуть Wordpress у себя на хостинге мы детально описывали в нашей предыдущей статье) и его плагин WooCommerce, а также выясним, как его адаптировать для VPS-хостинга.
Этот плагин по праву считается одним из самых мощных и функциональных бесплатных eCommerce-решений для Wordpress. Вместе с ним идёт специализированная тема Storefront, полностью поддерживающая последний функционал плагина что называется «из коробки». Можно либо воспользоваться данной темой с незначительными доработками дизайна, либо приобрести платную за 50-70$ например тут. Что сразу бросается в глаза — так это наличие множества расширений, в том числе для интеграции со всевозможными платёжными агрегаторами, например robokassa или paymaster (оба бесплатны).
Плюсы
- Легкость установки. В пошаговом процессе установки всё интуитивно понятно. Загружаем плагин и тему, активируем. Далее сразу можно добавлять товары и переходить к более тонкой настройке.
- Наличие огромного количества платных и бесплатных шаблонов
- Простое и удобное добавление товаров
- Расширяемость. Кроме коробочной функциональности существует множество расширений плагина, что позволяет получить желаемую функциональность
- Бесплатность. Без лишних слов
- Постоянные доработки и обновления. Плагин активно дорабатывается, последний коммит в репозиторий на github был несколько дней назад (на момент написания статьи).
- Функциональность по построению различных отчетов
- Купоны, промоакции из коробки
- SEO. Для товаров доступна настройка чпу, карты сайта, метатегов (также как и для простых страниц)
- Наличие мультиязычного расширения
Минусы
- Ориентированность на запад. Платёжные методы по умолчанию ориентированы на западный рынок. На самом деле, не слишком и минус, учитывая то, что можно бесплатно добавить все популярные платёжные системы, подключив расширение robokassa, указанное выше
- Возможны конфликты при установке некоторых расширений вместе
- Отсутствует бесплатная техническая поддержка
- Безопасность. Учитываю популярность CMS wordpress в мире и популярность самого расширения, магазины на этом движке часто становятся целью атаки хакеров
Особенности адаптации под vps-хостинг
Что нужно сделать в первую очередь? Для начала установим и активируем тему и плагин (установка интуитивно понятна и ничем не отличается от установки обычных тем и плагинов). Создание дизайна страниц вашего будущего VPS-хостинга мы в данном материале рассматривать не будем. Нас интересует то, как настроить этот WooCommerce для того, чтобы клиенты смогли заказывать сервера на вашем VPS-хостинге.
Приём платежей
Здесь всё абсолютно также, как и при организации приёма платежей для любых других товаров. Плагинов, реализовывающих интеграцию с аггрегаторами для woocommerce достаточно много. Если выбирать из бесплатных расширений woocommerce для приема платежей России и СНГ, можно подключить robokassa или paymaster. В случае с robokassa, сразу после регистрации на сайте вы сразу можете принимать платежи как физическое лицо на основании договора оферты, однако в этом случае имеем высокую комиссию. В целом, даже с учетом этого, конечная цена вашего сервера всё равно будет достаточно привлекательной по отношению к конкурентам, поэтому можно смело начинать работать сразу с robokassa. Детальную информацию по настройкам расширения robokassa можно получить тут
Если вы планируете использовать другой аггрегатор и очень расчетливо подходите к этом вопросу, вот тут детальное сравнение аггрегаторов. Выбираем подходящий, смотрим есть ли соответвующее расширение для WooCommerce, находим его репозиторий и смотрим, насколько активно ведётся разработка и жив ли он. Если все отлично, смело ставим и настраиваем.
Отключение механизма гостевых покупок и доставки
В WooCommerce есть возможность совершать покупки без регистрации. Нам же нужно, чтобы клиент мог осуществлять покупки только из своего аккаунта, в котором, к слову, мы будем отображать клиенту всю необходимую информацию, в том числе о его серверах. Для этого переходим в Настройки Wordpress > WooCommerce > Настройки > Платежи и снимаем галочку «Разрешить гостям оформлять заказы».
Доставку также необходимо отключить. Для этого переходим в Настройки Wordpress > WooCommerce > Настройки > Основные и выбираем «Отключить доставку и расчет доставки»
Настройка страниц
После установке плагина, в разделе страницы появилось 3 дополнительных: витрина, корзина, оформление заказа. Витрину мы разместим на главной странице заказа для того, чтобы у пользователя была возможность сразу выбрать необходимую конфигурацию и приступить к заказу. Делается это так:
Переходим в Настройки Wordpress > настройки > Чтение и указываем в качестве главной страницы и страницы записей станицу с витриной товаров WooCommerce.
Добавление товаров
В нашем случае, товаром будет конфигурация VPS. Для простоты возьмем 3 конфигурации и добавим их в качестве товара на сайт:
- Минимальная: 1?2.6ГГц CPU, 1Гб RAM, 20Гб HDD, 1 IP
- Средняя: 4?2.6ГГц CPU, 4Гб RAM, 40Гб HDD, 1 IP
- Мощная: 10?2.6ГГц CPU, 10Гб RAM, 80Гб HDD, 1 IP
В меню добавления товара мы рекомендуем сразу заменить содержимое поля Ярлык на более понятный вариант, например medium-configuration. Также, в содержимом товара желательно описать для каких целей подойдёт данная конфигурация, например для размещения свое сайта на с посещаемостью до 100 человек в день. Не забываем указать цену и скидку, если это требуется. Также, обязательно укажите изображение товара.
В результате должно получиться вроде этого:
Это стандартный дизайн страницы витрина из Storefront. Далее дорабатываем дизайн главной страницы, воспользовавшись услугами фрилансеров и наполняем её необходимым контентом
Обработка оплаченных заказов
Вот мы и подошли к одному из самых важных пунктов в вопросе адаптации WooCommerce под продажу услуг аренды VPS. После оплаты VPS-сервера на вашем сервисе вы должны клиенту этот сервер предоставить.
Для простоты изложения в данном разделе мы не будем рассматривать то, как организовать продление сервера, тестовый период и прочее, а ограничимся лишь созданием сервера после его первой оплаты. Итак, задача сводится к тому, чтобы как только услуга была оплачена:
- инициировать создание сервера с помощью RuVDS Whitelabel API и предоставить клиенту все необходимые данные о процессе создания (идентификатор сервера, этап создания, прогресс создания, конфигурация сервера)
- после создания сервера предоставить необходимые для подключения данные, а также возможности по управлению сервером и информацию о дате завершения расчетного периода
Для решения данной задачи существует множество способов. Один из наиболее простых — это периодически получать данные об оплаченных заказах, по которым не были созданы VPS напрямую из соответствующих таблиц wordpress и woocommerce (детальное описание схемы woocommerce вы найдете тут) и если такие существуют, помечать их как «в процессе исполнения» и запускать процесс создания сервера. Не самое лучшее решение, но одно из самых простых… Также для этой задачи можно использовать веб-хуки woocommerce. Что такое веб-хуки? Говоря простыми словами, это подписка на событие в интернет магазине. Покажем, как работать с этим механизмом по REST API.
Чем хорош woocommerce? Не в последнюю очередь тем, что у него есть документированное REST API (и примеры его использования на 4-ти языках, Javascript, PHP, Python, Ruby и на curl, вывод которого можно потом разобрать как вам нравится). Также, для использования возможностей плагина есть wp cli и подробнейшая документация по его коду.
Для того, чтобы воспользоваться REST API необходимо предварительно сгенерировать специальный ключ. Делается это следующим образом: переходим в WooCommerce > Настройки > API и жмем добавить ключ. При генерации ключа требуется выбрать пользователя и указать тип прав (чтение, запись, чтение/запись). Генерируем ключ для текущего пользователя и указываем уровень прав чтение/запись. Далее переходим в Настройки > постоянные ссылки и выбираем второй тип. Теперь REST API доступно по url: yourdomain.com/wc-api/v3
Для работы с API, воспользуемся специальной библиотекой для PHP. Установим её с помощью composer, выполнив в консоли:
composer require automattic/woocommerce
Авторизоваться в API и получить список товаров можно, используя следующий PHP-код:
<?php
require __DIR__ . '/vendor/autoload.php';
use Automattic\WooCommerce\Client;
use Automattic\WooCommerce\HttpClient\HttpClientException;
$woocommerce = new Client(
'https://yourdomain.com/',
'ck_0000000000000000000000000000000000000000',
'cs_0000000000000000000000000000000000000000'
);
try {
print_r($woocommerce->get('products'));
} catch (HttpClientException $e) {
echo $e->getMessage();
}
Клиент уже может купить сервер, используя доступную функциональность витрины на главной странице. Соответственно, для того, чтобы запустить создание сервера при оплате заказа, мы можем добавить соответствующий веб-хук на событие изменения статуса заказа:
...
...
$webHookData = [
'webhook' => [
'name' => 'Order updated',
'topic' => 'order.updated',
'delivery_url' => 'https://yourdomain.com/deliver/secret'
]
];
try {
print_r($woocommerce->post('webhooks', $data));
} catch (HttpClientException $e) {
echo $e->getMessage();
}
Теперь, когда данное событие наступит, нагрузка веб-хука будет доставлена по адресу 'https://yourdomain.com/deliver/secret'.
Все, что было доставлено веб-хуком можно будет также отобразить следующим образом:
print_r($woocommerce->get('webhooks/webhook_id/deliveries'))
При обработке запроса к delivery_url вам нужно проверить, изменился ли статус заказа на completed. Если да, из заказа получаете массив id конфигураций серверов (массив идентификаторов продуктов в свойстве line_items) и запускаете процесс создания VPS.
В следующих статьях цикла мы детально разберём, как это сделать.
Комментарии (3)
ruvds01
23.06.2016 22:19Уважаемый Inroma, мы такой сервис сделать пока ещё не успели.
lnroma
24.06.2016 13:34Всё таки считаю `wordpress` не подходящей cms для vps провайдера так как:
1. В плане модификациё `wordpress` не такой гибкий как те же фрэймворки (а внесение изменения всё же необходимы).
2. Не квалифицированные разработчики (так как он лего кастомизируеться всякими кастылями)
3. 2-й пункт приводит к уязвимостям и снижению безопасности
4. Предрасположеность к авто взлому и ddos (из за распространёности cms и ботов)
5. Известные уязвимости(можно с лёгкостью найти эксплойт и применить его)
6. Минимальное вложение в создание инфраструктуры ( минус чисто в финансовом плане)
И простая математика
Первоначальные вложения на магазин vps — минимальны +
Покупка средних серверов +
Со времени накопление клиентской базы(Прибыль) +
Взломы, Регистрации vps безплатно и т.д. доступы к серверам, ddos =
Клиенты ушли и потребовали обратно деньги за недоступные сервера, компенсации морального ущерба (так как какой то магазин был недоступен пару часов, а он мог заработать какую ту сумму денег, и виновен был как рас хостинг провайдер) =
В конце концов суды и убытки.
Всё таки я считаю что надо быть грамотнее в видение бизнеса. т.е. расходы в данный момент, должны соответствовать окупаемости в будущем, не обходимо смотреть в перспективу, разработка( на фреймворке ) магазина или использование opensource проэктов специально разработанных для этого таких как magento, использование opensource панелей управлений на подобие какой нибудь cpanel, linux сервера. Покупка надёжный серверов и т.д. и всё это в конечном итоге приводит к подорожанию первоночального этапа и к долгосрочной перспективе работоспособности системы, что приводит к «долгосрочному пользованию клиентами серверов», в конечном итоге в долгосрочной перспективе, мы получаем более эфективную амортизацию вложеных средств, и повышение прибыли в результате уменьшение затрат на поддержание работоспособности системы.
lnroma
Дайте ссылку на такой сервис на Wordpress, охото потестировать?