billing in saas applications on rails

112
21 сентября 2013 года Александров Игорь Биллинг в SaaS-системах на Rails http://www.jetrockets.ru

Upload: igor-alexandrov

Post on 21-Nov-2014

1.126 views

Category:

Technology


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Billing In SaaS applications on Rails

21 сентября 2013 годаАлександров Игорь

Биллинг в SaaS-системах на Rails

http://www.jetrockets.ru

Page 2: Billing In SaaS applications on Rails
Page 3: Billing In SaaS applications on Rails
Page 4: Billing In SaaS applications on Rails
Page 5: Billing In SaaS applications on Rails
Page 6: Billing In SaaS applications on Rails
Page 7: Billing In SaaS applications on Rails

Как организовать биллинг для SaaS-приложения?

Page 8: Billing In SaaS applications on Rails

Как организовать биллинг для SaaS-приложения?

• Арендовать биллинг

Page 9: Billing In SaaS applications on Rails

Как организовать биллинг для SaaS-приложения?

• Арендовать биллинг

• Написать самим

Page 10: Billing In SaaS applications on Rails

PCI Сompliance

Page 11: Billing In SaaS applications on Rails

PCI Сompliance

https://www.pcisecuritystandards.org/Набор требований для организаций, сервиса и оборудования, которое работает с платёжными данными пользователей.

Page 14: Billing In SaaS applications on Rails

Аренда биллинга у другого SaaS-приложения

Page 15: Billing In SaaS applications on Rails

Аренда биллинга у другого SaaS-приложения

Page 16: Billing In SaaS applications on Rails

Аренда биллинга: плюсы

Page 17: Billing In SaaS applications on Rails

Скорость внедрения

Аренда биллинга: плюсы

Page 18: Billing In SaaS applications on Rails

Скорость внедрения

Наличие API и библиотек (Ruby)

Аренда биллинга: плюсы

Page 19: Billing In SaaS applications on Rails

Скорость внедрения

Наличие API и библиотек (Ruby)

“Проверенная работоспособность”

Аренда биллинга: плюсы

Page 20: Billing In SaaS applications on Rails

Скорость внедрения

Наличие API и библиотек (Ruby)

“Проверенная работоспособность”

Ослабленные требования PCI Compliance

Аренда биллинга: плюсы

Page 21: Billing In SaaS applications on Rails

Аренда биллинга: минусы

Page 22: Billing In SaaS applications on Rails

Сложность внесения изменений

Аренда биллинга: минусы

Page 23: Billing In SaaS applications on Rails

Сложность внесения изменений

Зависимость от внешнего сервиса

Аренда биллинга: минусы

Page 24: Billing In SaaS applications on Rails

Сложность внесения изменений

Зависимость от внешнего сервиса

Сложность в использовании нескольких вариантов

платежей

Аренда биллинга: минусы

Page 25: Billing In SaaS applications on Rails

Сложность внесения изменений

Зависимость от внешнего сервиса

Сложность в использовании нескольких вариантов

платежей

Постоплатный биллинг

Аренда биллинга: минусы

Page 26: Billing In SaaS applications on Rails

Разработка биллинга: плюсы

Page 27: Billing In SaaS applications on Rails

Различные варианты оплаты

Разработка биллинга: плюсы

Page 28: Billing In SaaS applications on Rails

Различные варианты оплаты

Любая логика работы подписки

Разработка биллинга: плюсы

Page 29: Billing In SaaS applications on Rails

Различные варианты оплаты

Любая логика работы подписки

Централизация данных

Разработка биллинга: плюсы

Page 30: Billing In SaaS applications on Rails

Различные варианты оплаты

Любая логика работы подписки

Централизация данных

Слабая зависимость от сторонних сервисов

Разработка биллинга: плюсы

Page 31: Billing In SaaS applications on Rails

Разработка биллинга: минусы

Page 32: Billing In SaaS applications on Rails

