Class: CCBill::DynamicPricing

Inherits:
Object
  • Object
show all
Defined in:
lib/ccbill_ruby/dynamic_pricing.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ DynamicPricing

Returns a new instance of DynamicPricing.



7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/ccbill_ruby/dynamic_pricing.rb', line 7

def initialize(options = {})
  self.config = CCBill.configuration

  fail_on_price_set(options)

  modified_options = modify_params(options)

  self.variables = {
    account:        config.,
    sub_account:    config.,
    currency_code:  config.default_currency
  }.merge(modified_options)
end

Instance Attribute Details

#configObject

Returns the value of attribute config.



5
6
7
# File 'lib/ccbill_ruby/dynamic_pricing.rb', line 5

def config
  @config
end

#errorsObject

Returns the value of attribute errors.



5
6
7
# File 'lib/ccbill_ruby/dynamic_pricing.rb', line 5

def errors
  @errors
end

#variablesObject

Returns the value of attribute variables.



5
6
7
# File 'lib/ccbill_ruby/dynamic_pricing.rb', line 5

def variables
  @variables
end

Instance Method Details

#urlObject



21
22
23
24
25
26
27
# File 'lib/ccbill_ruby/dynamic_pricing.rb', line 21

def url
  raise DynamicPricingError.new(self.errors.join(' ')) if !valid?

  variables[:form_digest] = encode_form_digest

  config.endpoint + config.flexform_id + '?' + URI.encode_www_form(transformed_variables)
end

#valid?Boolean

Returns:

  • (Boolean)


29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/ccbill_ruby/dynamic_pricing.rb', line 29

def valid?
  self.errors = []

  required_fields.each do |field|
    self.errors << "#{field} is required." if !variables[field]
  end

  unless (config.min_price.to_f..config.max_price.to_f).include?(variables[:initial_price].to_f)
    self.errors << "Initial price must be between $#{config.min_price} and $#{config.max_price}."
  end

  if recurring?
    unless (config.min_price.to_f..config.max_price.to_f).include?(variables[:recurring_price].to_f)
      self.errors << "Recurring price must be between $#{config.min_price} and $#{config.max_price}."
    end
  end

  self.errors.empty?
end