3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'app/models/rails_trade/refund/paypal_refund.rb', line 3
def do_refund(params = {})
return unless can_refund?
sale = PayPal::SDK::REST::DataTypes::Sale.find(payment.payment_uuid)
params = params.merge({
amount: {
total: self.total_amount.to_s(:rounded, precision: 2),
currency: self.currency.upcase
}
})
result = sale.refund(params)
order.payment_status = 'refunded'
self.operator_id = params[:operator_id]
if result.success?
self.state = 'completed'
self.refunded_at = Time.now
self.class.transaction do
order.save!
self.save!
end
elsif result.error
self.update reason: result.error['message']
end
result
end
|