Advertisement
Guest User

Untitled

a guest
Oct 16th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.62 KB | None | 0 0
  1. class Order < ApplicationRecord
  2.   #...
  3.   def create_customer(params)
  4.     if !user.stripe_customer_token || user.stripe_customer_token.nil?
  5.  
  6.       begin
  7.         customer = Stripe::Customer.create(
  8.           description: "Customer for #{user.profile.first_name} #{user.profile.last_name} - #{user.email}",
  9.           email: "#{user.email}",
  10.           source: params['stripeToken']
  11.         )
  12.         if customer.id
  13.           user.stripe_customer_token = customer.id
  14.           user.save
  15.         end
  16.       rescue Stripe::CardError => e
  17.         logger.error "Error creating customer record #{e.message}"
  18.         self.errors.add :base, "There was a problem with your credit card. #{e.message}"
  19.         self.invalid_card = true
  20.  
  21.       rescue Stripe::InvalidRequestError => e
  22.         logger.error "Error while creating customer: #{e.message}"
  23.         self.errors.add :base, "There was a problem with your credit card. #{e.message}"
  24.         self.invalid_card = true
  25.  
  26.       rescue => e
  27.         logger.error "Error creating customer: #{e.message}"
  28.         self.errors.add :base, "Generic error occurred."
  29.         self.invalid_card = true
  30.  
  31.       end
  32.     end
  33.  
  34.  
  35.   end
  36.  
  37.  
  38.   def process_payment(params)
  39.     create_customer(params)
  40.     charge_customer_for_membership
  41.   end
  42.  
  43. end
  44.  
  45.  
  46. class OrdersController < ApplicationController
  47.   # ...
  48.   def update
  49.  
  50.     if params[:checkout] && @order.order_status.id == 1
  51.       @order.process_payment(params)
  52.       session[:order_id] = nil
  53.     end
  54.  
  55.     if @order.update(order_params)
  56.       redirect_to @order, notice: 'Order success.'
  57.     else
  58.       render :edit
  59.     end
  60.   end
  61.  
  62. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement