Как мы это сделали. uprint.by — сервис онлайн-печати

24 комментария
Как мы это сделали. uprint.by — сервис онлайн-печати

Сооснователь первого в Беларуси сервиса онлайн-печати uprint.by Сергей Аксёнцев делится с читателями dev.by опытом создания продукта.

Читать далее

Идея

— Как-то в период подготовки к защите диплома, проведя в очереди за распечаткой по два часа, мы с Сергеем Котугиным решили больше не терять время и поискать онлайн-сервисы. Пункты печати, принимавшие заказы по e-mail, были. Однако алгоритм их работы всё равно предполагал звонок от оператора и необходимость самостоятельно забирать заказ. Нам же хотелось, чтобы заказ отправлялся без дополнительных подтверждений в офлайне, а забирать распечатанные работы можно было без очереди прямо в университете. В этом и заключается идея uprint.by.

Ранее мы уже работали вместе, поэтому решения научились принимать довольно быстро. Так и пошёл процесс создания сервиса.

Цели и задачи

Мы посчитали, что во время сессий и защиты дипломных работ студенты печатают довольно внушительные объёмы документов. Поэтому изначально планировали создать свой пункт печати с удобным сервисом приёма заказов. Камнем преткновения стало помещение. Ничего подходящего мы так и не нашли: либо не очень удобное расположение, либо немыслимая арендная плата.

Тогда мы решили пойти другим путём — подключать к сервису уже существующие пункты печати с удобным для студентов расположением.

Конкуренты

В Беларуси аналогов сервиса не существует. Не нашли подобного и за рубежом. Схожая модель работы, только в другой сфере, у Uber, но узнали мы об этом уже после создания сервиса.

Планирование и разработка

Сперва подумали, какой функционал необходим для первой версии, составили техническое задание и начали разработку. Параллельно с этим начали процесс регистрации юридического лица — без этого невозможно принимать платежи онлайн.

Для разработки выбрали фреймворк ASP.NET MVC 5. Использование готовой CMS не рассматривалась, так как решалась абсолютно новая задача. Язык программирования — C#.

В основу положена сервисно-ориентированная архитектура, поскольку программное обеспечения состоит из набора различных приложений (веб-клиент для заказов, менеджмент-инструмент для операторов, инструмент для работников uprint). Доступ к базе — только через сервис. Работа с базой организована по методике Code First. База — MSSQL.

Разработка ведётся с использованием системы управления задачами и проектами Jira. Работаем по Scrum. Длина итерации — месяц. Пока этого достаточно, так как нового функционала немного.

Система контроля версий — SVN.

Работа с платёжными системами организована на стороне сервиса. Сервисы WCF — как наиболее быстрый и простой способ организации коммуникации между веб-приложениями и единой точкой доступа к базе и логике.

В создании сервиса принимали участие пять человек: два фронтенд- и один бэкенд-разработчик, два тестировщика.

Сами работали над проектом в свободное время, сторонних участников привлекали за плату. В целом, разработка заняла примерно 305 человеко-часов (с учётом тестов). Финансовые расходы составили +/- 1000 долларов. Опять же, с учётом того, что своё время мы не оплачивали.

Сооснователи uprint.by Сергей Аксёнцев (справа) и Сергей Котугин.

Сложности

В ходе разработки uprint.by мы испытывали ряд сложностей при подключении платёжных систем.

Во-первых, как оказалось, все они работают с чистым xml. Потому нам пришлось перенастраивать конкретные сервисы для работы с plain xml и обработки таких сообщений.  

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

Помимо этого, Нацбанк, договор с которым необходим для подключения к системе ЕРИП, не понимал, чем мы вообще занимаемся и требовал от нас лицензии. Пришлось подготовить длинный ответ с цитатами из указов президента, после чего процесс пошёл дальше.

