Sha256: aa72aec9e1d861ea3b8b554ca24c1d4db59d6cb4016a53372527cffeec88db4f

Contents?: true

Size: 1.15 KB

Versions: 46

Compression:

Stored size: 1.15 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 ||= 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

46 entries across 46 versions & 1 rubygems

Version Path
pay-6.2.2 lib/pay/braintree/payment_method.rb
pay-6.2.1 lib/pay/braintree/payment_method.rb
pay-6.2.0 lib/pay/braintree/payment_method.rb
pay-6.1.2 lib/pay/braintree/payment_method.rb
pay-6.1.1 lib/pay/braintree/payment_method.rb
pay-6.1.0 lib/pay/braintree/payment_method.rb
pay-6.0.3 lib/pay/braintree/payment_method.rb
pay-6.0.2 lib/pay/braintree/payment_method.rb
pay-6.0.1 lib/pay/braintree/payment_method.rb
pay-6.0.0 lib/pay/braintree/payment_method.rb
pay-5.0.4 lib/pay/braintree/payment_method.rb
pay-5.0.3 lib/pay/braintree/payment_method.rb
pay-5.0.2 lib/pay/braintree/payment_method.rb
pay-5.0.1 lib/pay/braintree/payment_method.rb
pay-5.0.0 lib/pay/braintree/payment_method.rb
pay-4.2.1 lib/pay/braintree/payment_method.rb
pay-4.2.0 lib/pay/braintree/payment_method.rb
pay-4.1.1 lib/pay/braintree/payment_method.rb
pay-4.1.0 lib/pay/braintree/payment_method.rb
pay-4.0.4 lib/pay/braintree/payment_method.rb