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>
This commit is contained in:
29
backend/app/services/billing/stripe/cancel_subscription.rb
Normal file
29
backend/app/services/billing/stripe/cancel_subscription.rb
Normal file
@@ -0,0 +1,29 @@
|
||||
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
|
||||
Reference in New Issue
Block a user