При подключении функции оплаты за услугу напрямую с карточки было сложно найти банк, который согласиться работать с небольшими транзакциями. Несколько раз переделывали документы для подачи в разные банки. Но этот метод оплаты самый удобный и он стоил упорства и настойчивости.

Поскольку сегодня используется множество форматов для документов, а обеспечить печать их всех — процесс трудоёмкий, мы предприняли попытку автоматической конвертации всех файлов в PDF, с которого и должна происходить печать. На данном этапе, она не увенчалась успехом, так как не нашлось инструмента, способного идеально конвертировать хотя бы файлы docx (встроенный в MS Word конвертер тоже даёт сбои).

В плане бизнес-стратегии мы выбрали, как оказалось, неверный подход. Подключение пунктов печати начали с родного БГУИРа. Там всё прошло относительно гладко. Поэтому решили сначала подключить все крупные вузы столицы, после чего расширяться дальше. Однако там пришлось столкнуться с железобетонной стеной бюрократии и отсутствием заинтересованности. Даже если представители учебных заведений говорят, что готовы поддержать идею, процесс идёт очень медленно. Сказывается необходимость согласования каждого действия с многочисленными чиновниками и отсутствие прямой личной заинтересованности.

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

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

Итоги

В процессе работы был создан автоматический режим печати, при котором принтеры выполняют заказы без участия операторов. Для этого было разработано серверное ПО.

Сервис также использует систему смс-оповещения пользователей — Rocket SMS оказался лёгок в подключении, поскольку использует WebApi.

Важной задачей была реализация системы валидации файлов. То есть на обработку не должен попасть файл не соответствующего формата. Например, попытка загрузить файл с расширением .exe под видом .docx. Для этого мы внедрили проверку первых 16 битов в файле, в ходе которой производится побитовое сравнение с байтами, заявленными в спецификации формата.

В процессе работы мы полностью изменили интерфейс сайта, сделав его одностраничным, пошаговым и более приятным.

В целом, мы создали работающий сервис, которым уже с удовольствием пользуются минчане. На данный момент зафиксировано около 250 заказов со средним чеком около 15 тысяч рублей.

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

Цена на печать через uprint.by не отличается от офлайн-печати в том же пункте. Наш коммерческий интерес — процент прибыли от клиентов, которые пришли через сервис. Он оговаривается отдельно с каждым пунктом печати.

Перспективы

Чтобы сервис начал приносить стабильную прибыль, необходимо сделать две вещи: расширить территориальный охват (подключить максимальное количество пунктов печати) и научить людей пользоваться онлайн-заказами.

В планах — развить сервис во всех областных центрах Беларуси, то есть максимально расширить территориальное покрытие сервиса. Также планируем сделать его в основном автоматическим, чтобы максимально уменьшить человеческий фактор и увеличить производительность.

Для читателей dev.by, желающих протестировать работу сервиса, предлагаем промо-код «fromdevby», который будет работать некоторое время после выхода статьи и позволит распечатать пять страниц формата A4 бесплатно.

Полезные ссылки


А как ВЫ это сделали

Хотите вынести ваш продукт на суд наших читателей? Пишите на editor at dev.by.

Хотите сообщить важную новость?

Пишите в наш Телеграм

Читайте также

В соцсетях показали концепцию украинского «ПВТ»
В соцсетях показали концепцию украинского «ПВТ»
В соцсетях показали концепцию украинского «ПВТ»
6 комментариев
PandaDoc открывает компанию в Украине. Уже переехали 60 человек
PandaDoc открывает компанию в Украине. Уже переехали 60 человек
PandaDoc открывает компанию в Украине. Уже переехали 60 человек
8 комментариев
Появились хакеры за Лукашенко: взломали kyky.org и пригрозили «Кибер партизанам»
Появились хакеры за Лукашенко: взломали kyky.org и пригрозили «Кибер партизанам»
Появились хакеры за Лукашенко: взломали kyky.org и пригрозили «Кибер партизанам»
9 комментариев
Айтишники из Минска запустили платформу взаимопомощи
Айтишники из Минска запустили платформу взаимопомощи
Айтишники из Минска запустили платформу взаимопомощи

