class ZipMoney::Checkout

Attributes

params[RW]

Public Class Methods

new() click to toggle source

Initializes a ZipMoney::Checkout object

Returns ZipMoney::Checkout object

# File lib/zipMoney/api/checkout.rb, line 13
def initialize 
  @params         = Struct::CheckoutParams.new
  @params.order   = Struct::Order.new
  @params.billing_address  = Struct::Address.new
  @params.shipping_address = Struct::Address.new
  @params.consumer = Struct::Consumer.new
  @params.metadata = Struct::Metadata.new
  @params.version  = Struct::Version.new
  @params.order.detail =  Array.new
end

Public Instance Methods

do() click to toggle source

Performs the Checkout api call on zipMoney endpoint

Returns ZipMoney::Checkout object

# File lib/zipMoney/api/checkout.rb, line 27
def do  
  validate
  ZipMoney.api.checkout(self.params)
end
validate() click to toggle source

Performs the parameters validation

# File lib/zipMoney/api/checkout.rb, line 33
def validate

  raise ArgumentError, "Params emtpy" if @params.nil? 
  @errors = []
  @errors << 'charge must be provided' if @params.charge.nil? 
  @errors << 'currency_code must be provided' if @params.currency_code.nil? 
  @errors << 'order_id must be provided' if @params.order_id.nil? 
  @errors << 'order must be provided' if @params.order.nil? 
  @errors << 'order.id must be provided' if @params.order.id.nil? 
  @errors << 'order.total must be provided' if @params.order.total.nil? 
  @errors << 'order.shipping_value must be provided' if @params.order.shipping_value.nil? 
  @errors << 'order.tax must be provided' if @params.order.tax.nil? 
  @errors << 'order detail must be provided' unless @params.order.detail.length > 0 

  validate_item_details @params.order.detail if @params.order.detail.length > 0 

  raise ZipMoney::RequestError.new("Following error(s) occurred while making request, please resolve them to make the request: #{@errors}") if @errors.any?
end