Module: Klarna::API::Methods::Reservation

Included in:
Klarna::API::Methods
Defined in:
lib/klarna/api/methods/reservation.rb

Instance Method Summary collapse

Instance Method Details

#activate_reservation(params) ⇒ Object

Activate purchases which have been previously reserved with the reserve_amount function.



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/klarna/api/methods/reservation.rb', line 51

def activate_reservation(params)
                           
  xmlrpc_params = [
    ::Klarna::API::PROTOCOL_VERSION,
    ::XMLRPC::Client::USER_AGENT,
    params[:reservation_id],
    params[:ocr] || '',
    params[:pno],
    params[:gender] || 0,
    params[:reference] || '',
    params[:reference_code] || '',
    params[:order_id_1],
    params[:order_id_2],
    params[:delivery_address],
    params[:billing_address],
    params[:client_ip] || '0.0.0.0',
    params[:flags] || 0,
    params[:currency],
    params[:country],
    params[:language],
    self.store_id,
    self.digest(params[:pno], params[:goods_list].map{ |goods| goods[:goods][:artno]+':'+goods[:qty].to_s } ),
    params[:pno_encoding],
    (params[:pclass] || ::Klarna::API::DEFAULTS[:PCLASS]),
    params[:goods_list],
    params[:comment] || '',
    params[:shipmentinfo] || { delay_adjust: 1 },
    params[:travelinfo] || [],
    params[:income_expense] || [::Klarna::API::DEFAULTS[:YSALARY]],
    params[:session_id] || [],
    params[:extra_info] || []
  ]
  
  xmlrpc_params = [xmlrpc_params] # Klarna needs all values to be in first param for activate_reservation only
  
  self.call(:activate_reservation, *xmlrpc_params)
end

#cancel_reservation(params) ⇒ Object

Cancel a reservation.



91
92
93
94
95
96
97
98
99
100
# File 'lib/klarna/api/methods/reservation.rb', line 91

def cancel_reservation(params)
  xmlrpc_params = [
    ::Klarna::API::PROTOCOL_VERSION,
    ::XMLRPC::Client::USER_AGENT,
    params[:reservation_id],
    self.store_id,
    self.digest(params[:reservation_id])
  ]
  self.call(:cancel_reservation, *xmlrpc_params)
end

#change_reservation(params) ⇒ Object

Change a reservation.



124
125
126
127
128
129
130
131
132
133
134
135
136
137
# File 'lib/klarna/api/methods/reservation.rb', line 124

def change_reservation(params)
  
  xmlrpc_params = [
    ::Klarna::API::PROTOCOL_VERSION,
    ::XMLRPC::Client::USER_AGENT,
    params[:reservation_id],
    params[:new_amount],
    self.store_id,
    self.digest(params[:reservation_id], params[:new_amount])
  ]
  self.call(:change_reservation, *xmlrpc_params).tap do |result|
    result = result.first
  end
end

#make_reservation_address(params) ⇒ Object Also known as: mk_reservation_address

Create addresses for arguments such as the activate_reservation function.



155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
# File 'lib/klarna/api/methods/reservation.rb', line 155

def make_reservation_address(params)
  {                              
    :email            => (params[:email] || ''),
    :telno            => (params[:telno] || ''),
    :cellno           => (params[:cellno] || ''),
    :fname            => (params[:fname] || ''),
    :lname            => (params[:lname] || ''),
    :company          => (params[:company] || ''),
    :careof           => (params[:careof] || ''),
    :street           => (params[:street] || ''),
    :zip              => (params[:zip] || ''),
    :city             => (params[:city] || ''),
    :country          => (::Klarna::API.id_for(:country, params[:country]) || ''),
    :house_number     => (params[:house_number] || ''),
    :house_extension  => (params[:house_extension] || '')
  }.with_indifferent_access
end

#reserve_amount(params) ⇒ Object

Reserve a purchase amount for a specific customer. The reservation is valid, by default, for 7 days. Pass cellphone no. instead of Pno for SMS payments.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/klarna/api/methods/reservation.rb', line 11

def reserve_amount(params)
  
  xmlrpc_params = [
    ::Klarna::API::PROTOCOL_VERSION,
    ::XMLRPC::Client::USER_AGENT,
    params[:pno],
    params[:gender] || 0,
    params[:amount],
    params[:reference] || '',
    params[:reference_code] || '',
    params[:order_id],
    params[:order_id],
    params[:delivery_address],
    params[:billing_address],
    params[:client_ip] || '0.0.0.0',
    params[:flags] || 0,
    params[:currency],
    params[:country],
    params[:language],
    self.store_id,
    self.digest(params[:pno], params[:amount]),
    params[:pno_encoding],
    (params[:pclass] || ::Klarna::API::DEFAULTS[:PCLASS]),
    params[:goods_list],
    params[:comment] || '',
    params[:shipmentinfo] || { delay_adjust: 1 },
    params[:travelinfo] || [],
    params[:income_expense] || [::Klarna::API::DEFAULTS[:YSALARY]],
    params[:bankinfo] || [],
    params[:session_id] || [],
    params[:extra_info] || []
  ]
  
  self.call(:reserve_amount, *xmlrpc_params).tap do |result|
    result = result.first
  end
end

#reserve_ocr_numbers(number_of_ocrs) ⇒ Object

Reserves one or more OCR numbers for your store.

Raises:

  • (NotImplementedError)


141
142
143
144
145
146
147
148
149
150
151
# File 'lib/klarna/api/methods/reservation.rb', line 141

def reserve_ocr_numbers(number_of_ocrs)
  # params = [
  #   ::Klarna::API::PROTOCOL_VERSION,
  #   ::XMLRPC::Client::USER_AGENT,
  #   number_of_ocrs,
  #   self.store_id,
  #   self.digest(number_of_ocrs)
  # ]
  # self.call(:reserve_ocr_nums, *params)
  raise NotImplementedError
end

#split_reservation(params) ⇒ Object

Split a reservation due to for example outstanding articles.



104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# File 'lib/klarna/api/methods/reservation.rb', line 104

def split_reservation(params)
  
  xmlrpc_params = [
    ::Klarna::API::PROTOCOL_VERSION,
    ::XMLRPC::Client::USER_AGENT,
    params[:reservation_id],
    params[:split_amount],
    params[:order_id_1],
    params[:order_id_2],
    params[:flags].to_i || 0,
    self.store_id,
    self.digest(params[:reservation_id], params[:split_amount])
  ]
  self.call(:split_reservation, *xmlrpc_params).tap do |result|
    result = result.first
  end
end