Обсуждение

3

Молодцы ребята! Отличный сервис

>Во-вторых, для работы с белорусскими платёжными системами отсутствуют готовые библиотеки — предоставляется только руководство. В наших планах — выложить в общий доступ библиотеки, что, надеемся, сбережёт время другим разработчикам.

это будет супер круто

И если не трудно, расскижите пожалуйста подробней как вы таки подклчили все платёжные системы в РБ? (EasyPay, WebPay, карторчки и смски). У вас там получается открытый договорор оферты на который банк и принимает платежи? (Если да, то какой банк :)

15

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

По поводу подключения платежных систем.
Начну с Ерипа. Подключение к нему позволяет принимать платежи и через EasyPay и через Webmoney.

Есть два варианта подключения:
1) Написание биллинга для обмена данными с Нацбанком самим;
2) Воспользоваться услугами одной из трех организаций, которые этот биллинг предоставляют (но все равно кое-что приходится дописывать).

Мы выбрали второй вариант, дабы не терять время на дополнительную разработку. Выбрали компанию iPay. Хорошая компания, приятно с ними работать. За услугу они берут свой незначительный (не уверен, что можно разглашать по условиям договора) процент с каждого платежа. Т.е. чтобы быстро подключить Ерип - это отличный путь. В будущем, всегда можно заняться написанием биллинга самостоятельно.
Насчет договора - заключается трехсторонний договор между производителем услуг, нацбанком и iPay.

Чтобы подключить оплату напрямую по банковским карточкам мы обратились к компании WebPay. Они предлагают несколько банков для эквайринга (среди них Приорбанк, БПС-сбербанк, Белаграпромбанк и МТБ-банк, если не ошибаюсь) и свою систему оплаты. Т.е. сам процесс оплаты происходит на страницы webpay.
Тут также заключаются договоры с webpay и с выбранным банком.

Надеюсь, ответил на вопрос)

1

да, Сергей, спасибо что всё подробно разжевал :)

8

Мотать мои старые костыли! Что я вижу на девбае! Автор отвечает на вопросы и делает это адекватно. Ловите плюсик! :)

А почему насчёт доставки не подумали? Мне, например, неудобно в какие-то БГУИР-овские корпуса и общаги шляться. Пусть домой привозят.

И вы там на странице PaymentsInfo пробел забыли: "обратитьсяпо".

3

Сервис изначально рассчитывался на студентов и намерение было в том, чтобы человек, который сделал работу дома, отправил ее поближе к своему университету, забрал там без очереди и там же сдал. Т.е. чтобы даже не возить документы с собой по городу. Да и средний чек не такой большой, чтобы была возможность делать доставку бесплатной. А доплачивать студенты вряд ли будут)

При расширении, конечно, стоит держать вопрос доставки в планах.

Пробел добавим, спасибо!)

7

