ipizza 2.0.1 → 2.1.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.
- checksums.yaml +5 -5
- data/ipizza.gemspec +1 -1
- data/lib/ipizza/config.rb +11 -11
- data/lib/ipizza/provider/luminor.rb +4 -0
- data/lib/ipizza/provider/nordea.rb +1 -74
- data/lib/ipizza/provider.rb +2 -2
- data/lib/ipizza/version.rb +1 -1
- data/lib/ipizza.rb +1 -0
- data/spec/certificates/pangalink_luminor_bank.cert.pem +18 -0
- data/spec/certificates/pangalink_luminor_bank_cert.pem +17 -0
- data/spec/config/config.yml +11 -0
- data/spec/ipizza/provider/luminor_spec.rb +89 -0
- data/spec/ipizza/provider_spec.rb +12 -4
- metadata +10 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 160c73db6da0b92bb8d59f3478ae2836a8efdfe57cbfe174a0715559a980273a
|
4
|
+
data.tar.gz: 40486a43f105c5ee73fb7d3f4e827124f7bff5cb8fb1bfa93c2fca677c06f9c7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 173c0fd63f8e5c43c099a9871005db2bc83272455eb56c10c9c01fabb4a2ab2c42925d490f9608332aca2916ef172ef81bc204ae9f211d9a357a3a4989581f43
|
7
|
+
data.tar.gz: b702c29a1c3ccf89a46a10828c3911ab9d7d9880d43e79387ff4e5cd6284aabe83dcb81c28f65c19f484550f018c2fb93261b0e7a7939ed04c587a76a00ed2be
|
data/ipizza.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.homepage = 'https://github.com/Voog/ipizza'
|
12
12
|
s.summary = 'Implements iPizza protocol to communicate with Estonian Banks'
|
13
13
|
s.description = 'Simplifies generating payment requests and parsing responses from banks when using iPizza protocol.'
|
14
|
-
|
14
|
+
|
15
15
|
s.add_development_dependency 'rspec', '~> 2.9.0'
|
16
16
|
s.add_development_dependency 'guard-rspec'
|
17
17
|
s.add_development_dependency 'rb-fsevent'
|
data/lib/ipizza/config.rb
CHANGED
@@ -8,10 +8,10 @@ module Ipizza
|
|
8
8
|
|
9
9
|
def load_from_file(yaml_path)
|
10
10
|
@certs_root = File.dirname(yaml_path)
|
11
|
-
|
11
|
+
|
12
12
|
load_from_hash(YAML::load_file(yaml_path))
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
def load_from_hash(config)
|
16
16
|
config.each do |bank, params|
|
17
17
|
params.each do |param, value|
|
@@ -21,19 +21,19 @@ module Ipizza
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
def configure
|
26
26
|
yield self
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
def method_missing(m, *args)
|
30
|
-
if /^(lhv|swedbank|seb|sampo|krediidipank|nordea)_(.*)=$/ =~ m.to_s
|
30
|
+
if /^(lhv|swedbank|seb|sampo|krediidipank|nordea|luminor)_(.*)=$/ =~ m.to_s
|
31
31
|
clz = Ipizza::Provider.const_get($1.capitalize)
|
32
32
|
key = $2
|
33
33
|
value = args.first
|
34
|
-
|
34
|
+
|
35
35
|
value = load_certificate(value) if /^file_(cert|key)/ =~ key
|
36
|
-
|
36
|
+
|
37
37
|
if clz.respond_to?(:"#{key}=")
|
38
38
|
return clz.send(:"#{key}=", *[value])
|
39
39
|
end
|
@@ -41,23 +41,23 @@ module Ipizza
|
|
41
41
|
|
42
42
|
super
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
private
|
46
|
-
|
46
|
+
|
47
47
|
def load_certificate(file_path)
|
48
48
|
if File.exist?(file_path)
|
49
49
|
file_path
|
50
50
|
else
|
51
51
|
file_path = File.expand_path(File.join(certs_root, file_path))
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
54
|
if File.exist?(file_path)
|
55
55
|
file_path
|
56
56
|
else
|
57
57
|
raise "Could not load certificate from file '#{file_path}'"
|
58
58
|
end
|
59
59
|
end
|
60
|
-
|
60
|
+
|
61
61
|
end
|
62
62
|
end
|
63
63
|
end
|
@@ -1,77 +1,4 @@
|
|
1
1
|
module Ipizza::Provider
|
2
|
-
|
3
|
-
# TODO: configure whether use sha-1 or md5 for signing and verification
|
4
|
-
class Nordea
|
5
|
-
|
6
|
-
require 'ipizza/provider/nordea/payment_request'
|
7
|
-
require 'ipizza/provider/nordea/payment_response'
|
8
|
-
require 'ipizza/provider/nordea/authentication_request'
|
9
|
-
require 'ipizza/provider/nordea/authentication_response'
|
10
|
-
|
11
|
-
class << self
|
12
|
-
attr_accessor :payments_service_url, :payments_return_url, :payments_reject_url, :payments_cancel_url
|
13
|
-
attr_accessor :payments_rcv_id, :payments_language
|
14
|
-
attr_accessor :auth_service_url, :auth_return_url, :auth_reject_url, :auth_cancel_url, :auth_language
|
15
|
-
attr_accessor :auth_rcv_id
|
16
|
-
attr_accessor :file_key, :rcv_account, :rcv_name, :confirm, :keyvers
|
17
|
-
end
|
18
|
-
|
19
|
-
def payment_request(payment, service = 1002)
|
20
|
-
req = Ipizza::Provider::Nordea::PaymentRequest.new
|
21
|
-
req.service_url = self.class.payments_service_url
|
22
|
-
req.params = {
|
23
|
-
'VERSION' => '0003',
|
24
|
-
'STAMP' => payment.stamp,
|
25
|
-
'RCV_ID' => self.class.payments_rcv_id,
|
26
|
-
# 'RCV_ACCOUNT' => self.rcv_account,
|
27
|
-
# 'RCV_NAME' => self.rcv_name,
|
28
|
-
'LANGUAGE' => self.class.payments_language,
|
29
|
-
'AMOUNT' => sprintf('%.2f', payment.amount),
|
30
|
-
'REF' => Ipizza::Util.sign_731(payment.refnum),
|
31
|
-
'DATE' => 'EXPRESS',
|
32
|
-
'MSG' => payment.message,
|
33
|
-
'CONFIRM' => self.class.confirm,
|
34
|
-
'CUR' => payment.currency,
|
35
|
-
'KEYVERS' => self.class.keyvers,
|
36
|
-
'REJECT' => self.class.payments_reject_url,
|
37
|
-
'RETURN' => self.class.payments_return_url,
|
38
|
-
'CANCEL' => self.class.payments_cancel_url
|
39
|
-
}
|
40
|
-
|
41
|
-
req.sign(self.class.file_key)
|
42
|
-
req
|
43
|
-
end
|
44
|
-
|
45
|
-
def payment_response(params)
|
46
|
-
response = Ipizza::Provider::Nordea::PaymentResponse.new(params)
|
47
|
-
response.verify(self.class.file_key)
|
48
|
-
return response
|
49
|
-
end
|
50
|
-
|
51
|
-
def authentication_request
|
52
|
-
req = Ipizza::Provider::Nordea::AuthenticationRequest.new
|
53
|
-
req.service_url = self.class.auth_service_url
|
54
|
-
req.params = {
|
55
|
-
'ACTION_ID' => '701',
|
56
|
-
'VERS' => '0002',
|
57
|
-
'RCVID' => self.class.auth_rcv_id,
|
58
|
-
'LANGCODE' => self.class.auth_language,
|
59
|
-
'STAMP' => Time.now.strftime('%Y%m%d%H%M%S'),
|
60
|
-
'IDTYPE' => '02',
|
61
|
-
'KEYVERS' => self.class.keyvers,
|
62
|
-
'RETLINK' => self.class.auth_return_url,
|
63
|
-
'CANLINK' => self.class.auth_cancel_url,
|
64
|
-
'REJLINK' => self.class.auth_reject_url,
|
65
|
-
'ALG' => '01'
|
66
|
-
}
|
67
|
-
req.sign(self.class.file_key)
|
68
|
-
req
|
69
|
-
end
|
70
|
-
|
71
|
-
def authentication_response(params)
|
72
|
-
response = Ipizza::Provider::Nordea::AuthenticationResponse.new(params)
|
73
|
-
response.verify(self.class.file_key)
|
74
|
-
return response
|
75
|
-
end
|
2
|
+
class Nordea < Ipizza::Provider::Base
|
76
3
|
end
|
77
4
|
end
|
data/lib/ipizza/provider.rb
CHANGED
data/lib/ipizza/version.rb
CHANGED
data/lib/ipizza.rb
CHANGED
@@ -0,0 +1,18 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIC+jCCAeICCQDuCELf8TcV7DANBgkqhkiG9w0BAQsFADA/MQswCQYDVQQGEwJF
|
3
|
+
RTEOMAwGA1UECAwFVGFydHUxDjAMBgNVBAcMBVRhcnR1MRAwDgYDVQQKDAdNaWxl
|
4
|
+
ZWRpMB4XDTIwMTIwMzA5NDkxMloXDTI1MTIwMTA5NDkxMlowPzELMAkGA1UEBhMC
|
5
|
+
RUUxDjAMBgNVBAgMBVRhcnR1MQ4wDAYDVQQHDAVUYXJ0dTEQMA4GA1UECgwHTWls
|
6
|
+
ZWVkaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALmozE2DIZyCddrW
|
7
|
+
AVoVkNWYRYDytAi5lefa5+PEAQLGFzzfTBRnClla/Qerfe4NBGjyiwu8W6VeLGQ9
|
8
|
+
+GGDw5uEQumII2t0f1vpKWiauyfM+MlSOB6cobf9bwlgs9gBss/PEAa8E4MhpS60
|
9
|
+
p7KNfR1qcq3AWgxpjE9ns7KheARW1q0vNZFzPkONyleZ4HJIC8rlta38/VMvbPnp
|
10
|
+
PLbMnVOvrOsxeDMCgGpD9hupxVsFnhsv/Y4F14W7f4XHl36FhDjP8dkrgrkQE4E1
|
11
|
+
dRnxx6GC4Lv71rQDu+gmgyKtZWmsym1b1Tzw3aCF27J1EReHvCxtkDfMH1VzQSad
|
12
|
+
FGF4yXsCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAQfs7p7MLZqtm9QxBkGcYALDw
|
13
|
+
q/f+5b+n1uPdFcXu8K26hG6RiVZTXUJrIqR71kGLG0mBJ3V6+vAM9gjsUJs20uiZ
|
14
|
+
qvdV2xQglTpJlNTG4Je3Sq4Lbyz4w+8e9VVrE3atfARHxA5FIewCviJNdXS+xeuh
|
15
|
+
GqKaGqLSf4sJlbe3hE69hzlDXmzUE+/OhoaSPS3zFAzcp9m50o7InhYy80eKDRFS
|
16
|
+
hBIDbLnyzb+97If9BMOhqQ/nfCrsX6TiTiqhIFB+qNSIZt733fx9AD3AwSxM51RC
|
17
|
+
V232swdtXx9d39S/DskhMkXkOiqpr+0P87Qyy8Y0/FoWO57i/jXb0uCccPatdw==
|
18
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,17 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIICnzCCAYegAwIBAgIBATANBgkqhkiG9w0BAQUFADATMREwDwYDVQQDDAhCYW5r
|
3
|
+
bGluazAeFw0yMDEyMDMxMDUwNDJaFw0yMjEyMDMxMDUwNDJaMBMxETAPBgNVBAMM
|
4
|
+
CEJhbmtsaW5rMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgI7m13+Z
|
5
|
+
2B3aBtXE4/2YmsG9koPpD7RHj5B7uEozBCNM1MhfYoE7R7vP1tPm7lD/oJxKk0G3
|
6
|
+
gpODtGDqo+kMfI+TlJ/w2KzwS5YPEop7aliEQ1bbwjjjY2tXYwsBYa0uRvkbwizH
|
7
|
+
lp3PHmr4DBl+JxyETIWGX623nZxZcHAvwcM6VpTtd9+KEpgToQ2gPHHj4/svQfwm
|
8
|
+
mzhdEwFZjwjCaOEHssaUcLsyvKVoJ5OJqBWS1e0mVqWsuJJJnkeG7NVXY2LWDDfP
|
9
|
+
iGogVz9hqqxfNKhCTLGMCG8k8VDQdLTaR+vvmXSUBLh+4TbFA7ZPLSvgbRu3995F
|
10
|
+
CCY/wADRophRVQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQAcTtcH4m//FyGrNC2h
|
11
|
+
rcry6wt843xclEkLQSSNGz9wVCQW/D8I0VNjFPk4PgoUh4bTr+mKrZ6UrrIwBuO6
|
12
|
+
oFj2Nh+Y1wgkpd3LMKae5DvWLE4taZ4ylBGSUXOpQ062+pOtUldZQxBiczaUJWm4
|
13
|
+
4Ns+27Zi5oGyTNnlZXfguEnt54KA+63S4aiHWUSaaXkRN62LeNuyrX0ZdITEfTaz
|
14
|
+
0ZvVcn6FbL6OnsqoZn2MF9+xZfMqlu/K5HfGl928v0fzY8/jQygxUoGFIBfxhn46
|
15
|
+
NniPM9xtnPSu11ut1n0PQPP8K94+MUJz7GDw9o9z3X0zgy8SOFSpY8HNp0MEjN7l
|
16
|
+
MT8n
|
17
|
+
-----END CERTIFICATE-----
|
data/spec/config/config.yml
CHANGED
@@ -42,6 +42,17 @@ seb:
|
|
42
42
|
encoding: UTF-8
|
43
43
|
snd_id: sender
|
44
44
|
|
45
|
+
luminor:
|
46
|
+
service_url: https://banklink.luminor.ee/test
|
47
|
+
return_url: http://test.local/seb
|
48
|
+
cancel_url: http://test.local/seb
|
49
|
+
login: dealer
|
50
|
+
file_cert: ../certificates/pangalink_seb_bank_cert.pem
|
51
|
+
file_key: ../certificates/pangalink_seb_user_key.pem
|
52
|
+
key_secret: foobar
|
53
|
+
encoding: UTF-8
|
54
|
+
snd_id: sender
|
55
|
+
|
45
56
|
nordea:
|
46
57
|
payments_service_url: https://netbank.nordea.com/pnbepaytest/epayn.jsp
|
47
58
|
payments_return_url: http://test.local/nordea
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe Ipizza::Provider::Luminor do
|
4
|
+
let(:response_time) { Ipizza::Util.time_to_iso8601(Time.now) }
|
5
|
+
let(:bank_key) { File.expand_path('../../../certificates/pangalink_luminor_bank_key.pem', __FILE__) }
|
6
|
+
|
7
|
+
describe '#payment_request' do
|
8
|
+
let(:payment) { Ipizza::Payment.new(stamp: 1, amount: '123.34', refnum: 1, message: 'Payment message', currency: 'EUR') }
|
9
|
+
|
10
|
+
before(:each) do
|
11
|
+
req_time = Time.now
|
12
|
+
Time.stub!(:now).and_return(req_time)
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should sign the request' do
|
16
|
+
req = Ipizza::Provider::Luminor.new.payment_request(payment)
|
17
|
+
params = {
|
18
|
+
'VK_SERVICE' => '1012',
|
19
|
+
'VK_VERSION' => '008',
|
20
|
+
'VK_SND_ID' => Ipizza::Provider::Luminor.snd_id,
|
21
|
+
'VK_STAMP' => payment.stamp,
|
22
|
+
'VK_AMOUNT' => sprintf('%.2f', payment.amount),
|
23
|
+
'VK_CURR' => payment.currency,
|
24
|
+
'VK_REF' => Ipizza::Util.sign_731(payment.refnum),
|
25
|
+
'VK_MSG' => payment.message,
|
26
|
+
'VK_RETURN' => Ipizza::Provider::Luminor.return_url,
|
27
|
+
'VK_CANCEL' => Ipizza::Provider::Luminor.cancel_url,
|
28
|
+
'VK_DATETIME' => Ipizza::Util.time_to_iso8601(Time.now)
|
29
|
+
}
|
30
|
+
signature = Ipizza::Util.sign(Ipizza::Provider::Luminor.file_key, Ipizza::Provider::Luminor.key_secret, Ipizza::Util.mac_data_string(params, Ipizza::Request::PARAM_ORDER['1012']))
|
31
|
+
req.sign_params['VK_MAC'].should == signature
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '#payment_response' do
|
36
|
+
let(:params) {
|
37
|
+
{
|
38
|
+
'VK_SERVICE' => '1111', 'VK_VERSION' => '008', 'VK_SND_ID' => 'LUMINOR', 'VK_REC_ID' => 'sender',
|
39
|
+
'VK_STAMP' => '20150111000004', 'VK_T_NO' => '1143', 'VK_AMOUNT' => '.17', 'VK_CURR' => 'EUR',
|
40
|
+
'VK_REC_ACC' => 'EE411010002050618003', 'VK_REC_NAME' => 'ÕILIS OÜ',
|
41
|
+
'VK_SND_ACC' => 'EE541010010046155012', 'VK_SND_NAME' => 'TÕÄGER Leõpäöld¸´¨¦',
|
42
|
+
'VK_REF' => '201501110000048', 'VK_MSG' => 'Invoice #20150111000004', 'VK_T_DATETIME' => response_time,
|
43
|
+
'VK_ENCODING' => 'UTF-8', 'VK_LANG' => 'EST', 'VK_AUTO' => 'N'
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
it 'should parse and verify the payment response from bank' do
|
48
|
+
signature = Ipizza::Util.sign(bank_key, nil, Ipizza::Util.mac_data_string(params, Ipizza::Response::PARAM_ORDER['1111']))
|
49
|
+
Ipizza::Provider::Luminor.new.payment_response(params.merge('VK_MAC' => signature)).should be_valid
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '#authentication_request' do
|
54
|
+
before(:each) do
|
55
|
+
req_time = Time.now
|
56
|
+
Time.stub!(:now).and_return(req_time)
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'should sign the request' do
|
60
|
+
req = Ipizza::Provider::Luminor.new.authentication_request
|
61
|
+
params = {
|
62
|
+
'VK_SERVICE' => '4011',
|
63
|
+
'VK_VERSION' => '008',
|
64
|
+
'VK_SND_ID' => Ipizza::Provider::Luminor.snd_id,
|
65
|
+
'VK_RETURN' => Ipizza::Provider::Luminor.return_url,
|
66
|
+
'VK_DATETIME' => Ipizza::Util.time_to_iso8601(Time.now),
|
67
|
+
'VK_RID' => '',
|
68
|
+
'VK_REPLY' => '3012'
|
69
|
+
}
|
70
|
+
signature = Ipizza::Util.sign(Ipizza::Provider::Luminor.file_key, Ipizza::Provider::Luminor.key_secret, Ipizza::Util.mac_data_string(params, Ipizza::Request::PARAM_ORDER['4011']))
|
71
|
+
req.sign_params['VK_MAC'].should == signature
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe '#authentication_response' do
|
76
|
+
let(:params) {
|
77
|
+
{
|
78
|
+
'VK_SERVICE' => '3012', 'VK_VERSION' => '008', 'VK_USER' => 'dealer', 'VK_DATETIME' => response_time,
|
79
|
+
'VK_SND_ID' => 'LUMINOR', 'VK_REC_ID' => 'sender', 'VK_USER_NAME' => 'TÕÄGER Leõpäöld¸´¨¦', 'VK_USER_ID' => '35511280268',
|
80
|
+
'VK_COUNTRY' => 'EE', 'VK_OTHER' => '', 'VK_TOKEN' => '7', 'VK_RID' => ''
|
81
|
+
}
|
82
|
+
}
|
83
|
+
|
84
|
+
it 'should parse and verify the authentication response from bank' do
|
85
|
+
signature = Ipizza::Util.sign(bank_key, nil, Ipizza::Util.mac_data_string(params, Ipizza::Response::PARAM_ORDER['3012']))
|
86
|
+
Ipizza::Provider::Luminor.new.authentication_response(params.merge('VK_MAC' => signature)).should be_valid
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -9,11 +9,11 @@ describe Ipizza::Provider do
|
|
9
9
|
it 'returns swedbank provider for "swedbank" attribute' do
|
10
10
|
Ipizza::Provider.get('swedbank').should be_a(Ipizza::Provider::Swedbank)
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
it 'returns swedbank provider for "hp" attribute' do
|
14
14
|
Ipizza::Provider.get('hp').should be_a(Ipizza::Provider::Swedbank)
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
it 'returns seb provider for "eyp" attribute' do
|
18
18
|
Ipizza::Provider.get('eyp').should be_a(Ipizza::Provider::Seb)
|
19
19
|
end
|
@@ -22,6 +22,14 @@ describe Ipizza::Provider do
|
|
22
22
|
Ipizza::Provider.get('seb').should be_a(Ipizza::Provider::Seb)
|
23
23
|
end
|
24
24
|
|
25
|
+
it 'returns luminor provider for "luminor" attribute' do
|
26
|
+
Ipizza::Provider.get('luminor').should be_a(Ipizza::Provider::Luminor)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'returns luminor provider for "testluminor" attribute' do
|
30
|
+
Ipizza::Provider.get('luminor').should be_a(Ipizza::Provider::Luminor)
|
31
|
+
end
|
32
|
+
|
25
33
|
it 'returns sampo provider for "sampo" attribute' do
|
26
34
|
Ipizza::Provider.get('sampo').should be_a(Ipizza::Provider::Sampo)
|
27
35
|
end
|
@@ -33,11 +41,11 @@ describe Ipizza::Provider do
|
|
33
41
|
it 'returns krediidipank provider for "krep" attribute' do
|
34
42
|
Ipizza::Provider.get('krep').should be_a(Ipizza::Provider::Krediidipank)
|
35
43
|
end
|
36
|
-
|
44
|
+
|
37
45
|
it 'returns krediidipank provider for "krediidipank" attribute' do
|
38
46
|
Ipizza::Provider.get('krediidipank').should be_a(Ipizza::Provider::Krediidipank)
|
39
47
|
end
|
40
|
-
|
48
|
+
|
41
49
|
it 'returns nordea provider for "nordea" attribute' do
|
42
50
|
Ipizza::Provider.get('nordea').should be_a(Ipizza::Provider::Nordea)
|
43
51
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ipizza
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Priit Haamer
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-09-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -98,6 +98,7 @@ files:
|
|
98
98
|
- lib/ipizza/provider/base.rb
|
99
99
|
- lib/ipizza/provider/krediidipank.rb
|
100
100
|
- lib/ipizza/provider/lhv.rb
|
101
|
+
- lib/ipizza/provider/luminor.rb
|
101
102
|
- lib/ipizza/provider/nordea.rb
|
102
103
|
- lib/ipizza/provider/nordea/authentication_request.rb
|
103
104
|
- lib/ipizza/provider/nordea/authentication_response.rb
|
@@ -120,6 +121,8 @@ files:
|
|
120
121
|
- spec/certificates/pangalink_lhv_bank_cert.pem
|
121
122
|
- spec/certificates/pangalink_lhv_bank_key.pem
|
122
123
|
- spec/certificates/pangalink_lhv_user_key.pem
|
124
|
+
- spec/certificates/pangalink_luminor_bank.cert.pem
|
125
|
+
- spec/certificates/pangalink_luminor_bank_cert.pem
|
123
126
|
- spec/certificates/pangalink_seb_bank_cert.pem
|
124
127
|
- spec/certificates/pangalink_seb_bank_key.pem
|
125
128
|
- spec/certificates/pangalink_seb_user_key.pem
|
@@ -132,6 +135,7 @@ files:
|
|
132
135
|
- spec/ipizza/config_spec.rb
|
133
136
|
- spec/ipizza/provider/krediidipank_spec.rb
|
134
137
|
- spec/ipizza/provider/lhv_spec.rb
|
138
|
+
- spec/ipizza/provider/luminor_spec.rb
|
135
139
|
- spec/ipizza/provider/nordea/authentication_response_spec.rb
|
136
140
|
- spec/ipizza/provider/nordea/payment_request_spec.rb
|
137
141
|
- spec/ipizza/provider/nordea/payment_response_spec.rb
|
@@ -161,8 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
161
165
|
- !ruby/object:Gem::Version
|
162
166
|
version: '0'
|
163
167
|
requirements: []
|
164
|
-
|
165
|
-
rubygems_version: 2.2.2
|
168
|
+
rubygems_version: 3.0.3
|
166
169
|
signing_key:
|
167
170
|
specification_version: 4
|
168
171
|
summary: Implements iPizza protocol to communicate with Estonian Banks
|
@@ -177,6 +180,8 @@ test_files:
|
|
177
180
|
- spec/certificates/pangalink_lhv_bank_cert.pem
|
178
181
|
- spec/certificates/pangalink_lhv_bank_key.pem
|
179
182
|
- spec/certificates/pangalink_lhv_user_key.pem
|
183
|
+
- spec/certificates/pangalink_luminor_bank.cert.pem
|
184
|
+
- spec/certificates/pangalink_luminor_bank_cert.pem
|
180
185
|
- spec/certificates/pangalink_seb_bank_cert.pem
|
181
186
|
- spec/certificates/pangalink_seb_bank_key.pem
|
182
187
|
- spec/certificates/pangalink_seb_user_key.pem
|
@@ -189,6 +194,7 @@ test_files:
|
|
189
194
|
- spec/ipizza/config_spec.rb
|
190
195
|
- spec/ipizza/provider/krediidipank_spec.rb
|
191
196
|
- spec/ipizza/provider/lhv_spec.rb
|
197
|
+
- spec/ipizza/provider/luminor_spec.rb
|
192
198
|
- spec/ipizza/provider/nordea/authentication_response_spec.rb
|
193
199
|
- spec/ipizza/provider/nordea/payment_request_spec.rb
|
194
200
|
- spec/ipizza/provider/nordea/payment_response_spec.rb
|