Files
MatchLiveTv/backend/app/services/billing/stripe/cancel_subscription.rb
Emiliano Frascaro a5e781729c Billing: fatture manuali, profilo obbligatorio e piani Stripe mensile/annuale.
Rimuove link al portale Stripe in area cliente, aggiunge flusso admin per PDF
fattura e email, blocca checkout senza dati di fatturazione, allinea prezzi
a €4,90/€39,90 e €9,90/€69,90, locale italiano e documentazione deploy.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-02 17:10:12 +02:00

30 lines
756 B
Ruby

module Billing
module Stripe
class CancelSubscription
def self.call(club:)
new(club: club).call
end
def initialize(club:)
@club = club
end
def call
raise "Stripe non configurato" unless MatchLiveTv.stripe_enabled?
sub = @club.subscription
raise "Nessun abbonamento premium attivo" unless sub&.premium? && sub.stripe_subscription_id.present?
raise "Disdetta già programmata" if sub.cancel_at_period_end?
stripe_sub = ::Stripe::Subscription.update(
sub.stripe_subscription_id,
cancel_at_period_end: true
)
CheckoutSync.from_subscription(stripe_sub, club: @club)
@club.subscription.reload
end
end
end
end