Здравствуйте, уважаемые читатели хабра. Данная статья является продолжением цикла материалов о том, как построить 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)


  1. lnroma
    23.06.2016 15:13

    Дайте ссылку на такой сервис на Wordpress, охото потестировать?


  1. ruvds01
    23.06.2016 22:19

    Уважаемый Inroma, мы такой сервис сделать пока ещё не успели.


    1. 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 сервера. Покупка надёжный серверов и т.д. и всё это в конечном итоге приводит к подорожанию первоночального этапа и к долгосрочной перспективе работоспособности системы, что приводит к «долгосрочному пользованию клиентами серверов», в конечном итоге в долгосрочной перспективе, мы получаем более эфективную амортизацию вложеных средств, и повышение прибыли в результате уменьшение затрат на поддержание работоспособности системы.