Factor out the Stripe code from the UserUpgrade class. Introduce a new PaymentTransaction abstract class that represents a payment with some payment processor, and a PaymentTransaction::Stripe class that implements transactions with Stripe. Note that we can't completely eliminate Stripe even though we no longer accept payments with it because we still need to be able to look up old payments in Stripe.
21 lines
530 B
Ruby
21 lines
530 B
Ruby
# frozen_string_literal: true
|
|
|
|
class WebhooksController < ApplicationController
|
|
skip_forgery_protection only: :receive
|
|
rescue_with Stripe::SignatureVerificationError, status: 400
|
|
rescue_with DiscordSlashCommand::WebhookVerificationError, status: 401
|
|
|
|
def receive
|
|
case params[:source]
|
|
when "stripe"
|
|
PaymentTransaction::Stripe.receive_webhook(request)
|
|
head 200
|
|
when "discord"
|
|
json = DiscordSlashCommand.receive_webhook(request)
|
|
render json: json
|
|
else
|
|
head 400
|
|
end
|
|
end
|
|
end
|