Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Order < ApplicationRecord
- #...
- def create_customer(params)
- if !user.stripe_customer_token || user.stripe_customer_token.nil?
- begin
- customer = Stripe::Customer.create(
- description: "Customer for #{user.profile.first_name} #{user.profile.last_name} - #{user.email}",
- email: "#{user.email}",
- source: params['stripeToken']
- )
- if customer.id
- user.stripe_customer_token = customer.id
- user.save
- end
- rescue Stripe::CardError => e
- logger.error "Error creating customer record #{e.message}"
- self.errors.add :base, "There was a problem with your credit card. #{e.message}"
- self.invalid_card = true
- rescue Stripe::InvalidRequestError => e
- logger.error "Error while creating customer: #{e.message}"
- self.errors.add :base, "There was a problem with your credit card. #{e.message}"
- self.invalid_card = true
- rescue => e
- logger.error "Error creating customer: #{e.message}"
- self.errors.add :base, "Generic error occurred."
- self.invalid_card = true
- end
- end
- end
- def process_payment(params)
- create_customer(params)
- charge_customer_for_membership
- end
- end
- class OrdersController < ApplicationController
- # ...
- def update
- if params[:checkout] && @order.order_status.id == 1
- @order.process_payment(params)
- session[:order_id] = nil
- end
- if @order.update(order_params)
- redirect_to @order, notice: 'Order success.'
- else
- render :edit
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement