Периодическое выставление счетов с помощью Rails и ActiveMerchant: лучшие практики, подводные камни, подводные камни?

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

Я ищу любые советы относительно передовых методов с учетом наших требований (перечисленных ниже) и любые дополнительные предупреждения для общих ошибок или конкретных проблем, которым я должен уделить особое внимание. Платежный шлюз, который мы будем использовать, - PaymentExpress, так как это один из немногих поддерживаемых шлюзов, которые имеют повторяющееся выставление счетов и не нет особых условий для компаний, работающих за пределами США. Бизнес, стоящий за этим приложением, находится за пределами Великобритании.

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

  • Все пользователи получают 30-дневную пробную версию
  • Есть разные планы, в том числе и бесплатный.
  • Планы с более высокой ценой имеют большие ограничения на объем данных (например, пользователей, проекты и т. Д.), Которые они могут иметь в своей учетной записи.
  • Расчетный период будет ежемесячным, начиная с пробного периода.
  • Там будут скидки / коды купонов, чтобы получить процент от обычной цены в течение года на планы и т. Д.
  • Стоимость тарифного плана будет меняться по мере добавления функций.

Конкретными препятствиями, которые я могу предвидеть, будут следующие:

  • Как справиться с понижением, если они нарушают ограничения плана для планов более низкого уровня.
  • Поведение, когда срок действия кредитных карт истекает или платежи не проходят (возможно, включен режим только для чтения)
  • При изменении цен на план мы хотим соблюдать предыдущие цены для существующих пользователей в течение определенного периода времени (например, 6 месяцев), а затем начать взимать более высокие ставки. Если тарифная цена снизится, она вступит в силу немедленно.

Другой совет, который был бы полезен, касался бы потока приложения. Как должны быть представлены формы выставления счетов пользователю? Когда следует запрашивать информацию о кредитной карте? Как следует отправлять, хранить и получать счета-фактуры?

Я должен сообщить, что мы планируем основывать большую часть кода на SaaSy. SaaSy разработан для использования в качестве отдельного приложения Rails, которое обрабатывает все аспекты регистрации и управления учетными записями. Однако это не работает для нас, поскольку мы никогда не планировали этого с самого начала, и адаптировать наше приложение для такой работы было бы утомительным процессом. Следовательно, мы будем извлекать код и идеи из SaaSy и объединять их в наше приложение, что является значительно менее утомительной задачей.


person Bo Jeanes    schedule 23.01.2009    source источник


Ответы (4)


RailsKits содержит программное обеспечение как набор услуг, который должен делать то, что вам нужно. Он имеет встроенную поддержку бесплатных пробных версий, обновления, понижения, ограничения тарифных планов и т. Д., А также поддерживает PaymentExpress (и некоторые другие).

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

Хотя RailsKit является относительно недорогим по сравнению с тем, сколько вам потребовалось бы реализовать все его функции самостоятельно, существует пара версий с открытым исходным кодом, которые стремятся достичь того же самого. Тот, который я припоминаю, называется Freemium.

РЕДАКТИРОВАТЬ: Я забыл упомянуть, что Райан Бейтс сказал в своем последнем Railscast, что его следующий или два эпизода будут иметь дело с повторяющимся выставлением счетов, так что следите за этим. Обычно он снимает одну серию в неделю, а пять, которые он снял с 22 декабря, касаются обработки платежей разных типов.

person Nick    schedule 23.01.2009
comment
Да, я слежу за скринкастами от Райана, и я также видел RailsKit. Проблема в том, что RailsKit разработан как отправная точка для приложения, а не как дополнение к существующему. Мой вопрос носит не столько технический характер, сколько передовой опыт архитектуры / дизайна. Спасибо хоть! - person Bo Jeanes; 24.01.2009
comment
Кстати, многие люди используют SaaS Rails Kit со своим уже существующим приложением ... они просто копируют модели, контроллеры и т. Д. Таким образом, вам не нужно начинать с нуля, чтобы использовать его. - person Benjamin Curtis; 08.08.2009

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

Вы получаете гораздо большую гибкость, просто используя их для одной цели (для выставления счетов по кредитной карте и, возможно, также для хранения кредитных карт для соответствия требованиям PCI). Затем сверните свой собственный повторяющийся биллинг в своем приложении rails с помощью задания cron, поля даты, когда они оплачиваются, и суммы, которую платит каждый человек (в случае, если они использовали купон) и т. Д.

