sepafm 0.1.5 → 1.0.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.
data/lib/sepafm.rb CHANGED
@@ -19,33 +19,86 @@ require 'sepa/banks/danske/soap_danske'
19
19
  require 'sepa/banks/nordea/soap_nordea'
20
20
  require 'sepa/version'
21
21
 
22
+ # The root path of where the gem is installed
23
+ # @todo Put all constants under Sepa namespace
22
24
  ROOT_PATH = File.expand_path('../../', __FILE__)
25
+
26
+
27
+ # @!group Schemas
28
+
29
+ # The path where the WSDL-files for different banks are located
23
30
  WSDL_PATH = "#{ROOT_PATH}/lib/sepa/wsdl"
31
+
32
+ # The path where the xml schemas are located
24
33
  SCHEMA_PATH = "#{ROOT_PATH}/lib/sepa/xml_schemas"
34
+
35
+ # Path to the WSDL schema
25
36
  SCHEMA_FILE = "#{ROOT_PATH}/lib/sepa/xml_schemas/wsdl.xml"
37
+
38
+ # @!endgroup
39
+
40
+
41
+ # @!group Templates
42
+
43
+ # Path to the application request templates
26
44
  AR_TEMPLATE_PATH = "#{ROOT_PATH}/lib/sepa/xml_templates/application_request"
45
+
46
+ # Path to the soap templates
27
47
  SOAP_TEMPLATE_PATH = "#{ROOT_PATH}/lib/sepa/xml_templates/soap"
28
48
 
29
- # Certificates
49
+ # @!endgroup
50
+
51
+
52
+ # @!group Certificates
53
+
54
+ # Path to where the certificates are located
30
55
  CERTIFICATE_PATH = "#{ROOT_PATH}/lib/sepa/certificates/"
56
+
31
57
  nordea_root_certificate_string = File.read("#{CERTIFICATE_PATH}nordea_root_certificate.cer")
58
+
59
+ # Nordea's root certificate as an OpenSSL::X509::Certificate
32
60
  NORDEA_ROOT_CERTIFICATE = OpenSSL::X509::Certificate.new nordea_root_certificate_string
33
61
  danske_root_certificate_string = File.read("#{CERTIFICATE_PATH}danske_root_certificate.cer")
62
+
63
+ # Danske Bank's root certificate as an OpenSSL::X509::Certificate
34
64
  DANSKE_ROOT_CERTIFICATE = OpenSSL::X509::Certificate.new danske_root_certificate_string
35
65
 
36
- # Common XML namespaces
66
+ # @!endgroup
67
+
68
+
69
+ # @!group XML Namespaces
70
+
71
+ # Namespace used by XML digital signature
37
72
  DSIG = 'http://www.w3.org/2000/09/xmldsig#'
73
+
74
+ # Oasis utility namespace used in soap header for security purposes
38
75
  OASIS_UTILITY = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd'
76
+
77
+ # Oasis secext namespace used in soap header for security purposes
39
78
  OASIS_SECEXT = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'
79
+
80
+ # Namespace used in application requests and application responses
40
81
  XML_DATA = 'http://bxd.fi/xmldata/'
82
+
83
+ # Namespace of the node that contains application request or application response
41
84
  BXD = 'http://model.bxd.fi'
85
+
86
+ # Namespace for XML encryption syntax and processing
42
87
  XMLENC = 'http://www.w3.org/2001/04/xmlenc#'
88
+
89
+ # Soap envelope namespace
43
90
  ENVELOPE = 'http://schemas.xmlsoap.org/soap/envelope/'
44
91
 
45
- # Nordea XML namespaces
92
+ # Namespace used in Nordea's certificate requests and responses soap
46
93
  NORDEA_PKI = 'http://bxd.fi/CertificateService'
94
+
95
+ # Namespace used in Nordea's certificate application requests and responses
47
96
  NORDEA_XML_DATA = 'http://filetransfer.nordea.com/xmldata/'
48
97
 
49
- # Danske XML namespaces
98
+ # Namespace used in Danske Bank's certificate services application requests and responses
50
99
  DANSKE_PKI = 'http://danskebank.dk/PKI/PKIFactoryService/elements'
100
+
101
+ # Namespace used in Danske Bank's certificate services soap
51
102
  DANSKE_PKIF = 'http://danskebank.dk/PKI/PKIFactoryService'
103
+
104
+ # @!endgroup
data/readme.md CHANGED
@@ -7,42 +7,40 @@
7
7
 
8
8
  This project aims to create an open source implementation of SEPA Financial Messages using Web Services. Project implementation is done in Ruby.
9
9
 
10
- Currently we have support for SEPA Web Services for:
10
+ Currently we have support for SEPA Web Services for
11
11
 
12
12
  * Nordea
13
13
  * Danske Bank
14
14
 
15
15
  ## Installation
16
16
 
17
- Add this line to your application's Gemfile:
17
+ Add this line to your application's Gemfile
18
18
 
19
19
  ```ruby
20
20
  gem 'sepafm'
21
21
  ```
22
22
 
