diff options
Diffstat (limited to 'engines/billing/app')
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 |