Class: Moltin::Resource::Checkout

Inherits:
Api::CrudResource show all
Defined in:
lib/moltin/resource/checkout.rb

Instance Attribute Summary collapse

Attributes inherited from Api::CrudResource

#data

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Api::CrudResource

all, #assign_attributes, attributes, create, #delete, find, find_by, #initialize, #method_missing, #model_name, #persisted?, #respond_to?, #route_key, search, #to_hash, #to_key, #to_model, #to_s

Constructor Details

This class inherits a constructor from Moltin::Api::CrudResource

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Moltin::Api::CrudResource

Instance Attribute Details

#gatewaysObject (readonly)

Returns the value of attribute gateways.



17
18
19
# File 'lib/moltin/resource/checkout.rb', line 17

def gateways
  @gateways
end

#shipping_methodsObject (readonly)

Returns the value of attribute shipping_methods.



18
19
20
# File 'lib/moltin/resource/checkout.rb', line 18

def shipping_methods
  @shipping_methods
end

Class Method Details

.process!(order_id, method, options) ⇒ Object



44
45
46
# File 'lib/moltin/resource/checkout.rb', line 44

def self.process!(order_id, method, options)
  Moltin::Api::Request.post("checkout/payment/#{method}/#{order_id}", options)
end

Instance Method Details

#requires_shipping?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/moltin/resource/checkout.rb', line 28

def requires_shipping?
  @response.result['shipping']['required']
end

#retrieveObject



20
21
22
23
24
25
26
# File 'lib/moltin/resource/checkout.rb', line 20

def retrieve
  @response = Moltin::Api::Request.get("carts/#{cart.identifier}/checkout")
  @gateways = Moltin::ResourceCollection.new 'Moltin::Resource::Gateway', @response.result['gateways'].map { |k, v| v }
  # raise @response.result['shipping']['methods'].to_yaml
  @shipping_methods = Moltin::ResourceCollection.new 'Moltin::Resource::ShippingMethod', @response.result['shipping']['methods']
  self
end

#saveObject



32
33
34
35
36
37
38
39
40
41
42
# File 'lib/moltin/resource/checkout.rb', line 32

def save
  data = {
    gateway: @data['gateway'],
    shipping: @data['shipping'],
    bill_to: (@data['billing_address'].data.compact if @data['billing_address']),
    ship_to: (@data['shipping_address'].data.compact if @data['shipping_address']) || "bill_to",
  }
  response = Moltin::Api::Request.post("carts/#{cart.identifier}/checkout", data)
  @order_id = response.result['id'] if response.success?
  response
end