Skip to content

Commit d68410f

Browse files
committed
Adds subscription service
1 parent 3274922 commit d68410f

File tree

7 files changed

+55
-3
lines changed

7 files changed

+55
-3
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class SubscriptionsController < AuthenticatedController
2+
layout 'settings'
3+
4+
def new
5+
end
6+
7+
def create
8+
SubscriptionService.new(current_user)
9+
.perform(params[:stripe_source])
10+
end
11+
end
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# TODO: Handle data persistence
2+
class SubscriptionService
3+
attr_reader :user
4+
5+
def initialize(user)
6+
@user = user
7+
end
8+
9+
def perform(source_id)
10+
customer = create_customer(source_id)
11+
result = subscribe_to_plan(customer["id"])
12+
raise result.inspect
13+
end
14+
15+
private
16+
17+
def create_customer(source_id)
18+
Stripe::Customer.create({
19+
email: user.email,
20+
source: source_id
21+
})
22+
end
23+
24+
def subscribe_to_plan(customer_id)
25+
Stripe::Subscription.create({
26+
customer: customer_id,
27+
items: [{
28+
plan: Rails.configuration.topsekrit_stripe_subscription_plan_id
29+
}],
30+
})
31+
end
32+
end

app/views/layouts/settings.html.erb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<title>SecretLink.org</title>
55
<meta name="viewport" content="width=device-width, initial-scale=1">
66
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700" rel="stylesheet">
7+
<script src="https://js.stripe.com/v3/"></script>
78
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
89
<%= csrf_meta_tags %>
910
<link rel="icon" type="image/png" href="/favicon.png">
@@ -19,6 +20,9 @@
1920
<li>
2021
<%= link_to 'Two Factor Auth (2FA)', edit_two_factor_auth_path %>
2122
</li>
23+
<li>
24+
<%= link_to 'Subscription', new_subscription_path %>
25+
</li>
2226
</ul>
2327
</div>
2428
<div class="col-md-9 content">
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<%= render "shared/stripe_form", charge_path: subscriptions_path %>

config/initializers/stripe.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
require "stripe"
22

3-
Stripe.api_key = Rails.configuration.topsekrit_secret_key
3+
Rails.application.config.after_initialize do
4+
Stripe.api_key = Rails.configuration.topsekrit_stripe_secret_key
5+
end

config/initializers/topsekrit.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
Rails.configuration.topsekrit_2fa_key = ENV['2FA_KEY']
4040

4141
# Stripe keys
42-
Rails.configuration.topsekrit_publishable_key = ENV['STRIPE_PUBLISHABLE_KEY']
43-
Rails.configuration.topsekrit_secret_key = ENV['STRIPE_SECRET_KEY']
42+
Rails.configuration.topsekrit_stripe_publishable_key = ENV['STRIPE_PUBLISHABLE_KEY']
43+
Rails.configuration.topsekrit_stripe_secret_key = ENV['STRIPE_SECRET_KEY']
44+
Rails.configuration.topsekrit_stripe_subscription_plan_id = ENV['STRIPE_SUBSCRIPTION_PLAN_ID']
4445
end

config/routes.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
end
1919
resources :decrypted_secrets, only: :create
2020
resources :extended_secrets, only: :update
21+
resources :subscriptions, only: [:new, :create]
2122

2223
post '/decrypt_secret', to: 'decrypted_secrets#create'
2324

0 commit comments

Comments
 (0)