Module: RailsTrade::Refund::StripeRefund

Included in:
StripeRefund
Defined in:
app/models/rails_trade/refund/stripe_refund.rb

Instance Method Summary collapse

Instance Method Details

#do_refund(params = {}) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'app/models/rails_trade/refund/stripe_refund.rb', line 3

def do_refund(params = {})
  return unless can_refund?

  refund = Stripe::Refund.create(charge: payment.payment_uuid, amount: (self.total_amount * 100).to_i)

  order.payment_status = 'refunded'

  self.operator_id = params[:operator_id]
  self.refund_uuid = refund.id

  if refund.status == 'succeeded'
    self.state = 'completed'
    self.refunded_at = Time.now
    self.class.transaction do
      order.save!
      self.save!
    end
  else
    self.update reason: 'failed'
  end
  refund
end