Initial commit: monorepo Match Live TV.
Rails API, app Flutter, infrastruttura Docker/MediaMTX, sito marketing e documentazione di deploy. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
32
backend/app/controllers/webhooks/stripe_controller.rb
Normal file
32
backend/app/controllers/webhooks/stripe_controller.rb
Normal file
@@ -0,0 +1,32 @@
|
||||
module Webhooks
|
||||
class StripeController < ActionController::API
|
||||
def create
|
||||
payload = request.body.read
|
||||
sig_header = request.env["HTTP_STRIPE_SIGNATURE"]
|
||||
|
||||
unless MatchLiveTv.stripe_webhook_secret.present?
|
||||
Rails.logger.info("[Stripe webhook] ignored — STRIPE_WEBHOOK_SECRET not set")
|
||||
return head :ok
|
||||
end
|
||||
|
||||
event = ::Stripe::Webhook.construct_event(
|
||||
payload, sig_header, MatchLiveTv.stripe_webhook_secret
|
||||
)
|
||||
|
||||
Billing::Stripe::WebhookHandler.call(event)
|
||||
|
||||
head :ok
|
||||
rescue JSON::ParserError, ::Stripe::SignatureVerificationError => e
|
||||
Rails.logger.warn("[Stripe webhook] #{e.message}")
|
||||
head :bad_request
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def stripe_object_from_hash(hash)
|
||||
OpenStruct.new(hash.transform_keys(&:to_s).transform_values do |v|
|
||||
v.is_a?(Hash) ? stripe_object_from_hash(v) : v
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user