ipizza 0.5.4 → 0.5.5

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.
@@ -45,7 +45,9 @@ Configuration parameters
45
45
  # relatively to YAML file
46
46
  file_cert: ./certificates/bank_public.crt
47
47
  snd_id: dealer
48
- encoding: UTF-8
48
+ encoding: ISO-8859-4
49
+
50
+ Please note that currently only ISO-8859-4 encoding is supported with Swedbank. UTF-8 works well with other payment providers.
49
51
 
50
52
  Payment requests
51
53
  ----------------
@@ -33,7 +33,7 @@ module Ipizza::Provider
33
33
 
34
34
  def payment_response(params)
35
35
  response = Ipizza::PaymentResponse.new(params)
36
- response.verify(self.class.file_cert, self.class.encoding)
36
+ response.verify(self.class.file_cert)
37
37
  return response
38
38
  end
39
39
 
@@ -17,7 +17,7 @@ class Ipizza::Response
17
17
  def verify(certificate_path, charset = 'UTF-8')
18
18
  param_order = @@response_param_order[@params['VK_SERVICE']]
19
19
  verify_params = param_order.inject(Hash.new) { |h, p| h[p] = @params[p]; h }
20
- mac_string = Ipizza::Util.mac_data_string(verify_params, param_order, 'UTF-8', charset)
20
+ mac_string = Ipizza::Util.mac_data_string(verify_params, param_order)
21
21
 
22
22
  @valid = Ipizza::Util.verify_signature(certificate_path, @params['VK_MAC'], mac_string)
23
23
  end
@@ -49,10 +49,9 @@ module Ipizza
49
49
  # Where || is string concatenation, p(x) is length of the field x represented by three digits.
50
50
  #
51
51
  # Parameters val1, val2, value3 would be turned into "003val1003val2006value3".
52
- def mac_data_string(params, sign_param_order, to_charset = 'UTF-8', from_charset = 'UTF-8')
52
+ def mac_data_string(params, sign_param_order)
53
53
  sign_param_order.inject('') do |memo, param|
54
54
  val = params[param].to_s
55
- val = Iconv.conv(to_charset, from_charset, val)
56
55
  memo << func_p(val) << val
57
56
  memo
58
57
  end
@@ -1,3 +1,3 @@
1
1
  module Ipizza
2
- VERSION = '0.5.4'
2
+ VERSION = '0.5.5'
3
3
  end
