klarna-xmlrpc 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +13 -0
  3. data/Gemfile +14 -0
  4. data/Guardfile +16 -0
  5. data/MIT-LICENSE +20 -0
  6. data/README.textile +139 -0
  7. data/Rakefile +22 -0
  8. data/TODO +30 -0
  9. data/examples/Gemfile +8 -0
  10. data/examples/config/initializer.rb +15 -0
  11. data/examples/console.rb +71 -0
  12. data/examples/public/images/klarna.png +0 -0
  13. data/examples/public/images/ruby.png +0 -0
  14. data/examples/views/_address.haml +22 -0
  15. data/examples/views/_articles.haml +21 -0
  16. data/examples/views/checkout_page_example.haml +2 -0
  17. data/examples/views/essential/add_transaction/_form.haml +32 -0
  18. data/examples/views/essential/add_transaction/result.haml +7 -0
  19. data/examples/views/essential/calculate_monthly_cost/_form.haml +16 -0
  20. data/examples/views/essential/calculate_monthly_cost/result.haml +7 -0
  21. data/examples/views/essential/get_addresses/_form.haml +9 -0
  22. data/examples/views/essential/get_addresses/result.haml +8 -0
  23. data/examples/views/index.haml +296 -0
  24. data/examples/views/layout.haml +48 -0
  25. data/examples/views/payment_terms_example.haml +102 -0
  26. data/examples/views/product_page_example.haml +2 -0
  27. data/examples/views/reservation/activate_reservation/_form.haml +54 -0
  28. data/examples/views/reservation/activate_reservation/result.haml +7 -0
  29. data/examples/views/reservation/cancel_reservation/_form.haml +8 -0
  30. data/examples/views/reservation/cancel_reservation/result.haml +7 -0
  31. data/examples/views/reservation/change_reservation/_form.haml +10 -0
  32. data/examples/views/reservation/change_reservation/result.haml +7 -0
  33. data/examples/views/reservation/reserve_amount/_form.haml +58 -0
  34. data/examples/views/reservation/reserve_amount/result.haml +7 -0
  35. data/examples/views/reservation/reserve_ocr_numbers/_form.haml +8 -0
  36. data/examples/views/reservation/reserve_ocr_numbers/result.haml +7 -0
  37. data/examples/views/reservation/split_reservation/_form.haml +14 -0
  38. data/examples/views/reservation/split_reservation/result.haml +7 -0
  39. data/examples/views/special/get_pclasses/_form.haml +8 -0
  40. data/examples/views/special/get_pclasses/result.haml +7 -0
  41. data/examples/views/special/invoice_address/_form.haml +8 -0
  42. data/examples/views/special/invoice_address/result.haml +7 -0
  43. data/examples/views/special/invoice_amount/_form.haml +8 -0
  44. data/examples/views/special/invoice_amount/result.haml +7 -0
  45. data/examples/views/special/is_invoice_paid/_form.haml +8 -0
  46. data/examples/views/special/is_invoice_paid/result.haml +7 -0
  47. data/examples/views/special/update_charge_amount/_form.haml +15 -0
  48. data/examples/views/special/update_charge_amount/result.haml +7 -0
  49. data/examples/views/special/update_goods_quantity/_form.haml +17 -0
  50. data/examples/views/special/update_goods_quantity/result.haml +7 -0
  51. data/examples/views/special/update_order_number/_form.haml +10 -0
  52. data/examples/views/special/update_order_number/result.haml +7 -0
  53. data/examples/views/useful/activate_invoice/_form.haml +9 -0
  54. data/examples/views/useful/activate_invoice/result.haml +7 -0
  55. data/examples/views/useful/credit_invoice/_form.haml +11 -0
  56. data/examples/views/useful/credit_invoice/result.haml +7 -0
  57. data/examples/views/useful/delete_invoice/_form.haml +9 -0
  58. data/examples/views/useful/delete_invoice/result.haml +7 -0
  59. data/examples/views/useful/email_invoice/_form.haml +9 -0
  60. data/examples/views/useful/email_invoice/result.haml +7 -0
  61. data/examples/views/useful/has_account/_form.haml +9 -0
  62. data/examples/views/useful/has_account/result.haml +7 -0
  63. data/examples/views/useful/return_amount/_form.haml +15 -0
  64. data/examples/views/useful/return_amount/result.haml +7 -0
  65. data/examples/views/useful/send_invoice/_form.haml +9 -0
  66. data/examples/views/useful/send_invoice/result.haml +7 -0
  67. data/examples/web.rb +349 -0
  68. data/klarna.gemspec +34 -0
  69. data/lib/klarna.rb +171 -0
  70. data/lib/klarna/api.rb +187 -0
  71. data/lib/klarna/api/client.rb +126 -0
  72. data/lib/klarna/api/constants.rb +647 -0
  73. data/lib/klarna/api/errors.rb +154 -0
  74. data/lib/klarna/api/methods.rb +16 -0
  75. data/lib/klarna/api/methods/cost_calculations.rb +134 -0
  76. data/lib/klarna/api/methods/invoicing.rb +304 -0
  77. data/lib/klarna/api/methods/reservation.rb +188 -0
  78. data/lib/klarna/api/methods/standard.rb +126 -0
  79. data/lib/klarna/version.rb +5 -0
  80. data/test/fixtures/api/companies.yml +97 -0
  81. data/test/fixtures/api/pclasses.yml +37 -0
  82. data/test/fixtures/api/persons.yml +144 -0
  83. data/test/fixtures/api/stores.yml +6 -0
  84. data/test/fixtures/klarna.yml +10 -0
  85. data/test/klarna/api/client_test.rb +288 -0
  86. data/test/klarna/api/errors_test.rb +34 -0
  87. data/test/klarna/api/methods/cost_calculations_test.rb +78 -0
  88. data/test/klarna/api/methods/invoicing_test.rb +409 -0
  89. data/test/klarna/api/methods/reservation_test.rb +66 -0
  90. data/test/klarna/api/methods/standard_test.rb +244 -0
  91. data/test/klarna/api_test.rb +184 -0
  92. data/test/klarna_test.rb +204 -0
  93. data/test/support/assertions_helper.rb +40 -0
  94. data/test/test_helper.rb +55 -0
  95. metadata +335 -0
