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.



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
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/klarna/api/methods/reservation.rb', line 62

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.



102
103
104
105
106
107
108
109
110
111
# File 'lib/klarna/api/methods/reservation.rb', line 102

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.



135
136
137
138
139
140
141
142
143
144
145
146
147
148
# File 'lib/klarna/api/methods/reservation.rb', line 135

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

#check_order_status(id) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
# File 'lib/klarna/api/methods/reservation.rb', line 49

def check_order_status(id)
  xmlrpc_params = [
    ::Klarna::API::PROTOCOL_VERSION,
    ::XMLRPC::Client::USER_AGENT,
    self.store_id.to_i,
    self.digest(id.to_s),
    id.to_s,
    0
  ]
  self.call(:check_order_status, *xmlrpc_params)
end

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

Create addresses for arguments such as the activate_reservation function.



166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
# File 'lib/klarna/api/methods/reservation.rb', line 166

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)


152
153
154
155
156
157
158
159
160
161
162
# File 'lib/klarna/api/methods/reservation.rb', line 152

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.



115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/klarna/api/methods/reservation.rb', line 115

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