@@ -0,0 +1,48 @@
1
+ Certificate:
2
+ Data:
3
+ Version: 3 (0x2)
4
+ Serial Number: 125 (0x7d)
5
+ Signature Algorithm: md5WithRSAEncryption
6
+ Issuer: C=EE, ST=Estonia, L=Tallinn, O=Hansabank, OU=0025200, CN=Hansabank Server Certification Authority/emailAddress=certmaster@hansa.ee
7
+ Validity
8
+ Not Before: Oct 31 09:26:45 2007 GMT
9
+ Not After : Dec 25 09:26:45 2008 GMT
10
+ Subject: C=EE, O=Hansabank, CN=Virtual POS
11
+ Subject Public Key Info:
12
+ Public Key Algorithm: rsaEncryption
13
+ RSA Public Key: (1024 bit)
14
+ Modulus (1024 bit):
15
+ 00:b1:4a:b1:cf:a6:1c:bc:7d:1f:6b:ca:a9:c9:a9:
16
+ 7b:e4:f1:c9:61:4c:c7:14:33:57:1e:d3:79:9e:73:
17
+ ff:25:f1:55:ba:67:c2:34:9f:97:5c:ca:d0:1f:26:
18
+ 88:09:d3:76:9a:35:c8:31:22:47:ed:f1:2d:73:f1:
19
+ c6:13:0e:19:0c:18:a2:93:1a:97:8c:9e:d6:13:43:
20
+ d7:95:5b:5c:a3:59:60:96:44:ce:81:d9:4d:14:d1:
21
+ ec:d0:e3:80:32:b2:5d:fd:de:de:01:0a:87:e6:4b:
22
+ 33:94:25:94:1d:ba:29:e8:8e:48:88:3e:0a:b0:a2:
23
+ 4a:6e:39:f8:ba:d4:4f:aa:8f
24
+ Exponent: 65537 (0x10001)
25
+ Signature Algorithm: md5WithRSAEncryption
26
+ 23:dc:bb:5b:a9:b7:70:c6:93:39:75:74:ad:ee:69:81:0b:b7:
27
+ 9e:73:24:28:00:97:2c:57:a8:8b:76:d9:cc:87:7f:74:1f:35:
28
+ 8b:ea:a2:25:5c:a6:af:3c:15:06:25:8e:89:ac:05:e8:d4:b4:
29
+ d2:0a:04:ca:81:36:dc:8c:72:24:06:b1:f6:e5:79:a9:f7:68:
30
+ 3a:1b:15:7c:9c:99:4b:38:c8:c7:f9:bf:db:52:60:74:c4:03:
31
+ 65:8b:11:e6:cc:e1:d5:d0:c0:07:fd:cb:5a:c8:2d:ef:01:e8:
32
+ 16:87:51:d0:b2:59:51:d3:d1:93:a8:7b:30:74:85:46:5c:0f:
33
+ 22:c0
34
+ -----BEGIN CERTIFICATE-----
35
+ MIICWjCCAcOgAwIBAgIBfTANBgkqhkiG9w0BAQQFADCBrjELMAkGA1UEBhMCRUUx
36
+ EDAOBgNVBAgTB0VzdG9uaWExEDAOBgNVBAcTB1RhbGxpbm4xEjAQBgNVBAoTCUhh
37
+ bnNhYmFuazEQMA4GA1UECxMHMDAyNTIwMDExMC8GA1UEAxMoSGFuc2FiYW5rIFNl
38
+ cnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEiMCAGCSqGSIb3DQEJARYTY2Vy
39
+ dG1hc3RlckBoYW5zYS5lZTAeFw0wNzEwMzEwOTI2NDVaFw0wODEyMjUwOTI2NDVa
40
+ MDcxCzAJBgNVBAYTAkVFMRIwEAYDVQQKEwlIYW5zYWJhbmsxFDASBgNVBAMTC1Zp
41
+ cnR1YWwgUE9TMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxSrHPphy8fR9r
42
+ yqnJqXvk8clhTMcUM1ce03mec/8l8VW6Z8I0n5dcytAfJogJ03aaNcgxIkft8S1z
43
+ 8cYTDhkMGKKTGpeMntYTQ9eVW1yjWWCWRM6B2U0U0ezQ44Aysl393t4BCofmSzOU
44
+ JZQduinojkiIPgqwokpuOfi61E+qjwIDAQABMA0GCSqGSIb3DQEBBAUAA4GBACPc
45
+ u1upt3DGkzl1dK3uaYELt55zJCgAlyxXqIt22cyHf3QfNYvqoiVcpq88FQYljoms
46
+ BejUtNIKBMqBNtyMciQGsfblean3aDobFXycmUs4yMf5v9tSYHTEA2WLEebM4dXQ
47
+ wAf9y1rILe8B6BaHUdCyWVHT0ZOoezB0hUZcDyLA
48
+ -----END CERTIFICATE-----
@@ -6,7 +6,7 @@ swedbank:
6
6
  file_cert: ../certificates/bank.crt
7
7
  file_key: ../certificates/dealer.key
8
8
  key_secret: foobar
9
- encoding: UTF-8
9
+ encoding: ISO-8859-4
10
10
  snd_id: sender
11
11
 
12
12
  seb:
@@ -14,7 +14,7 @@ seb:
14
14
  return_url: http://test.local/seb
15
15
  cancel_url: http://test.local/seb
16
16
  login: dealer
17
- file_cert: ../certificates/seb_test_pub.crt
17
+ file_cert: ../certificates/seb_test_pub.pem
18
18
  file_key: ../certificates/dealer.key
19
19
  key_secret: foobar
20
20
  encoding: UTF-8
@@ -14,7 +14,20 @@ describe Ipizza::Provider::Seb do
14
14
  end
15
15
 
16
16
  describe '#payment_response' do