>> человек, который сделал работу дома, отправил ее поближе к своему университету, забрал там без очереди
приехал, увидел, что распечаталось что то не то, получил двойку / незачёт, потому что времени переделывать уже нет... Поэтому что б такого не было, не пользуется вашим сервисом, а уже сейчас идёт искать, где можно напечатать в offline ...
Второй момент. Вы думаете человеку, когда "горит" и завтра надо сдавать большую работу принципиально заплатить 5 тыс. 15 или 30 за распечатку и сэкономить эти 5 или пусть даже 20-30 тысяч? Когда у человека "горит" и негде распечатать он с удовольствием заплатит и 50 тыс. за 20 листов текста, и 50-60 тыс. ещё за доставку, что б только получить всё на руки уже сейчас и не просыпаться ночью с мыслью, где же он завтра перед сдачей успеет распечатать или как там эта работа распечатается, всё ли будет в порядке.
Ваша ориентация на студентов с рефератами и лабами на пару листов, которым только перед занятиями заскочить их забрать нужно, и чеками, соответственно, в 15 тыс - это всё равно, что продавать зубочистки возле ресторана, спрос то будет, но хлопот больше, чем той выручки...
Студенты - клиенты мало платёжеспособные, но очень мобильные. Если "не горит" то они скорее "пробьют" очень много всяких вариантов печати (у соседа / у друзей в общаге / на работе у родителей и т.д. и т.п.) ради того, что б сэкономить себе на пару бутылок аливарии.
А из ваших сценариев выпадает целый пласт гораздо более платёжеспособных клиентов, которым надо напечатать большой объем информации, получить её на руки, и, главное, недосуг бегать и искать где б 3 копейки сэкономить.
Самое интересное, что у этих потенциальных клиентов даже принтер дома будет. Во первых очень часто покупается струйный-цветной из-за возможности цветной печати. Соответственно, большие объемы печати выпадают. Во вторых, столкнувшись с необходимостью печати действительно очень большого объема, даже с наличием лазерного принтера, после вызова мальчика-мастера, который этот принтер перезаправит, особенно после нескольких таких вызовов и их результатов клиенты скорее отдадут несколько сотен тысяч за несколько сот распечатанных страниц, чем отдадут те же, а скорее ещё и гораздо большие деньги за очередной вызов вот этого мальчика-мастера.
Ребята, с доставкой на дом, у вас будет не 250x15, а 250x250 просто вообще без проблем, поверьте ;)

3

Большое спасибо за подробное и аргументированное мнение. Действительно, на доставку стоит рассчитывать не при спокойном состоянии, а когда "горит", и люди эти могут быть совсем и не студентами.
Внимательно подумаем над этим.

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

2

Михаил дело говорит. Респект и уважуха.

Ваш нынешний подход выключает не только более платёжеспособные категории населения, а даже студентов других ВУЗов. Ну, зачем кому-то из БГПА идти в БГУИР за распечаткой? У него наверняка по дороге есть несколько других мест, где можно распечатать.
А с "просто физ. лицами" сомневаюсь, что у вас что-то получится. Налоговая создаст массу проблем вашим "просто физ. лицам" на пустом месте.

> Да и средний чек не такой большой, чтобы была возможность делать доставку бесплатной. А доплачивать студенты вряд ли будут)
А зачем ориентироваться только на студентов? И зачем пытаться делать доставку бесплатной? Вы в статье упомянули Uber. Я тогда не понял, почему. Тепер, после вашей ремарки про физ. лиц понимаю. Но мне кажется, что не в этой стране. У Убера в Беларуси таксисты ип-шники или сотрудники юр. лиц. С физ. лицами он не работает.

В вашем случае стоило бы внимательнее присмотреться к тем, кто на самом деле является конкурентами. Заказ на печать через интернет - давно не новость. С фотографиями это давно сделано у многих. (Кстати, почему вы зациклились только на распечатке A4, есть же ещё и фотография?). Если ищете реальных конкурентов, то смотрите, как всё организовано у karandash.by

-1

вспомните свою переписку с нацбанком...
а теперь представьте картинку с Боромиром с надписью "это Беларусь, детка... здесь нельзя физлицу просто вот так взять и подзаработать"
Uber запустился в Беларуси, потому что это махина, которая уже может себе это позволить. Но если б uber начал с беларуси он здесь бы и закончил. В смысле умер.
Или вы масштабируете идею с физлицами, на рынки, где это реально. Или вы полностью меняете идею (уйдя от формата uber) печатая в одном (нескольких) местах и за счёт этого получая занчительную скидку на печать (это раз) и пользуясь киллер-фичей "доставка заказа на дом" (это два).

0

Дело в том, что мы не планируем остаться исключительно в БГУИРе. В идеале - быть возле всех ВУЗов, дабы студент как раз по своей дороге в свое учебное заведение забирал документы.
В этом и заключается само конкурентное преимущество по сравнению с тем же карандашом: выбор наиболее удобного, ближайшего пункта печати.

