ipizza 0.6.1 → 0.7.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +21 -13
- data/README.markdown +9 -25
- data/ipizza.gemspec +2 -1
- data/lib/ipizza.rb +1 -0
- data/lib/ipizza/config.rb +1 -1
- data/lib/ipizza/provider.rb +4 -0
- data/lib/ipizza/provider/krediidipank.rb +50 -0
- data/lib/ipizza/version.rb +1 -1
- data/spec/ipizza/provider_spec.rb +9 -0
- metadata +20 -5
data/Gemfile.lock
CHANGED
@@ -1,22 +1,28 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ipizza (0.
|
4
|
+
ipizza (0.7.1)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: http://rubygems.org/
|
8
8
|
specs:
|
9
|
-
|
9
|
+
coderay (1.0.8)
|
10
10
|
diff-lcs (1.1.2)
|
11
|
-
guard (
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
11
|
+
guard (1.6.1)
|
12
|
+
listen (>= 0.6.0)
|
13
|
+
lumberjack (>= 1.0.2)
|
14
|
+
pry (>= 0.9.10)
|
15
|
+
thor (>= 0.14.6)
|
16
|
+
guard-rspec (1.1.0)
|
17
|
+
guard (>= 1.1)
|
18
|
+
listen (0.7.1)
|
19
|
+
lumberjack (1.0.2)
|
20
|
+
method_source (0.8.1)
|
21
|
+
pry (0.9.10)
|
22
|
+
coderay (~> 1.0.5)
|
23
|
+
method_source (~> 0.8)
|
24
|
+
slop (~> 3.3.1)
|
25
|
+
rb-fsevent (0.9.1)
|
20
26
|
rspec (2.6.0)
|
21
27
|
rspec-core (~> 2.6.0)
|
22
28
|
rspec-expectations (~> 2.6.0)
|
@@ -25,12 +31,14 @@ GEM
|
|
25
31
|
rspec-expectations (2.6.0)
|
26
32
|
diff-lcs (~> 1.1.2)
|
27
33
|
rspec-mocks (2.6.0)
|
28
|
-
|
34
|
+
slop (3.3.3)
|
35
|
+
thor (0.16.0)
|
29
36
|
|
30
37
|
PLATFORMS
|
31
38
|
ruby
|
32
39
|
|
33
40
|
DEPENDENCIES
|
34
|
-
guard
|
41
|
+
guard-rspec
|
35
42
|
ipizza!
|
43
|
+
rb-fsevent
|
36
44
|
rspec (~> 2.6.0)
|
data/README.markdown
CHANGED
@@ -1,14 +1,12 @@
|
|
1
1
|
Implements iPizza protocol to communicate with Estonian Banks.
|
2
2
|
|
3
|
-
Usage
|
4
|
-
=====
|
3
|
+
# Usage
|
5
4
|
|
6
5
|
Add gem dependency in your `Gemfile` and install the gem:
|
7
6
|
|
8
7
|
gem 'ipizza'
|
9
8
|
|
10
|
-
Configuration
|
11
|
-
=============
|
9
|
+
# Configuration
|
12
10
|
|
13
11
|
Configuration can be made in two different ways, using `Ipizza::Config.configure` block or loading configuration properties from YAML file.
|
14
12
|
|
@@ -25,8 +23,7 @@ At any time, configuration can be modified with `Ipizza::Config.configure` block
|
|
25
23
|
c.swedbank_service_url = 'http://foo.bar/swedbank'
|
26
24
|
end
|
27
25
|
|
28
|
-
Configuration parameters
|
29
|
-
------------------------
|
26
|
+
## Configuration parameters
|
30
27
|
|
31
28
|
swedbank:
|
32
29
|
service_url: http://foo.bar/swedbank
|
@@ -49,8 +46,7 @@ Configuration parameters
|
|
49
46
|
|
50
47
|
Please note that currently only ISO-8859-4 encoding is supported with Swedbank. UTF-8 works well with other payment providers.
|
51
48
|
|
52
|
-
Payment requests
|
53
|
-
----------------
|
49
|
+
## Payment requests
|
54
50
|
|
55
51
|
### Building request
|
56
52
|
|
@@ -60,8 +56,7 @@ Payment requests
|
|
60
56
|
)
|
61
57
|
request = Ipizza::Provider::Swedbank.new.payment_request(@payment)
|
62
58
|
|
63
|
-
Authentication requests
|
64
|
-
-----------------------
|
59
|
+
## Authentication requests
|
65
60
|
|
66
61
|
### Building request
|
67
62
|
|
@@ -72,33 +67,22 @@ Authentication requests
|
|
72
67
|
response = Ipizza::Provider::Swedbank.new.authentication_response({'VK_PARAM_1' => 'VALUE 1', ...})
|
73
68
|
response.valid?
|
74
69
|
|
75
|
-
Gateway specifications
|
76
|
-
======================
|
70
|
+
# Gateway specifications
|
77
71
|
|
78
72
|
This library currently works with four Estonian Banks. Here are their respective interface specifications:
|
79
73
|
|
80
74
|
* [Swedbank](https://www.swedbank.ee/static/pdf/business/d2d/paymentcollection/info_banklink_techspec_est.pdf)
|
81
75
|
* [SEB](http://www.seb.ee/ari/maksete-kogumine/maksete-kogumine-internetis/tehniline-spetsifikatsioon)
|
82
76
|
* [Sampo](http://www.sampopank.ee/et/14732.html)
|
77
|
+
* [Krediidipank](http://www.krediidipank.ee/business/settlements/bank-link/tehniline_kirjeldus.pdf)
|
83
78
|
* [Nordea](http://www.nordea.ee/Teenused+ärikliendile/E-lahendused/787802.html)
|
84
79
|
|
85
|
-
Helpful links
|
86
|
-
=============
|
80
|
+
# Helpful links
|
87
81
|
|
88
82
|
* [Repository](http://github.com/priithaamer/ipizza)
|
89
83
|
* [Issue tracker](http://github.com/priithaamer/ipizza/issues)
|
90
84
|
|
91
|
-
|
92
|
-
====
|
93
|
-
|
94
|
-
* Raise reasonable exception during configuration when certificates or keys cannot be loaded
|
95
|
-
* Write ipizza-rails module:
|
96
|
-
* Proper Rails initialization
|
97
|
-
* Write Rails controller and model generator
|
98
|
-
* Rails helper to generate iPizza request forms
|
99
|
-
|
100
|
-
Authors
|
101
|
-
=======
|
85
|
+
# Authors
|
102
86
|
|
103
87
|
* Thanks to [all contributors](https://github.com/priithaamer/ipizza/graphs/contributors)!
|
104
88
|
* Tarmo Talu (Thanks for the 7-3-1 algorithm)
|
data/ipizza.gemspec
CHANGED
@@ -13,7 +13,8 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.description = %q{Simplifies generating payment requests and parsing responses from banks when using iPizza protocol.}
|
14
14
|
|
15
15
|
s.add_development_dependency 'rspec', '~> 2.6.0'
|
16
|
-
s.add_development_dependency 'guard'
|
16
|
+
s.add_development_dependency 'guard-rspec'
|
17
|
+
s.add_development_dependency 'rb-fsevent'
|
17
18
|
|
18
19
|
s.files = `git ls-files`.split("\n")
|
19
20
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/lib/ipizza.rb
CHANGED
data/lib/ipizza/config.rb
CHANGED
@@ -27,7 +27,7 @@ module Ipizza
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def method_missing(m, *args)
|
30
|
-
if /^(swedbank|seb|sampo|nordea)_(.*)=$/ =~ m.to_s
|
30
|
+
if /^(swedbank|seb|sampo|krediidipank|nordea)_(.*)=$/ =~ m.to_s
|
31
31
|
clz = Ipizza::Provider.const_get($1.capitalize)
|
32
32
|
key = $2
|
33
33
|
value = args.first
|
data/lib/ipizza/provider.rb
CHANGED
@@ -16,6 +16,10 @@ module Ipizza
|
|
16
16
|
Ipizza::Provider::Sampo.new
|
17
17
|
when 'sampopank'
|
18
18
|
Ipizza::Provider::Sampo.new
|
19
|
+
when 'krep'
|
20
|
+
Ipizza::Provider::Krediidipank.new
|
21
|
+
when 'krediidipank'
|
22
|
+
Ipizza::Provider::Krediidipank.new
|
19
23
|
when 'nordea'
|
20
24
|
Ipizza::Provider::Nordea.new
|
21
25
|
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Ipizza::Provider
|
2
|
+
class Krediidipank
|
3
|
+
|
4
|
+
class << self
|
5
|
+
attr_accessor :service_url, :return_url, :file_key, :key_secret, :file_cert, :snd_id, :encoding, :lang, :rec_acc, :rec_name
|
6
|
+
end
|
7
|
+
|
8
|
+
def payment_request(payment, service = 1002)
|
9
|
+
req = Ipizza::PaymentRequest.new
|
10
|
+
req.service_url = self.class.service_url
|
11
|
+
req.sign_params = {
|
12
|
+
'VK_SERVICE' => service.to_s,
|
13
|
+
'VK_VERSION' => '008',
|
14
|
+
'VK_SND_ID' => self.class.snd_id,
|
15
|
+
'VK_STAMP' => payment.stamp,
|
16
|
+
'VK_AMOUNT' => sprintf('%.2f', payment.amount),
|
17
|
+
'VK_CURR' => payment.currency,
|
18
|
+
'VK_REF' => Ipizza::Util.sign_731(payment.refnum),
|
19
|
+
'VK_MSG' => payment.message
|
20
|
+
}
|
21
|
+
|
22
|
+
if service == 1001
|
23
|
+
req.sign_params['VK_ACC'] = self.class.rec_acc
|
24
|
+
req.sign_params['VK_NAME'] = self.class.rec_name
|
25
|
+
end
|
26
|
+
|
27
|
+
req.extra_params = {
|
28
|
+
'VK_CHARSET' => self.class.encoding,
|
29
|
+
'VK_RETURN' => self.class.return_url,
|
30
|
+
'VK_LANG' => self.class.lang
|
31
|
+
}
|
32
|
+
|
33
|
+
if service == 1001
|
34
|
+
param_order = ['VK_SERVICE', 'VK_VERSION', 'VK_SND_ID', 'VK_STAMP', 'VK_AMOUNT', 'VK_CURR', 'VK_ACC', 'VK_NAME', 'VK_REF', 'VK_MSG']
|
35
|
+
else
|
36
|
+
param_order = ['VK_SERVICE', 'VK_VERSION', 'VK_SND_ID', 'VK_STAMP', 'VK_AMOUNT', 'VK_CURR', 'VK_REF', 'VK_MSG']
|
37
|
+
end
|
38
|
+
|
39
|
+
req.sign(self.class.file_key, self.class.key_secret, param_order)
|
40
|
+
req
|
41
|
+
end
|
42
|
+
|
43
|
+
def payment_response(params)
|
44
|
+
response = Ipizza::PaymentResponse.new(params)
|
45
|
+
response.verify(self.class.file_cert)
|
46
|
+
|
47
|
+
return response
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/lib/ipizza/version.rb
CHANGED
@@ -21,6 +21,15 @@ describe Ipizza::Provider do
|
|
21
21
|
it 'returns sampo provider for "sampo" attribute' do
|
22
22
|
Ipizza::Provider.get('sampo').should be_a(Ipizza::Provider::Sampo)
|
23
23
|
end
|
24
|
+
|
25
|
+
it 'returns krediidipank provider for "krep" attribute' do
|
26
|
+
Ipizza::Provider.get('krep').should be_a(Ipizza::Provider::Krediidipank)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'returns krediidipank provider for "krediidipank" attribute' do
|
30
|
+
Ipizza::Provider.get('krediidipank').should be_a(Ipizza::Provider::Krediidipank)
|
31
|
+
end
|
32
|
+
|
24
33
|
it 'returns nordea provider for "nordea" attribute' do
|
25
34
|
Ipizza::Provider.get('nordea').should be_a(Ipizza::Provider::Nordea)
|
26
35
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ipizza
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 1
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 7
|
9
9
|
- 1
|
10
|
-
version: 0.
|
10
|
+
version: 0.7.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Priit Haamer
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2013-04-10 00:00:00 +03:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -35,7 +35,7 @@ dependencies:
|
|
35
35
|
type: :development
|
36
36
|
version_requirements: *id001
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
|
-
name: guard
|
38
|
+
name: guard-rspec
|
39
39
|
prerelease: false
|
40
40
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
@@ -48,6 +48,20 @@ dependencies:
|
|
48
48
|
version: "0"
|
49
49
|
type: :development
|
50
50
|
version_requirements: *id002
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: rb-fsevent
|
53
|
+
prerelease: false
|
54
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
hash: 3
|
60
|
+
segments:
|
61
|
+
- 0
|
62
|
+
version: "0"
|
63
|
+
type: :development
|
64
|
+
version_requirements: *id003
|
51
65
|
description: Simplifies generating payment requests and parsing responses from banks when using iPizza protocol.
|
52
66
|
email:
|
53
67
|
- priit@fraktal.ee
|
@@ -75,6 +89,7 @@ files:
|
|
75
89
|
- lib/ipizza/payment_request.rb
|
76
90
|
- lib/ipizza/payment_response.rb
|
77
91
|
- lib/ipizza/provider.rb
|
92
|
+
- lib/ipizza/provider/krediidipank.rb
|
78
93
|
- lib/ipizza/provider/nordea.rb
|
79
94
|
- lib/ipizza/provider/nordea/authentication_request.rb
|
80
95
|
- lib/ipizza/provider/nordea/authentication_response.rb
|