Страшно!

Разработка биллинга: минусы

Page 33: Billing In SaaS applications on Rails

Страшно!

Заказчик боится

Разработка биллинга: минусы

Page 34: Billing In SaaS applications on Rails

Страшно!

Заказчик боится

Долгая разработка и тестирование

Разработка биллинга: минусы

Page 35: Billing In SaaS applications on Rails

Страшно!

Заказчик боится

Долгая разработка и тестирование

Полное соблюдение правил PCI Compliance

Разработка биллинга: минусы

Page 36: Billing In SaaS applications on Rails

https://github.com/igor-alexandrov/spaceship

SpaceShip

Page 37: Billing In SaaS applications on Rails

SpaceShip• Тарифный план

• Подписка

• Процесс биллинга

• Биллинговый интервал

• Инвойс

• Оплата и транзакции

• Хранение кредитных карт

Page 38: Billing In SaaS applications on Rails

Тарифный планapp/models/billing/plan.rb

Page 39: Billing In SaaS applications on Rails

Тарифный план

app/models/billing/plan.rb

Page 40: Billing In SaaS applications on Rails

Тарифный план

• Стоимости услуг за единицу времени

app/models/billing/plan.rb

Page 41: Billing In SaaS applications on Rails

Тарифный план

• Стоимости услуг за единицу времени– месячная стоимость

app/models/billing/plan.rb

Page 42: Billing In SaaS applications on Rails

Тарифный план

• Стоимости услуг за единицу времени– месячная стоимость– годовая стоимость

app/models/billing/plan.rb

Page 43: Billing In SaaS applications on Rails

Тарифный план

• Стоимости услуг за единицу времени– месячная стоимость– годовая стоимость– квартальная стоимость

app/models/billing/plan.rb

Page 44: Billing In SaaS applications on Rails

Тарифный план

• Стоимости услуг за единицу времени– месячная стоимость– годовая стоимость– квартальная стоимость– …

app/models/billing/plan.rb

Page 45: Billing In SaaS applications on Rails

Тарифный план

• Стоимости услуг за единицу времени– месячная стоимость– годовая стоимость– квартальная стоимость– …

• Набор ресурсов, который может быть доступен пользователю

app/models/billing/plan.rb

Page 46: Billing In SaaS applications on Rails

Тарифный план

• Стоимости услуг за единицу времени– месячная стоимость– годовая стоимость– квартальная стоимость– …

• Набор ресурсов, который может быть доступен пользователю

• Длительность (наличие) триального периода

app/models/billing/plan.rb

Page 47: Billing In SaaS applications on Rails

Подпискаapp/models/billing/subscriptions/base.rb

Page 48: Billing In SaaS applications on Rails

Подпискаapp/models/billing/subscriptions/base.rb

Page 49: Billing In SaaS applications on Rails

Подписка

• Пользователь

app/models/billing/subscriptions/base.rb

Page 50: Billing In SaaS applications on Rails

Подписка

• Пользователь• Тарифный план

app/models/billing/subscriptions/base.rb

Page 51: Billing In SaaS applications on Rails

Подписка

• Пользователь• Тарифный план• Биллинговый интервал

app/models/billing/subscriptions/base.rb

Page 52: Billing In SaaS applications on Rails

Подписка

• Пользователь• Тарифный план• Биллинговый интервал

• Выбранные параметры

app/models/billing/subscriptions/base.rb

Page 53: Billing In SaaS applications on Rails

Подписка

• Пользователь• Тарифный план• Биллинговый интервал

• Выбранные параметры– максимальное число пользователей, товаров, места на диске…

app/models/billing/subscriptions/base.rb

Page 54: Billing In SaaS applications on Rails

Подписка

• Пользователь• Тарифный план• Биллинговый интервал

• Выбранные параметры– максимальное число пользователей, товаров, места на диске…