Один небольшой пример: иногда люди отменяют ежемесячную подписку в середине месяца. Они хотят убедиться, что не забудут отменить до следующего платежа. Большинство повторяющихся выставлений счетов через шлюз, которые я видел, немедленно прекращают действие учетной записи (или отправляют вам сообщение с указанием этого). На самом деле, пользователь заплатил до конца месяца, и ему нужно предоставить еще 2 недели доступа. Вы можете сделать это, если вы свернули свой собственный повторяющийся биллинг в рельсах, но не если вы используете повторяющийся биллинг шлюза. Просто небольшой пример.

person Brian Armstrong    schedule 27.05.2009

У Peepcode есть PDF-файл для продажи (70 страниц), в котором подробно описаны различные аспекты обработки платежей и отраслевые практики для этого. Возможно, стоит проверить:

http://peepcode.com/products/activemerchant-pdf

person hernan43    schedule 06.02.2009
comment
Я смотрел книгу, я искал немного больше, чем это - person Bo Jeanes; 09.02.2009
comment
Книга дает отличный обзор процесса и включает множество фрагментов кода. Автору обложек также пришлось создавать юнит-тесты. Также в комплект входит пример приложения: moneyhats. Отличное содержание и качество по очень доступной цене. - person Philippe Monnet; 05.11.2009

Я также занимаюсь настройкой веб-сайта на основе подписки, и это наши текущие требования. Они могут помочь вам в отношении передового опыта:

  • Пользователи смогут выбрать один из планов подписки.
  • Пользователи должны будут ввести данные своей кредитной карты, чтобы подписаться на выбранный ими план.
  • Принимаются все основные кредитные и дебетовые карты, включая Maestro и American Express.
  • Каждый план будет иметь 30-дневную бесплатную пробную версию, поэтому с кредитных карт пользователей следует списывать средства только после истечения 30-дневного периода. Однако действительность кредитных карт следует проверять во время регистрации.
  • Пользователи получат электронное письмо за несколько дней до списания средств с их кредитной карты, чтобы уведомить их о том, что они будут списаны в ближайшее время, если они не аннулируют свою учетную запись. Если они аннулируют свою учетную запись в течение 30-дневного бесплатного пробного периода, с их кредитной карты не будет снята оплата.
  • По истечении любого бесплатного пробного периода с пользователей будет взиматься предоплата за использование системы, т. Е. Они будут вносить предоплату.
  • С пользователей будет автоматически взиматься ежемесячная плата за выбранный ими план. Каждый месяц пользователям будет отправляться электронное письмо за несколько дней до того, чтобы уведомить их о том, что с них будет взиматься плата. После того, как платеж будет произведен, пользователям будет отправлен счет по электронной почте, подтверждающий, что их платеж был получен.
  • Пользователи смогут обновить или понизить свою учетную запись в любое время. Когда пользователи переходят на более раннюю / более раннюю версию, их следующая плата за подписку будет по новой ставке. Пользователи смогут только понизить свои учетные записи до плана, который может обрабатывать их данные. Например, если в настоящее время у них есть 10 активных проектов, они не могут перейти на базовый план, потому что базовый план допускает только 5 проектов. Им придется удалить или заархивировать 5 проектов, прежде чем вы сможете перейти на базовую версию.
  • Пользователи смогут войти в свою учетную запись и изменить или обновить данные своей кредитной карты.
  • Пользователи смогут закрыть свою учетную запись в любое время. После того, как пользователь аннулирует свою учетную запись, дополнительная плата за подписку не взимается. Однако пользователям не будет возвращена часть уже оплаченного месяца.
  • Все части платежной системы должны на 100% соответствовать PCI DSS; включая любые сторонние системы.
  • Платежная система должна поддерживать автоматическое уведомление и повторение неудачных продлений подписки.
  • Платежная система должна поддерживать купоны на скидку со сроком действия.
  • Данные кредитной карты не должны обрабатываться или храниться на наших серверах.
  • они всегда должны обрабатываться / храниться нашим сторонним партнером по обработке платежей. Мы не несем ответственности за защиту этих данных и соблюдение правовых норм и правил.
  • Пользователи смогут войти в свои учетные записи и увидеть полную историю выставления счетов, включая даты и уплаченные суммы. Нам также потребуется войти в систему, чтобы увидеть планы платежей клиентов и историю платежей. Это будет важно для обслуживания клиентов.

Мы также изучили http://chargify.com/, который, похоже, может сэкономить много кода. время.

person Andrew    schedule 16.11.2009