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

Version Path
pay-7.3.0 lib/pay/braintree/charge.rb
pay-7.2.1 lib/pay/braintree/charge.rb
pay-7.1.1 lib/pay/braintree/charge.rb
pay-7.1.0 lib/pay/braintree/charge.rb
pay-7.0.0 lib/pay/braintree/charge.rb
pay-6.8.1 lib/pay/braintree/charge.rb
pay-6.8.0 lib/pay/braintree/charge.rb
pay-6.7.2 lib/pay/braintree/charge.rb
pay-6.7.1 lib/pay/braintree/charge.rb
pay-6.7.0 lib/pay/braintree/charge.rb
pay-6.6.1 lib/pay/braintree/charge.rb
pay-6.6.0 lib/pay/braintree/charge.rb
pay-6.5.0 lib/pay/braintree/charge.rb
pay-6.4.0 lib/pay/braintree/charge.rb
pay-6.3.4 lib/pay/braintree/charge.rb
pay-6.3.3 lib/pay/braintree/charge.rb
pay-6.3.2 lib/pay/braintree/charge.rb
pay-6.3.1 lib/pay/braintree/charge.rb
pay-6.3.0 lib/pay/braintree/charge.rb
pay-6.2.4 lib/pay/braintree/charge.rb