17
- it 'should parse and verify the payment response from bank'
17
+ before(:each) do
18
+ @params = {
19
+ 'VK_T_NO' => '1143', 'VK_REF' => '201107010000048', 'VK_SND_NAME' => 'TÕÄGER Leõpäöld¸´¨¦', 'VK_REC_ID' => 'testvpos',
20
+ 'appname' => 'UN3MIN', 'keel' => 'EST', 'VK_T_DATE' => '01.07.2011', 'VK_SND_ACC' => '10010046155012', 'VK_STAMP' => '20110701000004',
21
+ 'VK_CHARSET' => 'UTF-8', 'VK_RETURN' => 'https://store.kraftal.com/return/seb', 'VK_LANG' => '', 'VK_REC_NAME' => 'ALLAS ALLAR',
22
+ 'VK_AMOUNT' => '.17', 'VK_SERVICE' => '1101', 'VK_AUTO' => 'N', 'VK_MSG' => 'Edicy invoice #20110701000004', 'act' => 'UPOSTEST2',
23
+ 'VK_SND_ID' => 'EYP', 'VK_VERSION' => '008', 'VK_REC_ACC' => '10002050618003', 'VK_CURR' => 'EUR',
24
+ 'VK_MAC' => 'fj7moIwqMbvhmftFs5/5muOD1Dj5sRIlTUUcXGbzNKGFCrRz/N2ZpprFlO+8el7BNnGAoqCc2b4V2BrJ5XRsyYtLy1Gi4W8eSqwxbjBefDo21PFXpTmXYYJVy98fIWmWhOIBPMnEq6BlVf100GlV1C3OL+2mBU/ZjtPQG+B7OHo='
25
+ }
26
+ end
27
+
28
+ it 'should parse and verify the payment response from bank' do
29
+ Ipizza::Provider::Seb.new.payment_response(@params).should be_valid
30
+ end
18
31
  end
19
32
 
20
33
  describe '#authentication_request' do
@@ -14,7 +14,22 @@ describe Ipizza::Provider::Swedbank do
14
14
  end
15
15
 
16
16
  describe '#payment_response' do
17
- it 'parses and verifies the payment response from bank'
17
+ before(:each) do
18
+ @params = {
19
+ 'VK_T_NO' => '587', 'encoding' => 'UTF-8', 'VK_REC_ID' => 'fraktal', 'VK_REF' => '201107010000080',
20
+ 'VK_SND_NAME' => Iconv.conv('ISO-8859-4', 'UTF-8', 'TÕNU RUNNEL'), 'VK_T_DATE' => '01.07.2011', 'VK_STAMP' => '20110701000008', 'VK_SND_ACC' => '1108126403',
21
+ 'VK_LANG' => 'EST', 'VK_SERVICE' => '1101', 'VK_REC_NAME' => Iconv.conv('ISO-8859-4', 'UTF-8', 'FRAKTAL OÜ'), 'VK_AMOUNT' => '0.17',
22
+ 'VK_MSG' => 'Edicy invoice #20110701000008', 'VK_AUTO' => 'N', 'VK_SND_ID' => 'HP', 'VK_VERSION' => '008', 'VK_ENCODING' => 'ISO-8859-4',
23
+ 'VK_REC_ACC' => '221038811930', 'VK_CURR' => 'EUR',
24
+ 'VK_MAC' => 'geOA+gjLJlFouGMih0WhbQwTehZM1FVus1OhO34yt8shekINWOzUi6gLymq9HYSDIAx/Gw2iUOKGxzhCRsXu3fxjVVlXpS9YRQfFF8HG1zoU2OUiNBZVa+7bGGDLOy+ZIhnyaW1I3jIFXHd57xDyCVCQvB0Ot4Ya9yE3YMKHTk4='
25
+ }
26
+
27
+ Ipizza::Provider::Swedbank.file_cert = File.expand_path('../../../certificates/swedbank_production.pem', __FILE__)
28
+ end
29
+
30
+ it 'parses and verifies the payment response from bank' do
31
+ Ipizza::Provider::Swedbank.new.payment_response(@params).should be_valid
32
+ end
18
33
  end
19
34
 
20
35
  describe '#authentication_request' do
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: 3
4
+ hash: 1
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 5
9
- - 4
10
- version: 0.5.4
9
+ - 5
10
+ version: 0.5.5
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: 2011-06-20 00:00:00 +03:00
18
+ date: 2011-07-01 00:00:00 +03:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -97,6 +97,7 @@ files:
97
97
  - spec/certificates/seb_test_priv.pem
98
98
  - spec/certificates/seb_test_pub.crt
99
99
  - spec/certificates/seb_test_pub.pem
100
+ - spec/certificates/swedbank_production.pem
100
101
  - spec/config/config.yml
101
102
  - spec/config/plain_config.yml
102
103
  - spec/ipizza/authentication_response_spec.rb
@@ -157,6 +158,7 @@ test_files:
157
158
  - spec/certificates/seb_test_priv.pem
158
159
  - spec/certificates/seb_test_pub.crt
159
160
  - spec/certificates/seb_test_pub.pem
161
+ - spec/certificates/swedbank_production.pem
160
162
  - spec/config/config.yml
161
163
  - spec/config/plain_config.yml
162
164
  - spec/ipizza/authentication_response_spec.rb