• Набор дополнительных сервисов (тарифицируются отдельно)

app/models/billing/subscriptions/base.rb

Page 55: Billing In SaaS applications on Rails

Подписка

• Пользователь• Тарифный план• Биллинговый интервал

• Выбранные параметры– максимальное число пользователей, товаров, места на диске…

• Набор дополнительных сервисов (тарифицируются отдельно)– интеграция с внешним источником данных

app/models/billing/subscriptions/base.rb

Page 56: Billing In SaaS applications on Rails

Подписка

• Пользователь• Тарифный план• Биллинговый интервал

• Выбранные параметры– максимальное число пользователей, товаров, места на диске…

• Набор дополнительных сервисов (тарифицируются отдельно)– интеграция с внешним источником данных– дополнителные услуги, входящие в более премиальные планы

app/models/billing/subscriptions/base.rb

Page 57: Billing In SaaS applications on Rails

Подписка (стоимость)

app/models/billing/subscriptions/base.rb

Page 58: Billing In SaaS applications on Rails

Сколько стоит минимальный биллинговый интервал (1 день)

Подписка (стоимость)

app/models/billing/subscriptions/base.rb

Page 59: Billing In SaaS applications on Rails

Сколько стоит минимальный биллинговый интервал (1 день)

• сколько стоит полный интервал обслуживания пользователя

Подписка (стоимость)

app/models/billing/subscriptions/base.rb

Page 60: Billing In SaaS applications on Rails

Сколько стоит минимальный биллинговый интервал (1 день)

• сколько стоит полный интервал обслуживания пользователя

• сколько средств уже потрачено

Подписка (стоимость)

app/models/billing/subscriptions/base.rb

Page 61: Billing In SaaS applications on Rails

Сколько стоит минимальный биллинговый интервал (1 день)

• сколько стоит полный интервал обслуживания пользователя

• сколько средств уже потрачено

• сколько средств можно вернуть

Подписка (стоимость)

app/models/billing/subscriptions/base.rb

Page 62: Billing In SaaS applications on Rails

Подписка (биллинговый интервал)app/models/billing/subscriptions/base.rb

Page 63: Billing In SaaS applications on Rails

Подписка (биллинговый интервал)app/models/billing/subscriptions/base.rb

Page 64: Billing In SaaS applications on Rails

Подписка (биллинговый интервал)app/models/billing/subscriptions/base.rb

Page 65: Billing In SaaS applications on Rails

Подписка (биллинговый интервал)app/models/billing/subscriptions/base.rb

Page 66: Billing In SaaS applications on Rails

Подписка (биллинговый интервал)app/models/billing/subscriptions/base.rb

Page 67: Billing In SaaS applications on Rails

Подписка (процесс биллинга)app/models/billing/subscriptions/base.rb

Page 68: Billing In SaaS applications on Rails

• Выставляется дата следующего биллинга

Подписка (процесс биллинга)app/models/billing/subscriptions/base.rb

Page 69: Billing In SaaS applications on Rails

• Выставляется дата следующего биллинга

• сдвиг на 30, 365 дней и так далее.

Подписка (процесс биллинга)app/models/billing/subscriptions/base.rb

Page 70: Billing In SaaS applications on Rails

• Выставляется дата следующего биллинга

• сдвиг на 30, 365 дней и так далее.

• Расчитывается стоимость полученного интервала;

Подписка (процесс биллинга)app/models/billing/subscriptions/base.rb

Page 71: Billing In SaaS applications on Rails

• Выставляется дата следующего биллинга

• сдвиг на 30, 365 дней и так далее.

• Расчитывается стоимость полученного интервала;

• Создаётся инвойс

Подписка (процесс биллинга)app/models/billing/subscriptions/base.rb

Page 72: Billing In SaaS applications on Rails

• Выставляется дата следующего биллинга

• сдвиг на 30, 365 дней и так далее.

• Расчитывается стоимость полученного интервала;

