summaryrefslogtreecommitdiff
path: root/engines/billing/app
diff options
context:
space:
mode:
Diffstat (limited to 'engines/billing/app')
-rw-r--r--engines/billing/app/controllers/customer_controller.rb63
-rw-r--r--engines/billing/app/controllers/subscriptors.rb9
-rw-r--r--engines/billing/app/helpers/billing_helper.rb2
-rw-r--r--engines/billing/app/views/customer/_subs_form.html.haml10
-rw-r--r--engines/billing/app/views/customer/new.html.haml44
-rw-r--r--engines/billing/app/views/subscriptions/new.html.erb52
-rw-r--r--engines/billing/app/views/subscriptions/new12.html.haml27
7 files changed, 106 insertions, 101 deletions
diff --git a/engines/billing/app/controllers/customer_controller.rb b/engines/billing/app/controllers/customer_controller.rb
index 6cbcb44..3a82ff7 100644
--- a/engines/billing/app/controllers/customer_controller.rb
+++ b/engines/billing/app/controllers/customer_controller.rb
@@ -1,64 +1,19 @@
class CustomerController < BillingBaseController
- before_filter :require_login, :fetch_customer
-
- def show
- if @customer
- @customer.with_braintree_data!
- @default_cc = @customer.default_credit_card
- @active_subscription = @customer.subscriptions
- @transactions = @customer.braintree_customer.transactions
- end
- end
+ before_filter :require_login
def new
- if @customer.has_payment_info?
- redirect_to edit_customer_path(@user), :notice => 'Here is your saved customer data'
- else
- fetch_new_transparent_redirect_data
- end
- end
-
- def edit
- fetch_edit_transparent_redirect_data
- end
-
- def confirm
- @result = Braintree::TransparentRedirect.confirm(request.query_string)
- if @result.success?
- @customer.braintree_customer = @result.customer
- @customer.save
- render :action => "confirm"
- elsif @customer.has_payment_info?
- fetch_edit_transparent_redirect_data
- render :action => "edit"
+ if current_user.braintree_customer_id
+ Braintree::Customer.find current_user.braintree_customer_id
else
- fetch_new_transparent_redirect_data
- render :action => "new"
+ customer = Braintree::Customer.create(payment_method_nonce: params[:payment_method_nonce]).customer
+ current_user.update_attributes braintree_customer_id: customer.id
+ customer
end
end
- protected
-
- def fetch_new_transparent_redirect_data
- access_denied unless @user == current_user # admins cannot do this for others
- @tr_data = Braintree::TransparentRedirect.
- create_customer_data(:redirect_url => confirm_customer_url)
- end
-
- def fetch_edit_transparent_redirect_data
- access_denied unless @user == current_user # admins cannot do this for others
- @customer.with_braintree_data!
- @default_cc = @customer.default_credit_card
- @tr_data = Braintree::TransparentRedirect.
- update_customer_data(:redirect_url => confirm_customer_url,
- :customer_id => @customer.braintree_customer_id) ##??
+ def show
+ if current_user.braintree_customer_id
+ Braintree::Customer.find current_user.braintree_customer_id
end
-
- def fetch_customer
- @customer = Customer.find_by_user_id(@user.id)
- if @user == current_user
- @customer ||= Customer.new(user: @user)
- end
- access_denied unless (@customer and (@customer.user == current_user)) or admin?
end
end
diff --git a/engines/billing/app/controllers/subscriptors.rb b/engines/billing/app/controllers/subscriptors.rb
new file mode 100644
index 0000000..2e80e69
--- /dev/null
+++ b/engines/billing/app/controllers/subscriptors.rb
@@ -0,0 +1,9 @@
+def braintree_customer
+ if current_user.braintree_customer_id
+ Braintree::Customer.find current_user.braintree_customer_id
+ else
+ customer = Braintree::Customer.create(payment_method_nonce: params[:payment_method_nonce]).customer
+ current_user.update_attributes braintree_customer_id: customer.id
+ customer
+ end
+end
diff --git a/engines/billing/app/helpers/billing_helper.rb b/engines/billing/app/helpers/billing_helper.rb
index b9e5e2e..cb8abd6 100644
--- a/engines/billing/app/helpers/billing_helper.rb
+++ b/engines/billing/app/helpers/billing_helper.rb
@@ -14,7 +14,7 @@ module BillingHelper
if (admin? and user == current_user)
billing_admin_path
else
- show_or_new_customer_link(user)
+ new_subscription_path
end
end
diff --git a/engines/billing/app/views/customer/_subs_form.html.haml b/engines/billing/app/views/customer/_subs_form.html.haml
new file mode 100644
index 0000000..82828cd
--- /dev/null
+++ b/engines/billing/app/views/customer/_subs_form.html.haml
@@ -0,0 +1,10 @@
+%p
+ = t(:personal_info)
+%div
+ = text_field_tag :first_name, "",placeholder: "First Name", class: "radius"
+%div
+ = text_field_tag :last_name, "",placeholder: "Last Name", class: "radius"
+%div
+ = text_field_tag :company, "",placeholder: "Company", class: "radius"
+%div
+ = text_field_tag :phone, "",placeholder: "Phone", class: "radius"
diff --git a/engines/billing/app/views/customer/new.html.haml b/engines/billing/app/views/customer/new.html.haml
index e1f5ba9..81185e4 100644
--- a/engines/billing/app/views/customer/new.html.haml
+++ b/engines/billing/app/views/customer/new.html.haml
@@ -1,24 +1,20 @@
-- if @result
- #total-errors{:style => "color:red;"}
- = h(@result.errors.size)
- error(s)
-= braintree_form_for :customer do |f|
- = field_set_tag "Customer" do
- %dl
- %dt= f.label :first_name, 'First Name'
- %dd= f.text_field :first_name
- %dt= f.label :last_name, 'Last Name'
- %dd= f.text_field :last_name
- %dt= f.label :phone, 'Phone'
- %dd= f.text_field :phone
- = field_set_tag "Credit Card" do
- - f.fields_for :credit_card do |cc|
- %dl
- %dt= cc.label :number, 'Number'
- %dd= cc.text_field :number
- %dt= cc.label :expiration_date, 'Expiration Date (MM/YY)'
- %dd= cc.text_field :expiration_date
- %dt= cc.label :cvv, 'CVV'
- %dd= cc.text_field :cvv
- = hidden_field_tag :tr_data, @tr_data
- = f.submit 'Save Payment Info'
+%h2.mbs New Customer
+%br/
+= form_tag new_customer_path, id: "checkout-form" do
+ - if current_user and !current_user.has_payment_info?
+ = render 'subs_form' unless current_user.is_anonymous?
+ %br/
+ %p
+ = t(:donation_info)
+ %div{:id => "payment-form" }
+ %div{:id => "coinbase-container-id" }
+ %input{:name => "amount", :placeholder => "Enter amount", :type => "text"}
+ %input.btn.btn-primary{:type => "submit", :value => "Donate"}
+%script{:src => "https://js.braintreegateway.com/v2/braintree.js"}
+:javascript
+ var clientToken = "#{@client_token}";
+ braintree.setup(clientToken, "dropin", {
+ container: "payment-form",
+ form: "checkout-form",
+ coinbase: { container: "coinbase-container-id" }
+ });
diff --git a/engines/billing/app/views/subscriptions/new.html.erb b/engines/billing/app/views/subscriptions/new.html.erb
index f3e143a..2336981 100644
--- a/engines/billing/app/views/subscriptions/new.html.erb
+++ b/engines/billing/app/views/subscriptions/new.html.erb
@@ -3,33 +3,41 @@
<br>
<%= form_tag subscriptions_path, id: "checkout-form" do %>
<% if current_user and !current_user.has_payment_info? %>
- <%= render 'customer_form' unless @anonymous_user%>
- <% end %>
+ <%= render 'customer_form' %>
+ <% end %>
<br>
<p>Choose subcription:</p>
-<ul>
- <% @subscriptions.each do |subscription| %>
- <li>
- <%= subscription.name %>
- -
- <%= subscription.price %>
- <%= simple_form_for :subscription, :url => :subscriptions, :id => "checkout-form-#{subscription.id}" do |f| %>
- <input type="hidden" name="plan_id" id="" value="<%= subscription.id%>" />
- <div id="payment-form-<%= subscription.id%>"></div>
- <div class="form-actions">
- <%= f.submit t(:subscribe), :class => 'btn btn-primary' %>
+<br>
+<ul class="nav nav-tabs nav-stacked">
+ <% @subscriptions.each do |subscription| %>
+ <li>
+ <div class="btn-group">
+ <button class="btn"> <%= subscription.name %>
+ <%= subscription.price %> </button>
</div>
- <script type="text/javascript" charset="utf-8">
- var clientToken = "<%= @client_token %>";
- braintree.setup(clientToken, "dropin", {
- container: "payment-form-<%= subscription.id%>",
- coinbase: { container: "coinbase-container-id" }
- });
- </script>
- <% end %>
- </li>
+ <br>
+ <br>
+ <%= simple_form_for :subscription, :url => :subscriptions, :id => "checkout-form-#{subscription.id}" do |f| %>
+ <input type="hidden" name="plan_id" id="" value="<%= subscription.id%>" />
+ <div id="payment-form-<%= subscription.id%>"></div>
+ <div class="form-actions">
+ <%= f.submit t(:subscribe), :class => 'btn btn-primary' %>
+ </div>
+ <script type="text/javascript" charset="utf-8">
+ var clientToken = "<%= @client_token %>";
+ braintree.setup(clientToken, "dropin", {
+ container: "payment-form-<%= subscription.id%>",
+ coinbase: { container: "coinbase-container-id" }
+ });
+ </script>
+ <% end %>
+ </li>
<% end %>
</ul>
<div id="payment-form"></div>
<div id='coinbase-container-id'></div>
<% end %>
+
+
+
+
diff --git a/engines/billing/app/views/subscriptions/new12.html.haml b/engines/billing/app/views/subscriptions/new12.html.haml
new file mode 100644
index 0000000..8b302f2
--- /dev/null
+++ b/engines/billing/app/views/subscriptions/new12.html.haml
@@ -0,0 +1,27 @@
+%script{:src => "https://js.braintreegateway.com/v2/braintree.js"}
+%h2.mbs Subscriptions
+%br/
+= form_tag subscriptions_path, id: "checkout-form" do
+ - if current_user and !current_user.has_payment_info?
+ = render 'customer_form'
+ %br/
+ %p Choose subcription:
+ %ul
+ - @subscriptions.each do |subscription|
+ %li
+ = subscription.name
+ = subscription.price
+ = simple_form_for :subscription, :url => :subscriptions, :id => "checkout-form-#{subscription.id}" do |f|
+ %input{:id => "", :name => "plan_id", :type => "hidden", :value => subscription.id}
+ %div{:id => "payment-form-#{subscription.id}"}
+ .form-actions
+ = f.submit t(:subscribe), :class => 'btn btn-primary'
+ %script{:charset => "utf-8", :type => "text/javascript"}
+ :cdata
+ var clientToken = "#{@client_token}";
+ braintree.setup(clientToken, "dropin", {
+ container: "payment-form-#{subscription.id}",
+ coinbase: { container: "coinbase-container-id" }
+ });
+#payment-form
+#coinbase-container-id