Sha256: 107124038045bde7f39fa040f32041040e1a1f59a7b59f6fe2141b37ec6174f9

Contents?: true

Size: 1.26 KB

Versions: 41

Compression:

Stored size: 1.26 KB

Contents

module Braintree
  class ClientTokenGateway
    include BaseModule

    def initialize(gateway)
      @gateway = gateway
      @config = gateway.config
      @config.assert_has_access_token_or_keys
    end

    def generate(options={})
      _validate_options(options)

      options[:version] ||= ClientToken::DEFAULT_VERSION

      Util.verify_keys(ClientTokenGateway._generate_signature, options)

      params = {:client_token => options}
      result = @config.http.post("#{@config.base_merchant_path}/client_token", params)

      if result[:client_token]
        result[:client_token][:value]
      else
        raise ArgumentError, result[:api_error_response][:message]
      end
    end

    def self._generate_signature # :nodoc:
      [
        :address_id, :customer_id, :proxy_merchant_id, :merchant_account_id,
        :version,
        {:options => [:make_default, :verify_card, :fail_on_duplicate_payment_method]}
      ]
    end

    def _validate_options(options)
      [:make_default, :fail_on_duplicate_payment_method, :verify_card].each do |credit_card_option|
        if options[credit_card_option]
          raise ArgumentError.new("cannot specify #{credit_card_option} without a customer_id") unless options[:customer_id]
        end
      end
    end
  end
end

Version data entries

41 entries across 41 versions & 1 rubygems

Version Path
braintree-4.15.0 lib/braintree/client_token_gateway.rb
braintree-4.14.0 lib/braintree/client_token_gateway.rb
braintree-4.13.0 lib/braintree/client_token_gateway.rb
braintree-4.12.0 lib/braintree/client_token_gateway.rb
braintree-4.11.0 lib/braintree/client_token_gateway.rb
braintree-4.10.0 lib/braintree/client_token_gateway.rb
braintree-4.9.0 lib/braintree/client_token_gateway.rb
braintree-4.8.0 lib/braintree/client_token_gateway.rb
braintree-4.7.0 lib/braintree/client_token_gateway.rb
braintree-4.6.0 lib/braintree/client_token_gateway.rb
braintree-4.5.0 lib/braintree/client_token_gateway.rb
braintree-4.4.0 lib/braintree/client_token_gateway.rb
braintree-4.3.0 lib/braintree/client_token_gateway.rb
braintree-4.2.0 lib/braintree/client_token_gateway.rb
braintree-4.1.0 lib/braintree/client_token_gateway.rb
braintree-4.0.0 lib/braintree/client_token_gateway.rb
braintree-3.4.0 lib/braintree/client_token_gateway.rb
braintree-3.3.0 lib/braintree/client_token_gateway.rb
braintree-3.2.0 lib/braintree/client_token_gateway.rb
braintree-3.1.0 lib/braintree/client_token_gateway.rb