Разработчики программного обеспечения для экосистемы 1С часто сталкиваются с дилеммой: где размещать свои готовые решения (внешние отчеты, обработки, расширения или полноценные конфигурации) и как организовать продажи так, чтобы не нарушать закон, не погрязнуть в рутине выставления счетов и при этом не отдавать огромный процент посредникам. В этой статье мы подробно рассмотрим все существующие варианты дистрибьюции софта — от специализированных площадок до создания собственного интернет-магазина с автоматической выдачей лицензий и отправкой чеков по 54-ФЗ.
Первое, что приходит на ум любому разработчику в сфере 1С, — это специализированные ресурсы, где уже сосредоточена целевая аудитория. Рассмотрим подробнее эти площадки:
Если специфика вашего софта позволяет продавать его за пределами узкого сообщества 1С, или вы хотите получить больше свободы в оформлении продаж, проанализируем универсальные ИТ-площадки:
Разберем по шагам аргументы сторонников каждого из подходов, чтобы выяснить, какой путь выгоднее лично для вас.
Сторонники собственного сайта утверждают, что это единственный способ построить независимый бизнес. Создавая личный сайт (пусть даже простой лендинг), вы становитесь полноправным хозяином своего трафика. Вы получаете 100% прибыли, не делясь с площадками-монополистами конскими процентами. Кроме того, собственный сайт позволяет гибко выстраивать структуру презентации продукта, размещать неограниченное количество маркетинговых материалов, вести блог, собирать базу подписчиков и настраивать реферальные программы для коллег-программистов, предлагая им процент за приведенных клиентов.
Сторонники готовых площадок резонно возражают, что создание и поддержка собственного сайта требуют специфических знаний (веб-программирование, SEO-оптимизация, администрирование серверов) и финансовых вложений. Главное же преимущество агрегаторов — это готовый входящий трафик. Поисковые системы Яндекс и Гугл в первую очередь выдают крупные трастовые площадки. Чтобы пробиться в топ выдачи со своим новым сайтом, придется потратить много времени и бюджетов на контекстную рекламу (Яндекс.Директ) и SEO.
Оптимальный гибридный подход: использовать крупные площадки для первого контакта с клиентом и первичных продаж софта, а на собственном простейшем ресурсе организовать техническую поддержку, генерацию лицензий и продажу дополнительных услуг, которые не входят в рамки базовой поставки на маркетплейсе.
Проанализируем ситуацию с приемом платежей. По закону при расчетах с физическими лицами (и даже с ИП/ЮЛ при оплате корпоративной картой через интернет) продавец обязан пробить электронный чек и отправить его в налоговую и покупателю. Покупать физическую онлайн-кассу и подключать облачный сервис фискализации для начинающего разработчика слишком дорого. К счастью, современные платежные агрегаторы предлагают готовые решения «под ключ»:
Для того чтобы бизнес приносил пассивный доход, процесс продажи должен быть полностью автоматизирован: покупатель оплачивает товар на сайте или платежной странице, платежная система отправляет уведомление (webhook) на ваш сервер, а сервер генерирует ключ и отправляет его клиенту.
Посмотрим на пример реализации обработки такого webhook-запроса платежной системы на стороне 1С (если в качестве бэкэнда вашего сайта или лицензионного сервера выступает база 1С с опубликованным HTTP-сервисом). Нам понадобятся объекты HTTPСервисЗапрос, HTTPСервисОтвет, а также средства работы с JSON.
Разберем по шагам пример кода:
Функция ОбработатьУведомлениеОПлатеже(Запрос)
// Создаем объект ответа, по умолчанию возвращаем статус 200 (ОК)
Ответ = Новый HTTPСервисОтвет(200);
ТелоЗапроса = Запрос.ПолучитьТелоКакСтроку("UTF-8");
// Инициализируем чтение JSON-данных от платежного агрегатора
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(ТелоЗапроса);
ДанныеПлатежа = ПрочитатьJSON(Чтение);
Чтение.Закрыть();
// Проверяем статус транзакции в соответствии с API платежной системы
Если ДанныеПлатежа.Свойство("status") И ДанныеПлатежа.status = "success" Тогда
OrderId = ДанныеПлатежа.order_id;
CustomerEmail = ДанныеПлатежа.email;
ProductCode = ДанныеПлатежа.product_code;
// Запускаем алгоритм генерации уникального лицензионного ключа
ЛицензионныйКлюч = СгенерироватьКлючАктивации(OrderId, ProductCode, CustomerEmail);
// Отправляем сгенерированный ключ покупателю на Email
ОтправитьЛицензиюПокупателю(CustomerEmail, ЛицензионныйКлюч);
КонецЕсли;
// Отправляем платежной системе подтверждение успешного приема webhook
Ответ.УстановитьТелоИзСтроки("SUCCESS");
Возврат Ответ;
КонецФункции
В этом примере функция СгенерироватьКлючАктивации может использовать привязку к ИНН покупателя или хэш-функции для формирования уникального набора символов, который ваша внешняя обработка проверит при запуске у клиента.
Выясним причину, почему важно правильно выбрать юридический статус перед началом активных продаж софта. Ведение незаконной предпринимательской деятельности грозит штрафами. Для старта у вас есть два легальных пути:
Таким образом, для тестирования спроса на вашу разработку лучше всего зарегистрироваться как самозанятый, выложить продукт на 1clancer или Robo.market (используя схему «Робочеки»), а при росте продаж задуматься о создании собственного сайта на простом движке и оформлении ИП.