Sha256: 7f97d4420918836d7d07232e02d51079b411075a6f676604be633abfc0f4fb91

Contents?: true

Size: 1.59 KB

Versions: 4

Compression:

Stored size: 1.59 KB

Contents

Spree::Order.class_eval do

  def self.process_razorpayment(params, order)
    payment_method = Spree::PaymentMethod.find(params[:payment_method_id])
    setup_razorpay(payment_method)
    razorpay_pmnt_obj = Razorpay::Payment.fetch(params[:razorpay_payment_id])
    status = razorpay_pmnt_obj.status
    payment = payment(order, razorpay_pmnt_obj, payment_method)
    if status == "authorized"
      razorpay_pmnt_obj.capture({ amount: order.amount_in_paise })
      razorpay_pmnt_obj = Razorpay::Payment.fetch(params[:razorpay_payment_id])
      payment.update(response_code: razorpay_pmnt_obj.status)
      razorpay_pmnt_obj.status
    else
      raise StandardError, 'Unable to capture payment'
    end
  end

  def amount_in_paise
    (amount.to_f * 100).to_i
  end

  def self.setup_razorpay(payment_method)
    Razorpay.setup(payment_method.preferences[:key_id], payment_method.preferences[:key_secret])
  end

  def self.payment(order, payment_object, payment_method)
    order.payments.create!(
      source: Spree::RazorpayCheckout.create(
        order_id: order.id,
        razorpay_payment_id: payment_object.id,
        status: payment_object.status,
        payment_method: payment_object.method,
        card_id: payment_object.card_id,
        bank: payment_object.bank,
        wallet: payment_object.wallet,
        vpa: payment_object.vpa,
        email: payment_object.email,
        contact: payment_object.contact
        ),
      payment_method: payment_method,
      amount: order.total,
      response_code: payment_object.status
      )
  end

  private_class_method :setup_razorpay, :payment
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
spree_razorpay-0.2.3 app/models/spree/order_decorator.rb
spree_razorpay-0.2.2 app/models/spree/order_decorator.rb
spree_razorpay-0.2.1 app/models/spree/order_decorator.rb
spree_razorpay-0.2.0 app/models/spree/order_decorator.rb