Skip to content

Instantly share code, notes, and snippets.

@StaverDmitry
Created November 13, 2016 16:25
Show Gist options
  • Save StaverDmitry/c560cf3517cf7ee9dd0dc06a4211b6c9 to your computer and use it in GitHub Desktop.
Save StaverDmitry/c560cf3517cf7ee9dd0dc06a4211b6c9 to your computer and use it in GitHub Desktop.
rake braintree_subscriptions:update
~ Проверит отмененные и оконченные подписки в брейнтри и уберет их(*cancel) у юзера.
~ Проверяет на случай, когда в БД нет подписки, которая создалась в Брейнтри.
Скидочные купоны
~ Создаются или через админку или rake таской для оконченных Free подписок.
~ Поведение рассылки по дням можно изменить в таске braintree_subscriptions:send_discount_emails
~ Купон создастся в базе, но его нужно активировать по ссылке( метод coupon.link ) или из админки.
~ Купонов может быть несколько на одного юзера, но после активации одного, остальные удаляются.
~ После покупки с активированным купоном, создается подписка по скидочной цене, а купон удаляется.
Free Plan
~ Создается с помощью rake db:seed
~ По умолчанию триал 7 дней, меняется в админке.
Cancel
~ Остановить подписку в брейнтри
~ Если пришел успешный результат ==========> удаляем из бд
~ Подписка уже отменена(BraintreeException) ==========> удаляем из бд
~ Подписка Expired ==========> удаляем из бд
~ Подписки не существует(BraintreeException) ==========> удаляем из бд
~ Создается expired Free подписка
Add_Subscription
~ Создается новая подписка на брейнтри
~ Если пришел успешный результат на новую подписку, удаляем старую *Cancel*
******************************************************************
*************************** USER CASES ***************************
1. Первый раз зашел в сервис ----> Создается бесплатная подписка.
2. Купил новый план ----> *Add_subscription*
3. Удаление подписки через admin ----> Стандартное удаление отключено, удаление только через кнопку *Cancel* в разделе "Edit"
4. Создание подписки через брейнтри ----> Отлавливается вебхук => *add_subscription*
5. Удаление подписки через брейнтри ----> Отлавливается вебхук => *Cancel*
6. Создание бесплатного плана ----> Нажать Edit на текущую подписку юзера, выставить нужный план и не убирать галочку "Force free subsription"
~ Это нужно потому, что в брейнтри нет асболютно бесплатной подписки, а такие нужны в сервисе на всякий случай.
~ "force free == true" заставляет rake task игнорить эту подписку, когда он синхронизирует подписки брейнтри и changeagain
~ У юзера должен быть Free план, чтобы создать "Force free" подписку, иначе надо удалить *Cancel* текущую платную.
~ у force_free подписки можно менять тарифные планы
7. Создалось несколько подписок в брейнтри ----> rake task проверит наличие нескольких подписок у платных юзеров и оставит приоритетную
8. Подписка есть в базе, но нет в брейнтри ----> rake task заканселит эту подписку *Cancel*
9. Free plan expired ----> Каждый день для юзера создается скидочный купон,
~ Купоны создаются таской braintree_subscriptions:create_discounts, там же можно поменять поведение по дням
~ Ссылка на активацию присылается юзеру на email
Braintree иногда возвращает ошибку при создании подписки "Invalid payment nonce".
Происходит если юзер открыл дашборд в еще одной табе и попробовал оплатить с прошлой табы.
Прошлый payment nonce експайрится в брейнтри и платеж не проходит,
Юзера редиректнет в дашборд с notice: "There was an error with your subscription. Please try again".
Еще, вероятно, payment_nonce сам экспайрится по времени
Ошибка логается
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment