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
|