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

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

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

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

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

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

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
32
0
9 296
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

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

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

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

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

Да, я слежу за скринкастами от Райана, и я также видел RailsKit. Проблема в том, что RailsKit разработан как отправная точка для приложения, а не как дополнение к существующему. Мой вопрос не столько технический, сколько передовой опыт архитектуры / дизайна. Спасибо хоть!

Bo Jeanes 24.01.2009 00:57

Кстати, многие люди используют SaaS Rails Kit со своим уже существующим приложением ... они просто копируют модели, контроллеры и т. д. Таким образом, вам не нужно начинать с нуля, чтобы использовать его.

Benjamin Curtis 08.08.2009 01:49

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

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

Я посмотрел книгу, я искал немного больше, чем это

Bo Jeanes 09.02.2009 08:09

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

Philippe Monnet 05.11.2009 17:20

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

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

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

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

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

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

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