23
- And then execute:
23
+ And then execute
24
24
 
25
25
  ```bash
26
26
  $ bundle
27
27
  ```
28
28
 
29
- Or install it with:
29
+ **Or** install gem with
30
30
 
31
31
  ```bash
32
32
  $ gem install sepafm
33
33
  ```
34
34
 
35
- ## Usage
36
-
37
- ### Require the gem
35
+ And require it in your code
38
36
 
39
37
  ```ruby
40
38
  require 'sepafm'
41
39
  ```
42
40
 
43
- ### Communicating with the bank
41
+ ## Using the Gem
44
42
 
45
- Define parameters hash for client, ie. get Nordea bank statement;
43
+ Define parameters hash for client, ie. get Nordea bank statement
46
44
 
47
45
  ```ruby
48
46
  params = {
@@ -69,8 +67,6 @@ Send request to bank
69
67
  response = client.send_request
70
68
  ```
71
69
 
72
- ### Interacting with the response
73
-
74
70
  Make sure response is valid
75
71
 
76
72
  ```ruby
@@ -83,7 +79,38 @@ Get response content
83
79
  response.content
84
80
  ```
85
81
 
86
- ### Downloading Nordea certificate
82
+ ## Getting Started
83
+
84
+ First, you need certificates from your bank. For basic requests you'll need
85
+
86
+ * Your signing certificate
87
+ * Private key for your signing certificate
88
+ * Your encryption certificate (Danske Only)
89
+ * Private key for your encryption certificate (Danske Only)
90
+ * Banks encryption certificate (Danske Only)
91
+
92
+ You have to get your bank to sign your signing/encryption certificate(s). For this you need to make
93
+
94
+ * Your signing certificate signing request
95
+ * Your encryption certificate signing request (Danske Only)
96
+
97
+ You can generate your certificate signing requests with `openssl`
98
+
99
+ ```bash
100
+ openssl req -out encryption.csr -new -newkey rsa:2048 -nodes -keyout encryption.key
101
+ openssl req -out signing.csr -new -newkey rsa:2048 -nodes -keyout signing.key
102
+ ```
103
+
104
+ Enter your information and you should have four files
105
+
106
+ ```
107
+ encryption.csr
108
+ encryption.key
109
+ signing.csr
110
+ signing.key
111
+ ```
112
+
113
+ ### Downloading Nordea Certificate
87
114
 
88
115
  Define parameters hash for client
89
116
 
@@ -94,7 +121,7 @@ params = {
94
121
  command: :get_certificate,
95
122
  customer_id: '11111111',
96
123
  environment: 'test',
97
- signing_csr: "...your signing certificate signing request..."
124
+ signing_csr: "...your signing.csr content..."
98
125
  }
99
126
  ```
100
127
 
@@ -116,15 +143,15 @@ Make sure the response is valid
116
143
  response.valid?
117
144
  ```
118
145
 
119
- Get the certificate from the response
146
+ Get the certificate from the response and save it in a safe place
120
147
 
121
148
  ```ruby
122
149
  response.own_signing_certificate
123
150
  ```
124
151
 
125
- ### Downloading Danske bank certificates
152
+ ### Downloading Danske Bank Certificates
126
153
 
127
- #### Bank's certificates
154
+ **Bank's certificates**
128
155
 
129
156
  Define parameters hash for client
130
157
 
@@ -156,7 +183,7 @@ Make sure the response is valid
156
183
  response.valid?
157
184
  ```
158
185
 
159
- Get the certificates from the response
186
+ Get the certificates from the response and save them in a safe place
160
187
 
161
188
  ```ruby
162
189
  # Bank's encryption certificate
@@ -169,19 +196,19 @@ response.bank_signing_certificate
169
196
  response.bank_root_certificate
170
197
  ```
171
198
 
172
- #### Own certificates
199
+ **Own certificates**
173
200
 
174
201
  Define parameters hash
175
202
 
176
203
  ``` ruby
177
204
  params = {
178
205
  bank: :danske,
179
- bank_encryption_certificate: '...banks encryption certificate...',
206
+ bank_encryption_certificate: '...banks encryption certificate content from above...',
180
207
  command: :create_certificate,
181
208
  customer_id: '360817',
182
209
  environment: 'production',
183
- encryption_csr: '...encryption certificate signing request...',
184
- signing_csr: '...signing certificate signing request...',
210
+ encryption_csr: '...your encryption.csr content ...',
211
+ signing_csr: '...your signing.csr content...',
185
212
  pin: '1234'
186
213
  }
187
214
  ```
@@ -204,7 +231,7 @@ Make sure the response is valid
204
231
  response.valid?
205
232
  ```
206
233
 
207
- Get the certificates from the response
234
+ Get the certificates from the response and save them in a safe place
208
235
 
209
236
  ```ruby
210
237
  # Own encryption certificate
@@ -217,42 +244,31 @@ response.own_signing_certificate
217
244
  response.ca_certificate
218
245
  ```
219
246
 
