Sha256: 4f8f035f45616fc83d4e0f98e81d9edf0117a270cf2bcb4a2e76809e061a44ff

Contents?: true

Size: 1.16 KB

Versions: 21

Compression:

Stored size: 1.16 KB

Contents

module Pay
  module Braintree
    class PaymentMethod
      attr_reader :pay_payment_method

      delegate :customer, :processor_id, to: :pay_payment_method

      def self.sync(id, object: nil, try: 0, retries: 1)
        object ||= Pay.braintree_gateway.payment_method.find(id)

        pay_customer = Pay::Customer.find_by(processor: :braintree, processor_id: object.customer_id)
        return unless pay_customer

        pay_customer.save_payment_method(object, default: object.default?)
      end

      def initialize(pay_payment_method)
        @pay_payment_method = pay_payment_method
      end

      # Sets payment method as default on Stripe
      def make_default!
        result = gateway.customer.update(customer.processor_id, default_payment_method_token: processor_id)
        raise Pay::Braintree::Error, result unless result.success?
        result.success?
      end

      # Remove payment method
      def detach
        result = gateway.payment_method.delete(processor_id)
        raise Pay::Braintree::Error, result unless result.success?
        result.success?
      end

      private

      def gateway
        Pay.braintree_gateway
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

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