class Pay::Paddle::Charge

Attributes

pay_charge[R]

Public Class Methods

new(pay_charge) click to toggle source
# File lib/pay/paddle/charge.rb, line 8
def initialize(pay_charge)
  @pay_charge = pay_charge
end

Public Instance Methods

charge() click to toggle source
# File lib/pay/paddle/charge.rb, line 12
def charge
  return unless customer.subscription
  payments = PaddlePay::Subscription::Payment.list({subscription_id: customer.subscription.processor_id})
  charges = payments.select { |p| p[:id].to_s == processor_id }
  charges.try(:first)
rescue ::PaddlePay::PaddlePayError => e
  raise Pay::Paddle::Error, e
end
refund!(amount_to_refund) click to toggle source
# File lib/pay/paddle/charge.rb, line 21
def refund!(amount_to_refund)
  return unless customer.subscription
  payments = PaddlePay::Subscription::Payment.list({subscription_id: customer.subscription.processor_id, is_paid: 1})
  if payments.count > 0
    PaddlePay::Subscription::Payment.refund(payments.last[:id], {amount: amount_to_refund})
    pay_charge.update(amount_refunded: amount_to_refund)
  else
    raise Error, "Payment not found"
  end
rescue ::PaddlePay::PaddlePayError => e
  raise Pay::Paddle::Error, e
end