5 December 2012

Битрикс + Bitcoin. Пишем решение для Маркетплейс. Часть 1

Website developmentPayment systems1С-Bitrix
Sandbox
Tutorial
Интро: Разработка стандартных решений для Битрикс в большинстве случаев представляет собой решение тривиальнейших задач. С каждым новым проектом приходится делать одно и то же снова, и снова, и снова… Но есть способ облегчить себе жизнь — написать библиотеку своих компонентов и даже заработать на них, если они предлагают востребованный функционал.

Условия


Дано: Битрикс редакции «Малый бизнес» — одна штука.
Задача: Научить его принимать платежи Bitcoin и…
И вот тут я задумался — а как? Модулей для интеграции платёжных систем для Битрикс я писал и переписывал немало. Но что делать с Биткоинами? С какой стороны подступиться? Я не знал.

Поиск решения


В процессе довольно продолжительного гугления удалось выйти на платёжную систему, позволяющую принимать BTC и автоматически конвертировать их в валюту, выбранную продавцом в настройках магазина. Тут всё оказалось довольно просто — API есть, Bitcoin в роли валюты принимается, чего вам ещё? Поехали!

Появление идеи


Так как время моё на эту задачу не было практически ничем ограничено, захотелось мне сделать всё «по фэн-шую», а именно не просто сделать обработчик платёжной системы, отдать клиенту и забыть, но и запилить универсальный установочный пакет. У Битрикса, как вы знаете, есть свой Маркетплейс с модулями и решениями, в котором абсолютно свободно можно разместить своё решение и даже брать за него деньги, если считаете свой труд материально ценным. В настоящий момент большинство модулей в Маркетплейс бесплатны. У меня давно уже чесались руки поэкспериментировать в этом направлении и вот, наконец то, подвернулась такая возможность.

Документация


Если API платёжной системы оказалось довольно хорошо документировано и интуитивно понятно (да и понимать особо нечего — пара функций да пример кода), то с инструкциями по производству модулей для Битрикса всё крайне неоднозначно.
С одной стороны она есть, с другой не очень-то мне и помогла. Всё как-то сумбурно, скомкано, постоянные прыжки по тексту в поисках ответов на вопросы. Как кто-то очень точно подметил на форуме самого Битрикса: «Сухие мануалы по модулям лучше даже не открывать — их писали не для тех, кто хочет научиться, а для тех кто уже умеет». Помог неплохой видеоурок, там по крайней мере объясняет живой человек.

Note: Хочу отдельно подчеркнуть, что я совсем не дурак и не тугодум. Это был первый опыт разработки модуля для Marketplace. Сейчас, пройдя этот путь, я вижу что многие вещи на самом деле элементарны, но поиск этих решений в первый раз производился методом «пальцем в небо»

С чего начинается модуль?


Во-первых сам модуль — это просто набор файлов, некоторые из которых выполняются в процессе его установки.
У модуля есть определённая структура каталогов, которая зависит от задач, которые вы собираетесь в своём модуле решать.
Итак, воссоздаём структуру:

Изображение взято из официальной документации.
Здесь необходимо пояснить что к чему. Приведённая на изображении структура папок вряд ли будет у Вас точно такой же. Она избыточна и когда (если?) вы будете разрабатывать свой модуль, от неё останется всего пара папок и пара файлов.
Что из этого является обязательным:
  1. /install/version.php — файл с номером версии (объявление массива с парой переменных)
  2. /install/index.php — файл с описанием модуля, содержащий инсталлятор/деинсталлятор модуля. Фактически и является установщиком. Именно он запускается, когда пользователь нажмёт кнопку «Установить». Вернее сам файл, а методы DoInstall / DoUninstall описанные в нём. Кроме того может содержать вспомогательные методы, копирующие файлы в разные директории, выполняющие SQL-запросы и т.д.
  3. /include.php – подключаемый файл. Он подключается при активации модуля во время выполнения скриптов сайта. То есть по сути это инъекция в сам движок. В нём, например, можно добавить какие-либо фоновые обработчики-агенты, добавить пункты меню в административном интерфейсе и т.п.

Остальные элементы структуры являются вспомогательными:
  1. /lang/ — директория, в которой должны находиться все чувствительные к кодировке файлы — локализации. Не ленитесь выносить локализацию из кода компонентов в языковые файлы!
  2. /classes/ — как видно из названий поддиректорий, это основные классы модуля (в том числе для работы с различными БД)
  3. /install/admin/ | /install/components/ | /install/themes/ — вспомогательные директории, из которых мы будем копировать служебные файлы в процессе установки.


Что бы лучше понять назначение каждого элемента, вы можете посмотреть исходники из архива с шаблонным модулем, на базе котрого мы и будем делать итоговое решение.

В следующей части статьи мы узнаем как применить эти знания на практике, а в третьей части будет описание структуры и назначения обновлений модуля.
Tags:битриксbitcoin
Hubs: Website development Payment systems 1С-Bitrix
-4
6k 19
Comments 6
Popular right now
Профессия Java-разработчик
December 1, 202082,500 ₽SkillFactory
Data Analyst
December 1, 202085,000 ₽SkillFactory
Профессия Product Manager
December 2, 2020108,500 ₽Нетология
Python для анализа данных
December 2, 202019,000 ₽SkillFactory
Профессия Project Manager
December 2, 202098,000 ₽Нетология
Top of the last 24 hours