ipizza 0.7.1 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +3 -1
- data/CHANGELOG.md +9 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +28 -24
- data/Guardfile +2 -2
- data/README.markdown +15 -7
- data/Rakefile +1 -1
- data/ipizza.gemspec +12 -11
- data/lib/ipizza/authentication.rb +15 -0
- data/lib/ipizza/authentication_request.rb +1 -1
- data/lib/ipizza/authentication_response.rb +22 -9
- data/lib/ipizza/config.rb +13 -13
- data/lib/ipizza/payment.rb +4 -4
- data/lib/ipizza/payment_request.rb +1 -1
- data/lib/ipizza/payment_response.rb +15 -7
- data/lib/ipizza/provider/base.rb +90 -0
- data/lib/ipizza/provider/krediidipank.rb +1 -47
- data/lib/ipizza/provider/lhv.rb +4 -0
- data/lib/ipizza/provider/luminor.rb +4 -0
- data/lib/ipizza/provider/nordea/authentication_request.rb +2 -2
- data/lib/ipizza/provider/nordea/authentication_response.rb +7 -3
- data/lib/ipizza/provider/nordea/payment_request.rb +2 -2
- data/lib/ipizza/provider/nordea/payment_response.rb +4 -4
- data/lib/ipizza/provider/nordea.rb +1 -74
- data/lib/ipizza/provider/sampo.rb +1 -46
- data/lib/ipizza/provider/seb.rb +1 -78
- data/lib/ipizza/provider/swedbank.rb +1 -66
- data/lib/ipizza/provider.rb +9 -15
- data/lib/ipizza/request.rb +9 -2
- data/lib/ipizza/response.rb +7 -9
- data/lib/ipizza/util.rb +18 -11
- data/lib/ipizza/version.rb +2 -2
- data/lib/ipizza.rb +4 -0
- data/spec/certificates/pangalink_danske_bank_cert.pem +22 -0
- data/spec/certificates/pangalink_danske_bank_key.pem +27 -0
- data/spec/certificates/pangalink_danske_user_key.pem +27 -0
- data/spec/certificates/pangalink_krediidipank_bank_cert.pem +22 -0
- data/spec/certificates/pangalink_krediidipank_bank_key.pem +27 -0
- data/spec/certificates/pangalink_krediidipank_user_key.pem +27 -0
- data/spec/certificates/pangalink_lhv_bank_cert.pem +22 -0
- data/spec/certificates/pangalink_lhv_bank_key.pem +27 -0
- data/spec/certificates/pangalink_lhv_user_key.pem +27 -0
- data/spec/certificates/pangalink_luminor_bank.cert.pem +18 -0
- data/spec/certificates/pangalink_luminor_bank_cert.pem +17 -0
- data/spec/certificates/pangalink_seb_bank_cert.pem +16 -0
- data/spec/certificates/pangalink_seb_bank_key.pem +15 -0
- data/spec/certificates/pangalink_seb_user_key.pem +15 -0
- data/spec/certificates/pangalink_swedbank_bank_cert.pem +22 -0
- data/spec/certificates/pangalink_swedbank_bank_key.pem +27 -0
- data/spec/certificates/pangalink_swedbank_user_key.pem +27 -0
- data/spec/config/config.yml +50 -6
- data/spec/config/plain_config.yml +3 -3
- data/spec/ipizza/authentication_response_spec.rb +11 -9
- data/spec/ipizza/config_spec.rb +9 -10
- data/spec/ipizza/provider/krediidipank_spec.rb +89 -0
- data/spec/ipizza/provider/lhv_spec.rb +89 -0
- data/spec/ipizza/provider/luminor_spec.rb +89 -0
- data/spec/ipizza/provider/nordea/authentication_response_spec.rb +3 -3
- data/spec/ipizza/provider/sampo_spec.rb +85 -0
- data/spec/ipizza/provider/seb_spec.rb +60 -30
- data/spec/ipizza/provider/swedbank_spec.rb +63 -34
- data/spec/ipizza/provider_spec.rb +25 -5
- data/spec/ipizza/util_spec.rb +5 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/support/pizza.rb +1 -1
- metadata +121 -104
- data/spec/certificates/bank.crt +0 -21
- data/spec/certificates/bank.csr +0 -17
- data/spec/certificates/bank.key +0 -27
- data/spec/certificates/bank.pub +0 -1
- data/spec/certificates/dealer.key +0 -30
- data/spec/certificates/dealer.pub +0 -1
- data/spec/certificates/seb_test_priv.pem +0 -16
- data/spec/certificates/seb_test_pub.crt +0 -20
- data/spec/certificates/seb_test_pub.pem +0 -20
- data/spec/certificates/swedbank_production.pem +0 -48
@@ -0,0 +1,15 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIICWwIBAAKBgQDk3bIdDgZzsQQ697A5F2ZTOJppp6jGHig3pCsXf7qNBZr4Icjd
|
3
|
+
PNpnfjYTXXg4/50yXQZu1Gz4bfNNJf6pKyS19U5SM+vAs4CA6rr1E4mxv9nfSIBA
|
4
|
+
I0Vc+I2pXw2HAhvUiDryPv9meAHcVbKjQ0Q3944yFUhTMfbPxEYvx89uswIDAQAB
|
5
|
+
AoGAajmDu/yQfg4BGqVvw2/a7HFvKe7JZPsGS50E6yk7msypOtXjdtwRustXqfFO
|
6
|
+
JZZujbujirlJwpy1um8SHc6KgJEJ7Dg/j6Q2rFQvErmCwqf+hEjF0s1ZCcKL5WvY
|
7
|
+
MZ76qTFQ3gYfWGh/7pFJn7cdbDxFo1KzfoXhvieH4SJhEtECQQD5UuR5uI2SmvGT
|
8
|
+
n5XkQY+p0Ba8vUSdCTyOYCOkmUXc9ytuxH+Hf2Ad01iFQbjeo8NMjlbRADSlyobI
|
9
|
+
XqP5FVqtAkEA6v6QzdhOngYxYETFb1215krapX9A6dT8ncVuxX/OSh78lkoRO8oI
|
10
|
+
AMzYiXVVga+xvM8Uk8o0YlN4UnR+K9t63wJABVddRa5KeiWPn1X/5A/zf/PRSOHV
|
11
|
+
IngcMACnQtN1x7IT4B+di82SxZDNiK1LxJlFidJS0c9rUVHxaUF9ycxHUQJAElVk
|
12
|
+
BLtAfvGqvoD/Ck48V8g1QL4p2VRllQWHO99Zv8ylFjCXIZwEfdN9fVPrJOAJNNrP
|
13
|
+
FyyqY5VxiLVP9qn77wJAEzTyrw3WO09wphaA2daTAAwiui6h+J5gac0rgsocp1OI
|
14
|
+
vs4c+iqi7UdxCSic7HvlwdLxjnIPIrmC6t3xwRBFxQ==
|
15
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,22 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDnjCCAoYCCQClKgV52zz8XTANBgkqhkiG9w0BAQUFADCBkDELMAkGA1UEBhMC
|
3
|
+
RUUxETAPBgNVBAgMCEhhcmp1bWFhMRAwDgYDVQQHDAdUYWxsaW5uMREwDwYDVQQK
|
4
|
+
DAhFZGljeSBPVTERMA8GA1UECwwIYmFua2xpbmsxFjAUBgNVBAMMDXBhbmdhbGlu
|
5
|
+
ay5uZXQxHjAcBgkqhkiG9w0BCQEWD3RhbmVsQGVkaWN5LmNvbTAeFw0xNTAyMDIx
|
6
|
+
MDA3NDFaFw0zNTAxMjgxMDA3NDFaMIGQMQswCQYDVQQGEwJFRTERMA8GA1UECAwI
|
7
|
+
SGFyanVtYWExEDAOBgNVBAcMB1RhbGxpbm4xETAPBgNVBAoMCEVkaWN5IE9VMREw
|
8
|
+
DwYDVQQLDAhiYW5rbGluazEWMBQGA1UEAwwNcGFuZ2FsaW5rLm5ldDEeMBwGCSqG
|
9
|
+
SIb3DQEJARYPdGFuZWxAZWRpY3kuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
10
|
+
MIIBCgKCAQEA2ZPWFxp3xh8aD+EpRhTB5Rxg4fdTrZ7JPBiUBW5yiBRrcs1gtQq+
|
11
|
+
GPyDV7NmZLafmh3Fuor2j4EYE0I073bQ7+NYBWJVD2OFxOnVi/wD5Ud3imiR6euF
|
12
|
+
ijyU29yZOkjJ1iXU/0nxXuhNqsD0qdeCQUVPAcPD/lC6Pp7318vBHdZhgUBGiUf+
|
13
|
+
RYFU1BWVjeSebUIbcQqUctOwVrYwrvEmeds3vrrY1xExNT3kCuSJwUUv8P372jUa
|
14
|
+
+jBZiJUECMXo9B1wB5C4BMgQPPdk2zW0RGSuVU25x0IAsCqq6EMp6gft9mNkwXH/
|
15
|
+
7iKkrL75RwOBnCNy/ROEdrtg70auX6dNfwIDAQABMA0GCSqGSIb3DQEBBQUAA4IB
|
16
|
+
AQBWL548eYE8zMaVqfv8m0nOjD2hYY1nuJDnJ14EJqa4uLH0d1ZT2XgfnR+RFxZf
|
17
|
+
BaA/aNmMslIq/NsOqUcPiKhVvc5b2fY34uN4hF1UUW+a1Ppu0V9RNAG7nAeSjRVe
|
18
|
+
ace6EW7BJkzdieFmrU9jJbUFMMoF2gBcCbUw4fiCq8jSaQnLSV8L2LWZDB7Xd/Y+
|
19
|
+
DgspAjr+gv7AvOtffP1hQeWm6Ehz66hJCsLYw+SrtFRiOgyKLAOGMCBLypiVCqyi
|
20
|
+
JagszYOBOXO9wileitI2n+O1wVUGRY6iZF50PAzU8sByveDGwkFtou3WDMZ06+6+
|
21
|
+
QiYB4xLzkB7E8Oqxpyy4EAzx
|
22
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEpQIBAAKCAQEA2ZPWFxp3xh8aD+EpRhTB5Rxg4fdTrZ7JPBiUBW5yiBRrcs1g
|
3
|
+
tQq+GPyDV7NmZLafmh3Fuor2j4EYE0I073bQ7+NYBWJVD2OFxOnVi/wD5Ud3imiR
|
4
|
+
6euFijyU29yZOkjJ1iXU/0nxXuhNqsD0qdeCQUVPAcPD/lC6Pp7318vBHdZhgUBG
|
5
|
+
iUf+RYFU1BWVjeSebUIbcQqUctOwVrYwrvEmeds3vrrY1xExNT3kCuSJwUUv8P37
|
6
|
+
2jUa+jBZiJUECMXo9B1wB5C4BMgQPPdk2zW0RGSuVU25x0IAsCqq6EMp6gft9mNk
|
7
|
+
wXH/7iKkrL75RwOBnCNy/ROEdrtg70auX6dNfwIDAQABAoIBAQCL5eXDhy46QqdE
|
8
|
+
TJd4S0J86WlWAexY938W2ArdDy4vV0nbUDj9T4H5mOtuyZht64rl0nzfvBhbHzt2
|
9
|
+
rpxQ2MnxZPGkzJw6v9g0S9IWJx3uH6y6XxBrIxgDUX65e7c+Zaz5t+ujlkzPpHjD
|
10
|
+
8TuftUU4aLMrRE/SRt/qAdcEdyud3ZndSyshEiVchRc9aTbQE2aLWO+arwq0BTJ1
|
11
|
+
Nn3r6XgPEW3xUzWj0Jq8Hq5RSIm3vt1KfSxDCxMr8qNCYDt/rQPPjcCHPK+zQrlq
|
12
|
+
eB9XMaDnmvEfeGOhYiQfw8AACFqGllaUY1MJgyYXg/GR6eOWFPguL18MDonBd+Aa
|
13
|
+
w/3SMnZhAoGBAO+Fqs8wpkwHDD+PRx6F4mQFU3I6cwFgiX1Qa/deXvLPLE10E+cl
|
14
|
+
+HRnfl2GrbX3IhSamK3FDSWAuogks6WUX6hnIoWV9B8FoDPkDK7H8prNZVk95cpJ
|
15
|
+
OrrLmSpCQYoY+9sxcU6RmTuE/vsm/GTC/0hl8mb5vwG9UBMEqaNxfK/xAoGBAOiL
|
16
|
+
sR4c+/t1GbVeqNWQjVUvy42XiP3oiTtjNZqkWEUAfEdmjFdgkC1m4aiyA/XQj6OI
|
17
|
+
ol4gMUuI3i/8Z9xqwto5SrGlv0fspGclC0mI9j+aZF0NrTWq43mqav/xKN9QcYoG
|
18
|
+
nMJEGaCz/zLgQ72QxufUCdSeCr3PnSW4MHPEi0RvAoGBALUxL9LGobZ3yms2jv1n
|
19
|
+
GKjDYqnRz3gmODwFH3ek+zzBPmllOz0r+zTLqctEe5pg1nYxsPgbTeOl6vXclc3X
|
20
|
+
XTm+s13M3zyse9FlXbbGaR9z64xEB9Yr6XKvXDGcp4m5dqUNVQKzn/BnnqANkPcE
|
21
|
+
kCuLe4EswrKlLLMGXvHWgxVxAoGBALYJ/InNOLic75YaVuJv+SNxedAKivPw39S8
|
22
|
+
kg7PjkXd3mvqa/xOnC7eddIgIJeCP59N64TxgIVXzE8WMJvMe2JnLQCp9nYwWnZf
|
23
|
+
+lkDPXmGvABYH3p+nvn0HTTkLRG7oFXjXT16H/G8Vg8WnhC8T+jVBSkK2u/BoYwQ
|
24
|
+
huVpO3hDAoGAXz0Tto2M9/emm0qfqPLhH6o/U9w0Fn8iypEmOzuGk8WOXViP1YWP
|
25
|
+
zBoELtKwV7B0zB46XUOwSmbfKNEbehNwI5+cOUTq+BfBoOLDVZdouxMWPb5iwccO
|
26
|
+
lEyh+6lRRWIA46C959vIl4kTDdywF1sDeRa5PgZ+IZFuch6mnRhkBq8=
|
27
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEogIBAAKCAQEAsZzRpH8gwra1IvNIGlC1hg9XzcKy08vXE4NM3akYkKnnDjnU
|
3
|
+
H7pR4MIrOAW759V4houSyh9plevQ+lmjaAhQRjRdkYtdUbHpmDDaVMIFEKGyoXkO
|
4
|
+
iNZ5fvzJZwqE1T7fXy/w3gBom8CUpT1FWO7Yw/d1J6FWse90YdBIJTLNWX7YsT/F
|
5
|
+
15ddmss5JADdfsGBlljje3W5wfPYyqhMWWZNkFlD2FEAxHwbWms5g0SZ7rz7UO09
|
6
|
+
kCbXrnbqivFy54mnSedIO/yMIiNI1CRgbvhC9yixfauwRVR0aqLewkZaCWM1lQUz
|
7
|
+
4Hq+gX/7EOukUKgUz9HbQiMmfsRO2WVVBNQmlwIDAQABAoIBAQCLc5UmkqomN04B
|
8
|
+
IwJ5puTfXSyTYUsHAATeTTkM0Ld43e2MPdtPDfs7fThxxA7E99apzOxzxjYggAaU
|
9
|
+
iczC4cQlWvgcTk/21LmTxMenxK41YL/gCCxhRAQgsFlxjdC9nZ/EHOABblCz+YC8
|
10
|
+
PF82dFG9i41wkDyBeIDoS6BZlImmuaIrPzfTTyIT8/GQO62VMLrGxbAxserJAyOz
|
11
|
+
yct+8dtgo++/tqqV0bSPzYKNipk13vGBr8TRKr8wgC6MqEYXOPvPel/T+vBdsrVu
|
12
|
+
tbeDktLNuSW71tVNLtinLZb/dUxJoOJr2qXNUJLvWEFlLm10YHrJpmdf6n8pHGdF
|
13
|
+
54Pte8gBAoGBAN/mq88gqg5Ku+ux+Tk9VDo2PZarGu7CJw+qjTtECe81y6Ah629i
|
14
|
+
P56tAPiU7Qrbw+cTJSes/ROsomUmB/DCSoJv4Z+cdPOu4A7zPbFmB68JwlvcVcNU
|
15
|
+
1PjiDN6tfPI0+NdZVM+5Dad3mOh+0NCzK5vgp6NelC6RHE8o2REu0yN7AoGBAMsT
|
16
|
+
U8oLlsFyVpk0q6HxWwzUpEKq7mR/QMg3H4crWBkqy6XDlCnWysOEAv+F1rqxlEQo
|
17
|
+
meJM9NQcQtqp5KOUsa0WkYXYZDsIvWZKFFgklv5unSm+pXE3zPxhEoHEfJxfVcVV
|
18
|
+
fqG58RGgS3JsnPZ3hr7GPlo+2kbLxJLxHHRyqYCVAoGBAI2d7RW5Z1Za1rmhfC1E
|
19
|
+
KT4YiKP/3a0eiG5URbgytMXklMLYMX3l+q92ZaLVL4kqr6I8bcfGltwW2TB4+ZTC
|
20
|
+
jzYpZd/6qc5n0bgjCeZmzn1cAt7vYh+GTJ6O++zsdpcMAkjTa91nAsfl0YVckN8w
|
21
|
+
NGkHk4C1laxOhEVdZM6Fe255An8xLn0ccbIRJ5/RevAWSF3EvbsKaltR+3+0/aSl
|
22
|
+
F9o+Ph8UBknb2ClDMLWJLODUVi2SVELwi7K/rBiE3KCC/YAKa2zS/ZVIttUn8Mj8
|
23
|
+
j+ABvshRU9q9kMYUWW4h/3Quauha4lnI0T+RBUFAdQ2Oo2P+0ARJ1u8GNlNlQv+h
|
24
|
+
NCPZAoGAOchpOggy28pCHIcLECRkssLKSU/i88dnKjKAak6rGWsMoJkN/O40i6+X
|
25
|
+
lHPJuoy35Ww25NsQi8CLV09taLgH42lo96Dzat7WZw/u/3LH+m08qpeEXN7NHUCd
|
26
|
+
KpSJAOKAj0ELRJAIY/3+2zYF4VgMrmVa5ScYe/atCRI2xV+9vnw=
|
27
|
+
-----END RSA PRIVATE KEY-----
|
data/spec/config/config.yml
CHANGED
@@ -1,21 +1,54 @@
|
|
1
|
+
krediidipank:
|
2
|
+
service_url: https://i-pank.krediidipank.ee/pay
|
3
|
+
return_url: http://test.local/krediidipank
|
4
|
+
cancel_url: http://test.local/krediidipank
|
5
|
+
login: dealer
|
6
|
+
file_cert: ../certificates/pangalink_krediidipank_bank_cert.pem
|
7
|
+
file_key: ../certificates/pangalink_krediidipank_user_key.pem
|
8
|
+
key_secret: foobar
|
9
|
+
encoding: UTF-8
|
10
|
+
snd_id: sender
|
11
|
+
|
12
|
+
lhv:
|
13
|
+
service_url: https://lhv.ee/banklink
|
14
|
+
return_url: http://test.local/lhv
|
15
|
+
cancel_url: http://test.local/lhv
|
16
|
+
login: dealer
|
17
|
+
file_cert: ../certificates/pangalink_lhv_bank_cert.pem
|
18
|
+
file_key: ../certificates/pangalink_lhv_user_key.pem
|
19
|
+
key_secret: foobar
|
20
|
+
encoding: UTF-8
|
21
|
+
snd_id: sender
|
22
|
+
|
1
23
|
swedbank:
|
2
24
|
service_url: https://www.swedbank.ee/banklink
|
3
25
|
return_url: http://test.local/swedbank
|
4
26
|
cancel_url: http://test.local/swedbank
|
5
27
|
login: dealer
|
6
|
-
file_cert: ../certificates/
|
7
|
-
file_key: ../certificates/
|
28
|
+
file_cert: ../certificates/pangalink_swedbank_bank_cert.pem
|
29
|
+
file_key: ../certificates/pangalink_swedbank_user_key.pem
|
8
30
|
key_secret: foobar
|
9
|
-
encoding:
|
31
|
+
encoding: UTF-8
|
10
32
|
snd_id: sender
|
11
33
|
|
12
34
|
seb:
|
13
|
-
service_url: https://www.seb.ee/
|
35
|
+
service_url: https://www.seb.ee/cgi-bin/unet3.sh/un3min.r
|
14
36
|
return_url: http://test.local/seb
|
15
37
|
cancel_url: http://test.local/seb
|
16
38
|
login: dealer
|
17
|
-
file_cert: ../certificates/
|
18
|
-
file_key: ../certificates/
|
39
|
+
file_cert: ../certificates/pangalink_seb_bank_cert.pem
|
40
|
+
file_key: ../certificates/pangalink_seb_user_key.pem
|
41
|
+
key_secret: foobar
|
42
|
+
encoding: UTF-8
|
43
|
+
snd_id: sender
|
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
|
19
52
|
key_secret: foobar
|
20
53
|
encoding: UTF-8
|
21
54
|
snd_id: sender
|
@@ -36,3 +69,14 @@ nordea:
|
|
36
69
|
confirm: 'YES'
|
37
70
|
keyvers: '0001'
|
38
71
|
file_key: ../certificates/nordea_test_priv
|
72
|
+
|
73
|
+
sampo:
|
74
|
+
service_url: https://www2.danskebank.ee/ibank/pizza/pizza
|
75
|
+
return_url: http://test.local/sampo
|
76
|
+
cancel_url: http://test.local/sampo
|
77
|
+
login: dealer
|
78
|
+
file_cert: ../certificates/pangalink_danske_bank_cert.pem
|
79
|
+
file_key: ../certificates/pangalink_danske_user_key.pem
|
80
|
+
key_secret: foobar
|
81
|
+
encoding: UTF-8
|
82
|
+
snd_id: sender
|
@@ -3,10 +3,10 @@ swedbank:
|
|
3
3
|
return_url: http://test.local/return
|
4
4
|
cancel_url: http://test.local/cancel
|
5
5
|
snd_id: dealer
|
6
|
-
file_cert: ../certificates/
|
7
|
-
file_key: ../certificates/
|
6
|
+
file_cert: ../certificates/pangalink_swedbank_bank_cert.pem
|
7
|
+
file_key: ../certificates/pangalink_swedbank_user_key.pem
|
8
8
|
key_secret: foobar
|
9
|
-
encoding:
|
9
|
+
encoding: UTF-8
|
10
10
|
wtf: not
|
11
11
|
|
12
12
|
seb:
|
@@ -1,23 +1,25 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
2
|
|
3
3
|
describe Ipizza::AuthenticationResponse do
|
4
|
-
|
5
4
|
before(:each) do
|
6
|
-
@
|
7
|
-
@resp2 = Ipizza::AuthenticationResponse.new({'VK_INFO' => 'ISIK:35511280268;NIMI:tõõger , LeõpäöldžŽšŠ'})
|
5
|
+
@resp = Ipizza::AuthenticationResponse.new('VK_USER_NAME' => 'tõõger , LeõpäöldžŽšŠ', 'VK_USER_ID' => '35511280268')
|
8
6
|
end
|
9
|
-
|
7
|
+
|
10
8
|
describe '#info_social_security_id' do
|
11
9
|
it 'should get user social security id from the response' do
|
12
|
-
@
|
13
|
-
@resp2.info_social_security_id.should == '35511280268'
|
10
|
+
@resp.info_social_security_id.should == '35511280268'
|
14
11
|
end
|
15
12
|
end
|
16
|
-
|
13
|
+
|
17
14
|
describe '#info_name' do
|
18
15
|
it 'should get user name from the response' do
|
19
|
-
@
|
20
|
-
|
16
|
+
@resp.info_name.should == 'tõõger , LeõpäöldžŽšŠ'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#authentication_info' do
|
21
|
+
it 'should return Ipizza::Authentication object' do
|
22
|
+
@resp.authentication_info.should be_a(Ipizza::Authentication)
|
21
23
|
end
|
22
24
|
end
|
23
25
|
end
|
data/spec/ipizza/config_spec.rb
CHANGED
@@ -3,7 +3,6 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
3
3
|
|
4
4
|
describe Ipizza::Config do
|
5
5
|
describe '.load_from_file' do
|
6
|
-
|
7
6
|
before(:each) do
|
8
7
|
Ipizza::Config.load_from_file(File.expand_path(File.dirname(__FILE__) + '/../config/plain_config.yml'))
|
9
8
|
end
|
@@ -14,20 +13,20 @@ describe Ipizza::Config do
|
|
14
13
|
Ipizza::Provider::Swedbank.cancel_url.should == 'http://test.local/cancel'
|
15
14
|
Ipizza::Provider::Swedbank.key_secret.should == 'foobar'
|
16
15
|
Ipizza::Provider::Swedbank.snd_id.should == 'dealer'
|
17
|
-
Ipizza::Provider::Swedbank.encoding.should == '
|
16
|
+
Ipizza::Provider::Swedbank.encoding.should == 'UTF-8'
|
18
17
|
|
19
18
|
Ipizza::Provider::Seb.service_url.should == 'https://www.seb.ee/banklink'
|
20
19
|
end
|
21
20
|
|
22
21
|
it 'should load certificates from path relative to configuration file' do
|
23
|
-
Ipizza::Provider::Swedbank.file_key.should == File.expand_path(File.dirname(__FILE__) + '/../certificates/
|
24
|
-
Ipizza::Provider::Swedbank.file_cert.should == File.expand_path(File.dirname(__FILE__) + '/../certificates/
|
22
|
+
Ipizza::Provider::Swedbank.file_key.should == File.expand_path(File.dirname(__FILE__) + '/../certificates/pangalink_swedbank_user_key.pem')
|
23
|
+
Ipizza::Provider::Swedbank.file_cert.should == File.expand_path(File.dirname(__FILE__) + '/../certificates/pangalink_swedbank_bank_cert.pem')
|
25
24
|
end
|
26
25
|
|
27
26
|
it 'should load certificates from absolute file paths' do
|
28
27
|
cfg = {'swedbank' => YAML::load_file(File.expand_path(File.dirname(__FILE__) + '/../config/config.yml'))['swedbank']}
|
29
|
-
cfg['swedbank']['file_key'] = File.expand_path(File.dirname(__FILE__) + '/../certificates/
|
30
|
-
cfg['swedbank']['file_cert'] = File.expand_path(File.dirname(__FILE__) + '/../certificates/
|
28
|
+
cfg['swedbank']['file_key'] = File.expand_path(File.dirname(__FILE__) + '/../certificates/pangalink_swedbank_user_key.pem')
|
29
|
+
cfg['swedbank']['file_cert'] = File.expand_path(File.dirname(__FILE__) + '/../certificates/pangalink_swedbank_bank_cert.pem')
|
31
30
|
|
32
31
|
Tempfile::open('config.yml') do |tmp|
|
33
32
|
tmp << cfg.to_yaml
|
@@ -35,8 +34,8 @@ describe Ipizza::Config do
|
|
35
34
|
|
36
35
|
config = Ipizza::Config.load_from_file(File.expand_path(tmp.path))
|
37
36
|
|
38
|
-
Ipizza::Provider::Swedbank.file_key.should == File.expand_path(File.dirname(__FILE__) + '/../certificates/
|
39
|
-
Ipizza::Provider::Swedbank.file_cert.should == File.expand_path(File.dirname(__FILE__) + '/../certificates/
|
37
|
+
Ipizza::Provider::Swedbank.file_key.should == File.expand_path(File.dirname(__FILE__) + '/../certificates/pangalink_swedbank_user_key.pem')
|
38
|
+
Ipizza::Provider::Swedbank.file_cert.should == File.expand_path(File.dirname(__FILE__) + '/../certificates/pangalink_swedbank_bank_cert.pem')
|
40
39
|
end
|
41
40
|
end
|
42
41
|
end
|
@@ -58,10 +57,10 @@ describe Ipizza::Config do
|
|
58
57
|
it 'loads certificates from directory specified by certs_root' do
|
59
58
|
Ipizza::Config.configure do |c|
|
60
59
|
c.certs_root = File.expand_path(File.dirname(__FILE__) + '/../certificates')
|
61
|
-
c.swedbank_file_cert = '
|
60
|
+
c.swedbank_file_cert = 'pangalink_seb_bank_cert.pem'
|
62
61
|
end
|
63
62
|
|
64
|
-
Ipizza::Provider::Swedbank.file_cert.should == File.expand_path(File.dirname(__FILE__) + '/../certificates/
|
63
|
+
Ipizza::Provider::Swedbank.file_cert.should == File.expand_path(File.dirname(__FILE__) + '/../certificates/pangalink_seb_bank_cert.pem')
|
65
64
|
end
|
66
65
|
end
|
67
66
|
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe Ipizza::Provider::Krediidipank do
|
4
|
+
let(:response_time) { Ipizza::Util.time_to_iso8601(Time.now) }
|
5
|
+
let(:bank_key) { File.expand_path('../../../certificates/pangalink_krediidipank_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::Krediidipank.new.payment_request(payment)
|
17
|
+
params = {
|
18
|
+
'VK_SERVICE' => '1012',
|
19
|
+
'VK_VERSION' => '008',
|
20
|
+
'VK_SND_ID' => Ipizza::Provider::Krediidipank.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::Krediidipank.return_url,
|
27
|
+
'VK_CANCEL' => Ipizza::Provider::Krediidipank.cancel_url,
|
28
|
+
'VK_DATETIME' => Ipizza::Util.time_to_iso8601(Time.now)
|
29
|
+
}
|
30
|
+
signature = Ipizza::Util.sign(Ipizza::Provider::Krediidipank.file_key, Ipizza::Provider::Krediidipank.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' => 'KREP', '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::Krediidipank.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::Krediidipank.new.authentication_request
|
61
|
+
params = {
|
62
|
+
'VK_SERVICE' => '4011',
|
63
|
+
'VK_VERSION' => '008',
|
64
|
+
'VK_SND_ID' => Ipizza::Provider::Krediidipank.snd_id,
|
65
|
+
'VK_RETURN' => Ipizza::Provider::Krediidipank.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::Krediidipank.file_key, Ipizza::Provider::Krediidipank.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' => 'KREP', '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::Krediidipank.new.authentication_response(params.merge('VK_MAC' => signature)).should be_valid
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe Ipizza::Provider::Lhv do
|
4
|
+
let(:response_time) { Ipizza::Util.time_to_iso8601(Time.now) }
|
5
|
+
let(:bank_key) { File.expand_path('../../../certificates/pangalink_lhv_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::Lhv.new.payment_request(payment)
|
17
|
+
params = {
|
18
|
+
'VK_SERVICE' => '1012',
|
19
|
+
'VK_VERSION' => '008',
|
20
|
+
'VK_SND_ID' => Ipizza::Provider::Lhv.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::Lhv.return_url,
|
27
|
+
'VK_CANCEL' => Ipizza::Provider::Lhv.cancel_url,
|
28
|
+
'VK_DATETIME' => Ipizza::Util.time_to_iso8601(Time.now)
|
29
|
+
}
|
30
|
+
signature = Ipizza::Util.sign(Ipizza::Provider::Lhv.file_key, Ipizza::Provider::Lhv.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' => 'LHV', '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::Lhv.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::Lhv.new.authentication_request
|
61
|
+
params = {
|
62
|
+
'VK_SERVICE' => '4011',
|
63
|
+
'VK_VERSION' => '008',
|
64
|
+
'VK_SND_ID' => Ipizza::Provider::Lhv.snd_id,
|
65
|
+
'VK_RETURN' => Ipizza::Provider::Lhv.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::Lhv.file_key, Ipizza::Provider::Lhv.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' => 'LHV', '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::Lhv.new.authentication_response(params.merge('VK_MAC' => signature)).should be_valid
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|