Files
sure/app/controllers/subscriptions_controller.rb
Juan José Mata 8e36c8e736 Rename billing to payment throughout the codebase (#726)
* Rename billing to payment throughout the codebase

This change updates terminology from "billing" to "payment" to better
reflect that these are contributions/payments rather than bills.

Changes include:
- Rename BillingsController to PaymentsController
- Rename billing_email to payment_email
- Rename next_billing_date to next_payment_date
- Rename create_billing_portal_session_url to create_payment_portal_session_url
- Update routes from billing to payment
- Update all 12 locale files with new terminology
- Update views, helpers, and tests

* Update app/views/subscriptions/upgrade.html.erb

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Juan José Mata <jjmata@jjmata.com>

---------

Signed-off-by: Juan José Mata <jjmata@jjmata.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-21 19:06:00 +01:00

65 lines
2.1 KiB
Ruby

class SubscriptionsController < ApplicationController
# Disables subscriptions for self hosted instances
guard_feature if: -> { self_hosted? }
# Upgrade page for unsubscribed users
def upgrade
if Current.family.subscription&.active?
redirect_to root_path, notice: "You are already subscribed."
else
@plan = params[:plan] || "annual"
render layout: "onboardings"
end
end
def new
checkout_session = stripe.create_checkout_session(
plan: params[:plan],
family_id: Current.family.id,
family_email: Current.family.payment_email,
success_url: success_subscription_url + "?session_id={CHECKOUT_SESSION_ID}",
cancel_url: upgrade_subscription_url
)
Current.family.update!(stripe_customer_id: checkout_session.customer_id)
redirect_to checkout_session.url, allow_other_host: true, status: :see_other
end
# Only used for managing our "offline" trials. Paid subscriptions are handled in success callback of checkout session
def create
if Current.family.can_start_trial?
Current.family.start_trial_subscription!
redirect_to root_path, notice: "Welcome to Sure!"
else
redirect_to root_path, alert: "You have already started or completed a trial. Please upgrade to continue."
end
end
def show
portal_session_url = stripe.create_payment_portal_session_url(
customer_id: Current.family.stripe_customer_id,
return_url: settings_payment_url
)
redirect_to portal_session_url, allow_other_host: true, status: :see_other
end
# Stripe redirects here after a successful checkout session and passes the session ID in the URL
def success
checkout_result = stripe.get_checkout_result(params[:session_id])
if checkout_result.success?
Current.family.start_subscription!(checkout_result.subscription_id)
redirect_to root_path, notice: "Welcome to Sure! Your subscription has been created."
else
redirect_to root_path, alert: "Something went wrong processing your subscription. Please contact us to get this fixed."
end
end
private
def stripe
@stripe ||= Provider::Registry.get_provider(:stripe)
end
end