• Создаётся инвойс

• Оповещение пользователя (email, sms).

Подписка (процесс биллинга)app/models/billing/subscriptions/base.rb

Page 73: Billing In SaaS applications on Rails

Инвойс (счёт)app/models/billing/invoice.rb

Page 74: Billing In SaaS applications on Rails

Инвойс (счёт)

app/models/billing/invoice.rb

Page 75: Billing In SaaS applications on Rails

Инвойс (счёт)

• дата создания (issue date)

app/models/billing/invoice.rb

Page 76: Billing In SaaS applications on Rails

Инвойс (счёт)

• дата создания (issue date)• срок оплаты (due date)

app/models/billing/invoice.rb

Page 77: Billing In SaaS applications on Rails

Инвойс (счёт)

• дата создания (issue date)• срок оплаты (due date)• общая сумма, которую должен заплатить клиент

app/models/billing/invoice.rb

Page 78: Billing In SaaS applications on Rails

Инвойс (счёт)

• дата создания (issue date)• срок оплаты (due date)• общая сумма, которую должен заплатить клиент

• человеко-понятная информация:

app/models/billing/invoice.rb

Page 79: Billing In SaaS applications on Rails

Инвойс (счёт)

• дата создания (issue date)• срок оплаты (due date)• общая сумма, которую должен заплатить клиент

• человеко-понятная информация:• описание услуг

app/models/billing/invoice.rb

Page 80: Billing In SaaS applications on Rails

Инвойс (счёт)

• дата создания (issue date)• срок оплаты (due date)• общая сумма, которую должен заплатить клиент

• человеко-понятная информация:• описание услуг• стоимость

app/models/billing/invoice.rb

Page 81: Billing In SaaS applications on Rails

Инвойс (счёт)

• дата создания (issue date)• срок оплаты (due date)• общая сумма, которую должен заплатить клиент

• человеко-понятная информация:• описание услуг• стоимость• скидки

app/models/billing/invoice.rb

Page 82: Billing In SaaS applications on Rails

Инвойс (счёт)

• дата создания (issue date)• срок оплаты (due date)• общая сумма, которую должен заплатить клиент

• человеко-понятная информация:• описание услуг• стоимость• скидки• …

app/models/billing/invoice.rb

Page 83: Billing In SaaS applications on Rails

Инвойс (счёт)

app/models/billing/invoice.rb

Page 84: Billing In SaaS applications on Rails

• ничего не знает о том, в результате чего он был создан;

Инвойс (счёт)

app/models/billing/invoice.rb

Page 85: Billing In SaaS applications on Rails

• ничего не знает о том, в результате чего он был создан;• знает о транзакциях, которые проводились с ним;

Инвойс (счёт)

app/models/billing/invoice.rb

Page 86: Billing In SaaS applications on Rails

• ничего не знает о том, в результате чего он был создан;• знает о транзакциях, которые проводились с ним;

1. class Billing::Invoice < ActiveRecord::Base2. 3. belongs_to :account, :inverse_of => :billing_transactions4. has_many :transactions, :class_name => "Billing::Transaction"5. 6. end

Инвойс (счёт)

app/models/billing/invoice.rb

Page 87: Billing In SaaS applications on Rails

• могут быть применены скидочные купоны;• основание для совершения действий над аккаунтом

пользователя:– перевод на более другой план при отсутвии оплаты;– блокировка функциональности;

Инвойс (счёт)

app/models/billing/invoice.rb

Page 88: Billing In SaaS applications on Rails

Оплата

Page 89: Billing In SaaS applications on Rails

Active Merchant

• code extraction из Shopify• > около 100 платёжных провайдеров• в production с 2006 года

• есть интеграция с Robokassa

http://activemerchant.org/

Оплата

Page 90: Billing In SaaS applications on Rails

Оплата (мир)

Page 91: Billing In SaaS applications on Rails