220
- ---
221
-
222
- ### Parameter breakdown
223
-
224
- * **bank** - The bank you want to send the request to as a symbol. Either :nordea or :danske
225
- * **signing_private_key** - Your signing private key in plain text format
226
- * **signing_certificate** - Your signing certificate in plain text format
227
- * **encryption/signing_csr** - Your certificate signing request in plain text format
228
- * **command** - Must be one of:
229
- * download_file_list
230
- * upload_file
231
- * download_file
232
- * get_user_info
233
- * get_certificate
234
- * get_bank_certificate
235
- * create_certificate
236
- * **customer_id** - Your customer id with the bank.
237
- * **environment** - Must be either production or test
238
- * **status** - For filtering stuff. Must be either NEW, DOWNLOADED or ALL
239
- * **target_id** - Some specification of the folder which to access in the bank (Nordea only)
240
- * **language** - Language must be either FI, EN or SV
241
- * **file_type** - File types to upload or download:
242
- * LMP300 = Laskujen maksupalvelu (lähtevä)
243
- * LUM2 = Valuuttamaksut (lähtevä)
244
- * KTL = Saapuvat viitemaksut (saapuva)
245
- * TITO = Konekielinen tiliote (saapuva)
246
- * NDCORPAYS = Yrityksen maksut XML (lähtevä)
247
- * NDCAMT53L = Konekielinen XML-tiliote (saapuva)
248
- * NDCAMT54L = Saapuvat XML viitemaksu (saapuva)
249
- * **content** - The payload to send.
250
- * **file_reference** - File reference for :download_file command
251
- * **pin** - Your personal pin-code provided by the bank
252
-
253
- ---
254
-
255
- ## Upcoming features
247
+ ## Client Parameters
248
+
249
+ Not all parameters are needed in every request.
250
+
251
+ Parameter | Description
252
+ --- | ---
253
+ bank | Bank you want to send the request to. Either `:nordea` or `:danske`
254
+ customer_id | Customer id from bank.
255
+ command | Must be one of: `download_file_list`, `upload_file`, `download_file`, `get_user_info`, `get_certificate`, `get_bank_certificate`, `create_certificate`.
256
+ content | Content to be sent to the bank in `upload_file`.
257
+ environment | Bank's environment where the request is sent. Has to be `production` or `test`.
258
+ language | Language of the response. Must be either `FI`, `EN` or `SV`.
259
+ target_id | Code used to categorize files. Can be retrieved with `get_user_info` -command. Only used by Nordea.
260
+ file_type | Type of the file(s) your are going to download or send. These differ by bank. With Nordea they can be retrieved with `get_user_info` -command.
261
+ file_reference | File's unique identification for downloading a file. Retrieved with `download_file_list` -command.
262
+ status | Status for the file to be retrieved. Has to be `NEW`, `DOWNLOADED` or `ALL`.
263
+ signing_private_key | Your private key of your signing certificate for signing the request.
264
+ encryption_private_key | Your private key of your encryption certificate for decrypting the response.
265
+ own_signing_certificate | Your signing certificate, signed by the bank.
266
+ bank_encryption_certificate | Encryption certificate of the bank for encrypting the request.
267
+ pin | One-time code retrieved from bank which can be used to download new certificates.
268
+ signing_csr | Signing certificate signing request.
269
+ encryption_csr | Encryption certificate signing request.
270
+
271
+ ## Upcoming Features
256
272
 
257
273
  * Parse responses
258
274
  * Bank-to-Customer Statement
@@ -266,8 +282,6 @@ response.ca_certificate
266
282
  * ISO standard "CustomerCreditTransferInitiationV03"
267
283
  * XML schema "pain.001.001.03"
268
284
 
269
- ---
270
-
271
285
  ## Contributing
272
286
 
273
287
  1. Fork it
@@ -4,7 +4,7 @@ class TestSepa < ActiveSupport::TestCase
4
4
 
5
5
  def test_version_must_be_defined
6
6
  refute_nil Sepa::VERSION
7
- assert_equal "0.1.5", Sepa::VERSION
7
+ assert_equal "1.0.0", Sepa::VERSION
8
8
  end
9
9
 
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sepafm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joni Kanerva
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-08-07 00:00:00.000000000 Z
13
+ date: 2014-08-12 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activemodel
@@ -148,6 +148,7 @@ files:
148
148
  - ".gitignore"
149
149
  - ".ruby-version"
150
150
  - ".travis.yml"
151
+ - ".yardopts"
151
152
  - Gemfile
152
153
  - LICENSE
153
154
  - Rakefile
@@ -267,7 +268,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
267
268
  version: '0'
268
269
  requirements: []
269
270
  rubyforge_project:
270
- rubygems_version: 2.3.0
271
+ rubygems_version: 2.4.1
271
272
  signing_key:
272
273
  specification_version: 4
273
274
  summary: SEPA Financial Messages
@@ -317,3 +318,4 @@ test_files:
317
318
  - test/sepa/sepa_test.rb
318
319
  - test/sepa/test_files/invalid_wsdl.wsdl
319
320
  - test/test_helper.rb
321
+ has_rdoc: