Module: RailsTrade::Refund

Extended by:
ActiveSupport::Concern
Included in:
Refund
Defined in:
app/models/rails_trade/refund.rb

Defined Under Namespace

Modules: AlipayRefund, BankRefund, HandRefund, PaypalRefund, StripeRefund, WxpayRefund

Instance Method Summary collapse

Instance Method Details

#can_refund?Boolean

Returns:

  • (Boolean)


70
71
72
# File 'app/models/rails_trade/refund.rb', line 70

def can_refund?
  self.init? && ['all_paid', 'part_paid', 'refunding'].include?(order.payment_status)
end

#currency_symbolObject



43
44
45
# File 'app/models/rails_trade/refund.rb', line 43

def currency_symbol
  Money::Currency.new(self.currency).symbol
end

#deny_refund(params = {}) ⇒ Object



59
60
61
62
63
64
65
66
67
68
# File 'app/models/rails_trade/refund.rb', line 59

def deny_refund(params = {})
  order.payment_status = 'denied'

  self.state = 'failed'

  self.class.transaction do
    order.save!
    self.save!
  end
end

#do_refund(params = {}) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
# File 'app/models/rails_trade/refund.rb', line 47

def do_refund(params = {})
  order.payment_status = 'refunded'

  self.state = 'completed'
  self.refunded_at = Time.now

  self.class.transaction do
    order.save!
    self.save!
  end
end

#valid_total_amountObject

微信是同一个批次号未退款成功可重复申请 支付宝批次号只能当天有效



37
38
39
40
41
# File 'app/models/rails_trade/refund.rb', line 37

def valid_total_amount
  if self.new_record? && total_amount > payment.total_amount
    self.errors.add :total_amount, 'more then order received amount!'
  end
end