Оплата (мир)

Page 92: Billing In SaaS applications on Rails

https://www.braintreepayments.com/

Оплата (мир)

Page 93: Billing In SaaS applications on Rails

https://www.braintreepayments.com/

Оплата (мир)

Page 94: Billing In SaaS applications on Rails

Оплата (Braintree)https://www.braintreepayments.com/

Page 95: Billing In SaaS applications on Rails

• USA, Europe, Canada, Australia;

Оплата (Braintree)https://www.braintreepayments.com/

Page 96: Billing In SaaS applications on Rails

• USA, Europe, Canada, Australia;• До сих пор нет в России;

Оплата (Braintree)https://www.braintreepayments.com/

Page 97: Billing In SaaS applications on Rails

• USA, Europe, Canada, Australia;• До сих пор нет в России;• > 130 валют;

Оплата (Braintree)https://www.braintreepayments.com/

Page 98: Billing In SaaS applications on Rails

• USA, Europe, Canada, Australia;• До сих пор нет в России;• > 130 валют;

• PCI Compliance за 15 минут;

Оплата (Braintree)https://www.braintreepayments.com/

Page 99: Billing In SaaS applications on Rails

Безопасное хранение информации о кредитных картах

1. class Billing::Card2. ...3. result = Braintree::CreditCard.create({4. :customer_id => self.user.try(:braintree_customer_id),5. :number => self.number,6. :expiration_date => self.expiration_date.strftime('%m/%Y'),7. :cardholder_name => [self.first_name, self.last_name].compact.join(' ')8. })9. 10. if result.success?11. self.token = result.credit_card.token 12. else13. self.errors.add(:base, result.errors.first.message)14. return false15. end16.end

https://www.braintreepayments.com/

Оплата (Braintree)

Page 100: Billing In SaaS applications on Rails

Оплата (Россия)

Page 101: Billing In SaaS applications on Rails

Оплата (Россия)

Page 102: Billing In SaaS applications on Rails

https://paysio.com/

Оплата (Россия)

Page 103: Billing In SaaS applications on Rails

Транзакция

app/models/billing/transaction.rb

Page 104: Billing In SaaS applications on Rails

Транзакция

• зачисление средств на внутренний счёт

app/models/billing/transaction.rb

Page 105: Billing In SaaS applications on Rails

Транзакция

• зачисление средств на внутренний счёт• списание средств с внутреннего счёта

app/models/billing/transaction.rb

Page 106: Billing In SaaS applications on Rails

Транзакция

• зачисление средств на внутренний счёт• списание средств с внутреннего счёта• оплата через Braintree

app/models/billing/transaction.rb

Page 107: Billing In SaaS applications on Rails

Транзакция

• зачисление средств на внутренний счёт• списание средств с внутреннего счёта• оплата через Braintree

• оплата через PayPal (авторизация + списание средств)

app/models/billing/transaction.rb

Page 108: Billing In SaaS applications on Rails

Транзакция

app/models/billing/transaction.rb

Page 109: Billing In SaaS applications on Rails

Транзакция

• Хранит информацию о всех манипуляциях со средствами пользователя: удачных и неудачных.

app/models/billing/transaction.rb

Page 110: Billing In SaaS applications on Rails

Транзакция

• Хранит информацию о всех манипуляциях со средствами пользователя: удачных и неудачных.

• В зависимости от типа может инициировать оплату с помощью выбранного провайдера платежей.

app/models/billing/transaction.rb

Page 111: Billing In SaaS applications on Rails

Транзакция

• Хранит информацию о всех манипуляциях со средствами пользователя: удачных и неудачных.

• В зависимости от типа может инициировать оплату с помощью выбранного провайдера платежей.

• В некоторых случаях может быть отменена.

app/models/billing/transaction.rb

Page 112: Billing In SaaS applications on Rails

Вопросы?

http://www.jetrockets.ru