Sha256: 1e2717af3e1cb360c392166e4ef5fad50f67d3675f413dcd0b65a26678a8331d
Contents?: true
Size: 1.18 KB
Versions: 24
Compression:
Stored size: 1.18 KB
Contents
module Pay module Braintree class Charge attr_reader :pay_charge delegate :processor_id, to: :pay_charge def self.sync(charge_id, object: nil, try: 0, retries: 1) object ||= Pay.braintree_gateway.transaction.find(charge_id) pay_customer = Pay::Customer.find_by(processor: :braintree, processor_id: object.customer_details.id) return unless pay_customer pay_customer.save_transaction(object) rescue ActiveRecord::RecordInvalid, ActiveRecord::RecordNotUnique try += 1 if try <= retries sleep 0.1 retry else raise end end def initialize(pay_charge) @pay_charge = pay_charge end def charge Pay.braintree_gateway.transaction.find(processor_id) rescue ::Braintree::Braintree::Error => e raise Pay::Braintree::Error, e end def refund!(amount_to_refund) Pay.braintree_gateway.transaction.refund(processor_id, amount_to_refund / 100.0) pay_charge.update(amount_refunded: amount_to_refund) rescue ::Braintree::BraintreeError => e raise Pay::Braintree::Error, e end end end end
Version data entries
24 entries across 24 versions & 1 rubygems