1

Может и нам махнуть в Калифорнию, начать там, а потом вернуться более подготовленными?)) Там тепло...)

Идея с физлицами пока только идея, и, наверное, несколько утопическая на данный момент.
Пока продолжим расширение на существующие пункты печати, а параллельно попробуем-таки развить идею с доставкой.

2

нормальная идея с физ. лицами. Посмотрите сколько белорусов сдает квартиры через airbnb, а принимают деньги не payoneer. Кстати есть сервис по аналогичному arbnb принципу - 3d печать. Не смог вспомнить их сайт с наскока - погуглить надо, но адреса минских ребят готовых вам распечатать на своем 3d принтере там были. Понятно сайт надо не в домене by делать...)

2

Конечно крутая идея с физ. лицами. Подключайте их не бойтесь - просто заключайте с ними договор подряда, когда они оказывают вам помощь в предоставлении услуги. За этот счёт и будет основной ваш доход через небольшое время.
Про доставку - тоже не проблема организовать, хоть через службу экспресс доставки на первое время, но не думаю что от этого будет большая прибыль. доставка будет скорее плюс в имидже.
Если вам нужна помощь в организационных вопросах - с удовольствием вам помогу)
PS Ваша идея намного лучше, чем Cуперсекретный стартап основателей Viber )))

0

Никогда не узнаем до конца хорошая ли идея, пока не попробуем)

Если вспомните сайт и будет время написать, то буду благодарен. Интересно было бы взглянуть.

1

Спасибо за поддержку!)

Надо узнать точно как там с налогами с договором подряда. Не будет ли это перекрывать прибыль)

0

интересно, спасибо!

denis-dmitriev
denis-dmitriev CTO в ITS Partner
1

Можете отсюда пробел забрать :) "Пункт не доступен для выдачи заказов..."
В данном случае недоступен вместе пишется.

0

Ох уж эти пробелы))
Спасибо, исправим!)

Александр Шостак
Александр Шостак CTO в eComCharge LLC
1

Добавлю сюда в список белорусских платежных систем для приема карточных и ЕРИП платежей и нас: bePaid.by

Готовые библиотеки PHP/Ruby и модули оплат лежат тут https://github.com/begateway/

Подключение к ЕРИП через нас пока в виде Ruby клиента. PHP в процессе. Pull-requests в код приветствуются.

Anonymous
Anonymous
2

о_0 неужели на девбае статья с техническими подробностями!? Считаю, что цена на онлайн-печать должна быть чуть ниже обычной, и клиенты потянутся.

0

Учитывая то, что мы берем процент с прибыли от клиентов, которые пришли через нас, то оперировать мы можем только этой суммой. А, соответственно, скидки, если и будут, то уж очень незначительные. Стоит ли это того? Или, возможно, стоит продумать накопительную систему скидок. Но опять же, скидка в 1-3-5% на печать... интересно ли?

Vitaly Borisok
Vitaly Borisok Java Developer в ISsoft
0

Ребята, не знаю пользовались ли вы Git, но как по мне, так он удобнее и быстрее будет. С SVN на Git тоже легко перейти с сохранением истории коммитов. Рассмотрите такую возможность. Мелочь, а может быть приятной. :)

0

Спасибо за рекомендацию!!

Так как до сих пор вопрос об одновременной разработке большого кол-ва фукцнионала не стоял, то при выборе остановились на репозитории, который был более знаком
На данный момент, в связи с увеличением кол-ва разработчиков на проекте и кол-ва параллельно разрабатываемых функционалов, система бранчевания ГИТа, как и любой другой распределенной системы управления версиями, выглядит более перспективной, так как позволит решать поставленные задачи более эффективно
Переход запланирован на ближайшее время

Спасибо! 

Получать рассылки dev.by про белорусское ИТ

Что-то пошло не так. Попробуйте позже