2017-04-04 14:34:33 +10:00

47 lines
1.2 KiB
Ruby

require_dependency 'discourse'
module DiscourseDonations
class ChargesController < ActionController::Base
include CurrentUser
skip_before_filter :verify_authenticity_token, only: [:create]
def create
if email.nil? || email.empty?
response = {'message' => 'Please enter your email address'}
elsif create_account && params[:username].nil?
response = {'message' => 'Please enter a username'}
else
Stripe.api_key = SiteSetting.discourse_donations_secret_key
currency = SiteSetting.discourse_donations_currency
customer = Stripe::Customer.create(
:email => email,
:source => params[:stripeToken]
)
response = Stripe::Charge.create(
:customer => customer.id,
:amount => params[:amount],
:description => SiteSetting.discourse_donations_description,
:currency => currency
)
response['message'] = response['outcome']['seller_message']
end
render :json => response
end
private
def create_account
params[:create_account]
end
def email
params[:email] || current_user.try(:email)
end
end
end