Про подключение Яндекс.Кассы и как Яндекс нарушает MIT лицензию
Disclaimer! Этот пост не претендует на полноценный обзор имеющихся платежных систем, анализ их преимуществ и недостатков или детальное описание процесса подключения одной из них, а просто описывает наш опыт и один казусный факт.
Приём платежей нужен практически любому стартапу, Autosprite в этом не исключение. B2B/SaaS стартапы на этапе MVP могут положиться и на ручную обработку платежей, но затягивать с внедрением платежной системы тоже не стоит - наш опыт показал, что некоторые клиенты не платили просто потому что это было не удобно.
Мы откровенно затянули -- выставление счетов, проверка оплаты и составление закрывающих документов стали отнимать слишком много времени, а задача по внедрению платежной системы постоянно откладывалась. Но настал момент, когда больше это продолжать не могло и стоило или полностью отказаться от работы с небольшими СТО или автоматизировать оплату.
В связи с тем, что автоматизацию платежей нужно было срочном порядке особо заморачиваться исследованием платежных систем не стали, а посмотрели те, что были на слуху: QIWI, Робокасса и Яндекс.Касса. Основными требованиями были: не слишком грабительские тарифы (мы не считаем правильной достаточно принятую в России практику возложения оплаты тарифов платежной системы на пользователей), простой интерфейс (не нужно абсолютно всех способов оплаты, дайте возможность удобно проводить платежи по карте и с помощью самых популярных сервисов), удобство подключения (минимум документов при заключении договора и простая интеграция). Кроме этого хотелось, чтобы в будущем можно было совмещать работу выбранной платежной системы с какой-то другой (для иностранных клиентов планируется подключит Stripe).
По всем параметрам лучше всего подходила Яндекс.Касса. Вот что понравилось больше всего:
- Простая регистрация и возможность сразу ввести все необходимые данные и загрузить документы. Документов минимальное количество (никаких свежих выписок из ЕГРЮЛ не нужно), оригиналы по почте не нужно отправлять.
- Комиссия 3,5% для всех способов оплаты кроме оплаты Яндекс.Деньгами. Почему для оплаты Яндекс.Деньгами комиссия составляет 5% для нас остаётся большой загадкой, но у нас основной способ платежей банковская карта, поэтому не особо переживаем.
- Очень простой и внешне приятный платежный интерфейс + возможность задать все параметры платежа в своём интерфейсе. Т.е. пользователь вводит всю необходимую информацию (кроме непосредственно номера карты) на нашем сайте и переходит на сайт Яндекс.Кассы только чтобы ввести платежную информацию и подтвердить платеж.
- Наличие большого количества готовых интеграций с различными CMS, движками для магазинов и фрэймворками. Мы используем Django, поэтому нас прежде всего интересовал именно он. Интеграция есть и она работает, правда в процессе выяснился один интересный казус, о котором расскажем в самом конце.
Всего на интеграцию (от регистрации до запуска в продакшн) ушло примерно 2 недели. За первую неделю разобрались с документами (заполнили анкету, загрузили документы, прошли первичную проверку, исправили ошибки в анкете и загрузили недостающие документы, получили подтверждение и загрузили подписанный договор). После получения тестового доступа на саму интеграцию ушло примерно неделя, при этом при наличии готового модуля мы в основном занимались разработкой внутренних механизмов приёма платежай, а не непосредственной интеграцией.
После удачного проведения тестовых платежей мы отписались в службу поддержки Яндекса и уже через пару часов был включен доступ к реальной системе. От работы со службой поддержки остались положительные впечатления, а вот документацию могли бы доработать (местами важные вещи описаны не слишком очевидно).
Теперь про интеграцию с Django и то как Яндекс отностится к труду сторонних разработчиков...
По запросу "django yandex money" гугл (как и сам яндекс) на первом месте выдаёт ссылку на https://github.com/DrMartiner/django-yandex-money, а дальше (в первой 5ке) есть ссылка на https://github.com/yandex-money/yandex-money-kit-django. По названию пользователя (yandex-money) мы предположили, что это официальные репозиторий (он как бы так и есть, но с небольшой оговоркой) и использовать нужно его. Дальнейшее скорее всего осталось бы за кадром, но... 1) мы не нашли соответствующего модуля в Python Package Index (был только модуль от DrMartiner), 2) yandex-money-kit-django не работал из-за синтаксической ошибки.
Оказалось, что yandex-money-kit-django и django-yandex-money на 90% идентичны. В yandex-money-kit-django внесены минимальные изменения, добавлено несколько новых способов оплаты и синтаксические ошибки... Сделали fork яндексовского репозитория на github'е, исправили ошибки и сделали несколько мелких улучшений. Всё заработало как нужно, но т.к. репозиторий django-yandex-money был создан раньше yandex-money-kit-django решили разобраться в ситуации, написив создателю yandex-money-kit-django. В профиле DrMartiner написано, что его зовут Алексей.
Изначально мы думали, что Алексей работает (или работал) в Яндексе и они просто решили перенести исходный код в общий аккаунт yandex-money, в котором опубликованы и другие интеграции, а про обновление модуля в Python Package Index забыли. Оказалось интереснее -- сотрудники Яндекса просто скопировали исходный код Алексей к себе не ссылаясь на первоисточник даже не уведомив его об этом.
Вот что ответил Алексей:
https://github.com/DrMartiner/django-yandex-money - этот я писал год назад, но в Я никогда не работал. Кстати, писалось это при отсутствие нормальной документации. Яндекс касса появилась позже
А вот, что ответил сотрудник Яндекса Алексей на вопрос об использовании его кода:
Прошу Вас уточнить, почему Вы решили, что мы "выдали его за свой" и каким соглашением ограничена его доработка?
Как-то не очень красиво для Яндекса... В репозитории Алексей отсутствует файл LICENSE, но в Python Package Index указана лицензия MIT (https://pypi.python.org/pypi/django-yandex-money), а Github подтверждает права Алексея на код: https://help.github.com/articles/open-source-licen...
Ситуация казусная, но надеемся, что заинтересованные стороны найдут решения и появится официальный модуль работы с Яндекс.Кассой в Django!