@@ -0,0 +1,7 @@
1
+ %h2 Add Transaction
2
+
3
+ %h3 Result:
4
+ %p
5
+ = @result.inspect
6
+
7
+ = link_to "Back", :root
@@ -0,0 +1,16 @@
1
+ %h3 Calculate Monthly Cost
2
+ %p Calculates the monthly cost given a purchase sum and a account key for low amounts.
3
+
4
+ %form{:action => '/essential/calculate_monthly_cost'}
5
+ %p
6
+ = field "Sum:", :sum, :text, :size => "4", :value => "49"
7
+ %p
8
+ = field "Interest rate:", :interest_rate, :text, :size => "5", :value => "19.5"
9
+ %p
10
+ = field "Amount of months:", :months, :text, :size => "2", :value => "24"
11
+ %p
12
+ = field "Monthly cost:", :monthly_fee, :text, :size => "5", :value => "29"
13
+ %p
14
+ = currency_selector("Currency:")
15
+ %p
16
+ = submit_button "Calculate"
@@ -0,0 +1,7 @@
1
+ %h2 Monthly Cost
2
+
3
+ %h3 Result:
4
+ %p
5
+ = @result.inspect
6
+
7
+ = link_to "Back", :root
@@ -0,0 +1,9 @@
1
+ %h3 Get Addresses
2
+ %p Enter personal number to get customers addresses. (Swedish only)
3
+
4
+ %form{:action => '/essential/get_addresses'}
5
+ %p
6
+ = field "SSN:", :pno, :text, :size => "12", :value => "430415-8399"
7
+ *
8
+ %p
9
+ = submit_button "Get address"
@@ -0,0 +1,8 @@
1
+ %h2 Get Addresses
2
+
3
+ %h3 Result:
4
+ - @result.each do |address|
5
+ %p
6
+ = address.inspect
7
+
8
+ = link_to "Back", :root
@@ -0,0 +1,296 @@
1
+ %h1 API Methods
2
+ %p Here you can test the Klarna XML-RPC API for Ruby.
3
+
4
+ :javascript
5
+ var test_customers = {
6
+ /* Sweden */
7
+ 'karl': {
8
+ 'pno': '4304158399',
9
+ 'first_name': 'Karl',
10
+ 'last_name': 'Lidin',
11
+ 'street_address': 'Junibackg. 42',
12
+ 'postal_code': '23634',
13
+ 'city': 'Hollviken',
14
+ 'country': 'SE',
15
+ 'currency': 'SEK',
16
+ 'language': 'SV'
17
+ },
18
+ /* Sweden */
19
+ 'maud': {
20
+ 'pno': '5311096845',
21
+ 'first_name': 'Maud',
22
+ 'last_name': 'Johansson',
23
+ 'street_address': 'Köpmansgatan 7',
24
+ 'postal_code': '12149',
25
+ 'city': 'Johanneshov',
26
+ 'country': 'SE',
27
+ 'currency': 'SEK',
28
+ 'language': 'SV'
29
+ },
30
+ /* Finland */
31
+ 'suvi': {
32
+ 'pno': '2302468989',
33
+ 'first_name': 'Suvi',
34
+ 'last_name': 'Aurinkoinen',
35
+ 'street_address': 'Planeettatie 2',
36
+ 'postal_code': '01450',
37
+ 'city': 'Vantaa',
38
+ 'country': 'FI',
39
+ 'currency': 'EUR',
40
+ 'language': 'FI'
41
+ },
42
+ /* Finland */
43
+ 'mikael': {
44
+ 'pno': '010130887T',
45
+ 'first_name': 'Mikael',
46
+ 'last_name': 'Miehinen',
47
+ 'street_address': 'Tikkuritie 11',
48
+ 'postal_code': '01370',
49
+ 'city': 'Vantaa',
50
+ 'country': 'FI',
51
+ 'currency': 'EUR',
52
+ 'language': 'FI'
53
+ },
54
+ /* Norway */
55
+ 'petter': {
56
+ 'pno': '18106500157',
57
+ 'first_name': 'Petter',
58
+ 'last_name': 'Testmann',
59
+ 'street_address': 'Hundremeterskogen 100',
60
+ 'postal_code': '0563',
61
+ 'city': 'Oslo',
62
+ 'country': 'NO',
63
+ 'currency': 'NOK',
64
+ 'language': 'NO'
65
+ },
66
+ /* Norway */
67
+ 'petra': {
68
+ 'pno': '18106500076',
69
+ 'first_name': 'Petra',
70
+ 'last_name': 'Testdame',
71
+ 'street_address': 'Sofienberggate 56',
72
+ 'postal_code': '0563',
73
+ 'city': 'Oslo',
74
+ 'country': 'NO',
75
+ 'currency': 'NOK',
76
+ 'language': 'NO'
77
+ },
78
+ /* Denmark */
79
+ 'rasmus': {
80
+ 'pno': '0505610059',
81
+ 'first_name': 'Rasmus Jens-Peter',
82
+ 'last_name': 'Lybert',
83
+ 'street_address': 'Godthåbvej 8,-2',
84
+ 'postal_code': '3900',
85
+ 'city': 'Godthåb',
86
+ 'country': 'DK',
87
+ 'currency': 'DKK',
88
+ 'language': 'DA'
89
+ },
90
+ /* Germany */
91
+ 'uno': {
92
+ 'pno': '070719601',
93
+ 'first_name': 'Uno',
94
+ 'last_name': 'Vier',
95
+ 'street_address': 'Hellersbergstrasse',
96
+ 'postal_code': '41460',
97
+ 'city': 'Neuss',
98
+ 'country': 'DE',
99
+ 'currency': 'EUR',
100
+ 'language': 'DE'
101
+ }
102
+ }
103
+ var test_companies = {
104
+ /* Sweden */
105
+ 'kalle_anka': {
106
+ 'pno': '27968880',
107
+ 'first_name': '',
108
+ 'last_name': 'Kalle Anka AB',
109
+ 'street_address': 'Storgatan 1',
110
+ 'postal_code': '12345',
111
+ 'city': 'Ankeborg',
112
+ 'country': 'SE',
113
+ 'currency': 'SEK',
114
+ 'language': 'SV'
115
+ },
116
+ /* Sweden */
117
+ 'bjornligan': {
118
+ 'pno': '6720217931',
119
+ 'first_name': '',
120
+ 'last_name': 'Björnligan AB',
121
+ 'street_address': 'Fulgatan 1',
122
+ 'postal_code': '12345',
123
+ 'city': 'Ankeborg',
124
+ 'country': 'SE',
125
+ 'currency': 'SEK',
126
+ 'language': 'SV'
127
+ },
128
+ /* Finland */
129
+ 'porin': {
130
+ 'pno': '10891871',
131
+ 'first_name': '',
132
+ 'last_name': 'Porin Mies-Laulu r.y.',
133
+ 'street_address': 'Vapaudenkatu 10',
134
+ 'postal_code': '28100',
135
+ 'city': 'Pori',
136
+ 'country': 'FI',
137
+ 'currency': 'EUR',
138
+ 'language': 'FI'
139
+ },
140
+ /* Finland */
141
+ 'mankalan': {
142
+ 'pno': '07527622',
143
+ 'first_name': '',
144
+ 'last_name': 'Mankalan Perhekodit Oy',
145
+ 'street_address': 'Porrassalmenkatu 19 B',
146
+ 'postal_code': '50100',
147
+ 'city': 'Parikkala',
148
+ 'country': 'FI',
149
+ 'currency': 'EUR',
150
+ 'language': 'FI'
151
+ },
152
+ /* Denmark */
153
+ 'onbase': {
154
+ 'pno': '27968880',
155
+ 'first_name': '',
156
+ 'last_name': 'Onbase ApS',
157
+ 'street_address': 'Centrumgaden 37',
158
+ 'postal_code': '2750',
159
+ 'city': 'Ballerup',
160
+ 'country': 'DK',
161
+ 'currency': 'DKK',
162
+ 'language': 'DA'
163
+ }
164
+ };
165
+
166
+ function loadFormValues(values) {
167
+ document.add_transaction.pno.value = values['pno'];
168
+ document.add_transaction.first_name.value = values['first_name'];
169
+ document.add_transaction.last_name.value = values['last_name'];
170
+ document.add_transaction.street_address.value = values['street_address'];
171
+ document.add_transaction.postal_code.value = values['postal_code'];
172
+ document.add_transaction.city.value = values['city'];
173
+ document.add_transaction.country.value = values['country'];
174
+ document.add_transaction.currency.value = values['currency'];
175
+ document.add_transaction.lang.value = values['language'];
176
+
177
+ document.reserve_amount.pno.value = values['pno'];
178
+ document.reserve_amount.delivery_first_name.value = values['first_name'];
179
+ document.reserve_amount.delivery_last_name.value = values['last_name'];
180
+ document.reserve_amount.delivery_street_address.value = values['street_address'];
181
+ document.reserve_amount.delivery_postal_code.value = values['postal_code'];
182
+ document.reserve_amount.delivery_city.value = values['city'];
183
+ document.reserve_amount.delivery_country.value = values['country'];
184
+ document.reserve_amount.invoice_first_name.value = values['first_name'];
185
+ document.reserve_amount.invoice_last_name.value = values['last_name'];
186
+ document.reserve_amount.invoice_street_address.value = values['street_address'];
187
+ document.reserve_amount.invoice_postal_code.value = values['postal_code'];
188
+ document.reserve_amount.invoice_city.value = values['city'];
189
+ document.reserve_amount.invoice_country.value = values['country'];
190
+ document.reserve_amount.country.value = values['country'];
191
+ document.reserve_amount.currency.value = values['currency'];
192
+ document.reserve_amount.lang.value = values['language'];
193
+ document.reserve_amount.pno_encoding.value = values['pno_encoding'] || values['country'];
194
+
195
+ document.active_reservation.pno.value = values['pno'];
196
+ document.active_reservation.delivery_first_name.value = values['first_name'];
197
+ document.active_reservation.delivery_last_name.value = values['last_name'];
198
+ document.active_reservation.delivery_street_address.value = values['street_address'];
199
+ document.active_reservation.delivery_postal_code.value = values['postal_code'];
200
+ document.active_reservation.delivery_city.value = values['city'];
201
+ document.active_reservation.delivery_country.value = values['country'];
202
+ document.active_reservation.invoice_first_name.value = values['first_name'];
203
+ document.active_reservation.invoice_last_name.value = values['last_name'];
204
+ document.active_reservation.invoice_street_address.value = values['street_address'];
205
+ document.active_reservation.invoice_postal_code.value = values['postal_code'];
206
+ document.active_reservation.invoice_city.value = values['city'];
207
+ document.active_reservation.invoice_country.value = values['country'];
208
+ document.active_reservation.country.value = values['country'];
209
+ document.active_reservation.currency.value = values['currency'];
210
+ document.active_reservation.lang.value = values['language'];
211
+ document.active_reservation.pno_encoding.value = values['pno_encoding'] || values['country'];
212
+ }
213
+
214
+ function setFormValues(name) {
215
+ var values = test_customers[name] || test_companies[name];
216
+ loadFormValues(values);
217
+ }
218
+
219
+ %h2 Test persons
220
+ %strong Sweden:
221
+ = button("Karl", "setFormValues('karl')")
222
+ = button("Maud", "setFormValues('maud')")
223
+ = button("Kalle Anka AB", "setFormValues('kalle_anka')")
224
+ = button("Björnligan AB", "setFormValues('bjornligan')")
225
+ %br
226
+ %strong Finland:
227
+ = button("Suvi", "setFormValues('suvi')")
228
+ = button("Mikael", "setFormValues('mikael')")
229
+ = button("Porin", "setFormValues('porin')")
230
+ = button("Mankalan", "setFormValues('mankalan')")
231
+ %br
232
+ %strong Denmark:
233
+ = button("Rasmus", "setFormValues('rasmus')")
234
+ = button("Onbase", "setFormValues('onbase')")
235
+ %br
236
+ %strong Norway:
237
+ = button("Petter", "setFormValues('petter')")
238
+ = button("Petra", "setFormValues('petra')")
239
+ %br
240
+ %strong Germany:
241
+ = button("Uno", "setFormValues('uno')")
242
+
243
+ %h2 A. Essential
244
+ %section
245
+ = partial(:essential, :get_addresses, :form)
246
+ %hr
247
+ = partial(:essential, :calculate_monthly_cost, :form)
248
+ %hr
249
+ = partial(:essential, :add_transaction, :form)
250
+
251
+ %h2 B. Invoicing
252
+ %section
253
+ = partial(:useful, :activate_invoice, :form)
254
+ %hr
255
+ = partial(:useful, :credit_invoice, :form)
256
+ %hr
257
+ = partial(:useful, :return_amount, :form)
258
+ %hr
259
+ = partial(:useful, :delete_invoice, :form)
260
+ %hr
261
+ = partial(:useful, :email_invoice, :form)
262
+ %hr
263
+ = partial(:useful, :send_invoice, :form)
264
+ %hr
265
+ = partial(:useful, :has_account, :form)
266
+
267
+ %h2 C. Special
268
+ %section
269
+ = partial(:special, :update_goods_quantity, :form)
270
+ %hr
271
+ = partial(:special, :update_charge_amount, :form)
272
+ %hr
273
+ = partial(:special, :update_order_number, :form)
274
+ %hr
275
+ = partial(:special, :invoice_address, :form)
276
+ %hr
277
+ = partial(:special, :invoice_amount, :form)
278
+ %hr
279
+ = partial(:special, :is_invoice_paid, :form)
280
+ %hr
281
+ = partial(:special, :get_pclasses, :form)
282
+ %hr
283
+
284
+ %h2 D. Reservation
285
+ %section
286
+ = partial(:reservation, :reserve_amount, :form)
287
+ %hr
288
+ = partial(:reservation, :activate_reservation, :form)
289
+ %hr
290
+ = partial(:reservation, :cancel_reservation, :form)
291
+ %hr
292
+ = partial(:reservation, :change_reservation, :form)
293
+ %hr
294
+ = partial(:reservation, :split_reservation, :form)
295
+ %hr
296
+ = partial(:reservation, :reserve_ocr_numbers, :form)
@@ -0,0 +1,48 @@
1
+ !!! 5
2
+ %html
3
+ %head
4
+ %title Klarna API Test (Ruby)
5
+ %meta{:'http-equiv' => 'Content-Type', :content => 'text/html; charset=utf-8'}
6
+ %style
7
+ :sass
8
+ body
9
+ padding: 0.3em 0.5em
10
+ font:
11
+ family: helvetica
12
+ size: 90%
13
+ h2
14
+ border-bottom: 1px solid #ccc
15
+ padding-bottom: 0.2em
16
+ margin:
17
+ top: 1.5em
18
+ bottom: 1em
19
+ form
20
+ font-size: 80%
21
+ label
22
+ font-weight: bold
23
+ hr
24
+ border: none
25
+ border-bottom: 1px dotted #ccc
26
+ section
27
+ padding-left: 2em
28
+ th
29
+ text-align: left
30
+ %body
31
+ %header
32
+ #logo
33
+ %img{:src => "/images/klarna.png"}
34
+ %img{:src => "/images/ruby.png"}
35
+
36
+ %nav
37
+ %p
38
+ %strong Examples:
39
+ = link_to "API Methods", :root
40
+ = "|"
41
+ = link_to "Product Page", :product_page_example
42
+ = "|"
43
+ = link_to "Checkout Page", :checkout_page_example
44
+ = "|"
45
+ = link_to "Payment Terms", :payment_terms_example
46
+
47
+ #content
48
+ = yield
@@ -0,0 +1,102 @@
1
+ %h1 Invoice & Part-payment Terms
2
+ %p It is very important that invoice and part payment terms are correctly shown in the webshop. Both invoice and part payment terms has to be shown in your terms and condition page.
3
+
4
+ %h2 Sweden
5
+ %p
6
+ Invoice terms:
7
+ = link_to "https://online.klarna.com/villkor.yaws?eid=2&charge=5", "https://online.klarna.com/villkor.yaws?eid=2&charge=5"
8
+ *
9
+ %p
10
+ Account information:
11
+ = link_to "https://online.klarna.com/account_se.yaws?eid=2", "https://online.klarna.com/account_se.yaws?eid=2"
12
+ **
13
+ %p
14
+ Account terms:
15
+ = link_to "http://klarna.se/kontovillkor.pdf", "http://klarna.se/kontovillkor.pdf"
16
+ %p
17
+ Mobile terms:
18
+ = link_to "https://online.klarna.com/mobile_terms_se.yaws", "https://online.klarna.com/mobile_terms_se.yaws"
19
+ %p
20
+ Homepage:
21
+ = link_to "http://klarna.se", "http://klarna.se"
22
+ %p
23
+ Lowest amount to pay:
24
+ %strong 50 SEK/month
25
+
26
+ %h2 Norway
27
+ %p
28
+ Invoice terms:
29
+ = link_to "https://online.klarna.com/villkor_no.yaws?eid=2&charge=5", "https://online.klarna.com/villkor_no.yaws?eid=2&charge=5"
30
+ *
31
+ %p
32
+ Account information:
33
+ = link_to "https://online.klarna.com/account_no.yaws?eid=2", "https://online.klarna.com/account_no.yaws?eid=2"
34
+ **
35
+ %p
36
+ Account terms:
37
+ = link_to "http://klarna.no/kontovilkar.pdf", "http://klarna.no/kontovilkar.pdf"
38
+ %p
39
+ Homepage:
40
+ = link_to "http://klarna.no", "http://klarna.no"
41
+ %p
42
+ Lowest amount to pay:
43
+ %strong 95 NOK/month
44
+
45
+
46
+ %h2 Finland
47
+ %p
48
+ Invoice terms:
49
+ = link_to "https://online.klarna.com/villkor_fi.yaws?eid=2&charge=5", "https://online.klarna.com/villkor_fi.yaws?eid=2&charge=5"
50
+ *
51
+ %p
52
+ Account information:
53
+ = link_to "https://online.klarna.com/account_fi.yaws?eid=2", "https://online.klarna.com/account_fi.yaws?eid=2"
54
+ **
55
+ %p
56
+ Account terms:
57
+ = link_to "http://klarna.com/klarna-tiliehdot.pdf", "http://klarna.com/klarna-tiliehdot.pdf"
58
+ %p
59
+ Homepage:
60
+ = link_to "http://klarna.fi", "http://klarna.fi"
61
+ %p
62
+ Lowest amount to pay:
63
+ %strong 8,95 EUR/month
64
+
65
+
66
+ %h2 Denmark
67
+ %p
68
+ Invoice terms:
69
+ = link_to "https://online.klarna.com/villkor_dk.yaws?eid=2&charge=5", "https://online.klarna.com/villkor_dk.yaws?eid=2&charge=5"
70
+ *
71
+ %p
72
+ Account information:
73
+ = link_to "https://online.klarna.com/account_dk.yaws?eid=2", "https://online.klarna.com/account_dk.yaws?eid=2"
74
+ **
75
+ %p
76
+ Account terms:
77
+ = link_to "http://klarna.dk/kontovilkar.pdf", "http://klarna.dk/kontovilkar.pdf"
78
+ %p
79
+ Homepage:
80
+ = link_to "http://klarna.dk", "http://klarna.dk"
81
+ %p
82
+ Lowest amount to pay:
83
+ %strong 89 DKK/month
84
+
85
+ %h2 Germany
86
+ %p
87
+ Invoice terms:
88
+ = link_to "https://online.klarna.com/villkor_de.yaws?eid=2&charge=5", "https://online.klarna.com/villkor_de.yaws?eid=2&charge=5"
89
+ *
90
+ %p
91
+ Account information:
92
+ = link_to "https://online.klarna.com/account_de.yaws?eid=2", "https://online.klarna.com/account_de.yaws?eid=2"
93
+ **
94
+ %p
95
+ Account terms
96
+ = link_to "http://klarna.se/pdf/Vertragsbedingungen.pdf", "http://klarna.se/pdf/Vertragsbedingungen.pdf"
97
+ %p
98
+ Homepage:
99
+ = link_to "http://klarna.de", "http://klarna.de"
100
+ %p
101
+ Lowest amount to pay:
102
+ %strong 6,95 EUR/month