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

StackOverflow https://stackoverflow.com/questions/471936

Вопрос

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

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

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

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

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

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

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top