epics 1.5.0 → 1.5.1
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 +4 -4
- data/CHANGELOG.md +7 -0
- data/lib/epics.rb +3 -0
- data/lib/epics/azv.rb +41 -0
- data/lib/epics/ccs.rb +9 -0
- data/lib/epics/cdd.rb +9 -2
- data/lib/epics/cds.rb +9 -0
- data/lib/epics/client.rb +15 -1
- data/lib/epics/version.rb +1 -1
- data/spec/client_spec.rb +26 -9
- data/spec/middleware/parse_ebics_spec.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ecad438a0c8a714c21a37886e6acad344ed255a4
|
4
|
+
data.tar.gz: 3555440053e69ad6827ce80f2503b428696ffd21
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a94e3e00b5bd98e9237a0c0e2d6c1a6dbd9c0d0f2662d587245200add1aed0f115fc7cc5dc1ec1043606e29fcd0cfc17b3b8c82ae17ad8d0bd7d4f42575726f5
|
7
|
+
data.tar.gz: cbe1262312b000848dd14018b78214693eea72dc11b10ad9e331718364d8bd3b9699e00a390d10ef647eb1e1712a3dcb919eaaef99f98a8bb65b4c9b6e18777a
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
### 1.5.1
|
2
|
+
|
3
|
+
* [ENHANCEMENT] some banks are not returning the order_id in the second upload phase, we now fetch it already
|
4
|
+
from the first response to handle this different behaviour.
|
5
|
+
* [ENHANCEMENT] New order types: `AZV` (Auslandszahlungsverkehr). `CDS` and `CCS` for submitting SEPA credits/debits
|
6
|
+
as SRZ (Service Rechen Zentrum)
|
7
|
+
|
1
8
|
### 1.5.0
|
2
9
|
|
3
10
|
* [ENHANCEMENT] support for fetching the C54 order type
|
data/lib/epics.rb
CHANGED
@@ -18,6 +18,7 @@ require "epics/middleware/xmlsig"
|
|
18
18
|
require "epics/middleware/parse_ebics"
|
19
19
|
require "epics/generic_request"
|
20
20
|
require "epics/generic_upload_request"
|
21
|
+
require "epics/azv"
|
21
22
|
require "epics/hpb"
|
22
23
|
require "epics/hkd"
|
23
24
|
require "epics/htd"
|
@@ -32,8 +33,10 @@ require "epics/hac"
|
|
32
33
|
require "epics/hpd"
|
33
34
|
require "epics/cd1"
|
34
35
|
require "epics/cct"
|
36
|
+
require "epics/ccs"
|
35
37
|
require "epics/cdb"
|
36
38
|
require "epics/cdd"
|
39
|
+
require "epics/cds"
|
37
40
|
require "epics/hia"
|
38
41
|
require "epics/ini"
|
39
42
|
require "epics/signer"
|
data/lib/epics/azv.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
class Epics::AZV < Epics::GenericUploadRequest
|
2
|
+
def header
|
3
|
+
{
|
4
|
+
:@authenticate => true,
|
5
|
+
static: {
|
6
|
+
"HostID" => host_id,
|
7
|
+
"Nonce" => nonce,
|
8
|
+
"Timestamp" => timestamp,
|
9
|
+
"PartnerID" => partner_id,
|
10
|
+
"UserID" => user_id,
|
11
|
+
"Product" => {
|
12
|
+
:@Language => "de",
|
13
|
+
:content! => "EPICS - a ruby ebics kernel"
|
14
|
+
},
|
15
|
+
"OrderDetails" => {
|
16
|
+
"OrderType" => "AZV",
|
17
|
+
"OrderAttribute" => "OZHNN",
|
18
|
+
"StandardOrderParams/" => ""
|
19
|
+
},
|
20
|
+
"BankPubKeyDigests" => {
|
21
|
+
"Authentication" => {
|
22
|
+
:@Version => "X002",
|
23
|
+
:@Algorithm => "http://www.w3.org/2001/04/xmlenc#sha256",
|
24
|
+
:content! => client.bank_x.public_digest
|
25
|
+
},
|
26
|
+
"Encryption" => {
|
27
|
+
:@Version => "E002",
|
28
|
+
:@Algorithm => "http://www.w3.org/2001/04/xmlenc#sha256",
|
29
|
+
:content! => client.bank_e.public_digest
|
30
|
+
}
|
31
|
+
},
|
32
|
+
"SecurityMedium" => "0000",
|
33
|
+
"NumSegments" => 1
|
34
|
+
},
|
35
|
+
"mutable" => {
|
36
|
+
"TransactionPhase" => "Initialisation"
|
37
|
+
}
|
38
|
+
}
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
data/lib/epics/ccs.rb
ADDED
data/lib/epics/cdd.rb
CHANGED
@@ -1,4 +1,11 @@
|
|
1
1
|
class Epics::CDD < Epics::GenericUploadRequest
|
2
|
+
def order_attribute
|
3
|
+
'OZHNN'
|
4
|
+
end
|
5
|
+
|
6
|
+
def order_type
|
7
|
+
'CDD'
|
8
|
+
end
|
2
9
|
|
3
10
|
def header
|
4
11
|
{
|
@@ -14,8 +21,8 @@ class Epics::CDD < Epics::GenericUploadRequest
|
|
14
21
|
:content! => "EPICS - a ruby ebics kernel"
|
15
22
|
},
|
16
23
|
"OrderDetails" => {
|
17
|
-
"OrderType" =>
|
18
|
-
"OrderAttribute" =>
|
24
|
+
"OrderType" => order_type,
|
25
|
+
"OrderAttribute" => order_attribute,
|
19
26
|
"StandardOrderParams/" => ""
|
20
27
|
},
|
21
28
|
"BankPubKeyDigests" => {
|
data/lib/epics/cds.rb
ADDED
data/lib/epics/client.rb
CHANGED
@@ -115,6 +115,10 @@ class Epics::Client
|
|
115
115
|
[bank_x, bank_e]
|
116
116
|
end
|
117
117
|
|
118
|
+
def AZV(document)
|
119
|
+
upload(Epics::AZV, document)
|
120
|
+
end
|
121
|
+
|
118
122
|
def CD1(document)
|
119
123
|
upload(Epics::CD1, document)
|
120
124
|
end
|
@@ -123,10 +127,18 @@ class Epics::Client
|
|
123
127
|
upload(Epics::CDD, document)
|
124
128
|
end
|
125
129
|
|
130
|
+
def CDS(document)
|
131
|
+
upload(Epics::CDS, document)
|
132
|
+
end
|
133
|
+
|
126
134
|
def CCT(document)
|
127
135
|
upload(Epics::CCT, document)
|
128
136
|
end
|
129
137
|
|
138
|
+
def CCS(document)
|
139
|
+
upload(Epics::CCS, document)
|
140
|
+
end
|
141
|
+
|
130
142
|
def STA(from = nil, to = nil)
|
131
143
|
download(Epics::STA, from, to)
|
132
144
|
end
|
@@ -186,9 +198,11 @@ class Epics::Client
|
|
186
198
|
res = post(url, order.to_xml).body
|
187
199
|
order.transaction_id = res.transaction_id
|
188
200
|
|
201
|
+
order_id = res.order_id
|
202
|
+
|
189
203
|
res = post(url, order.to_transfer_xml).body
|
190
204
|
|
191
|
-
return res.transaction_id, res.order_id
|
205
|
+
return res.transaction_id, [res.order_id, order_id].detect { |id| id.to_s.chars.any? }
|
192
206
|
end
|
193
207
|
|
194
208
|
def download(order_type, *args)
|
data/lib/epics/version.rb
CHANGED
data/spec/client_spec.rb
CHANGED
@@ -117,22 +117,39 @@ RSpec.describe Epics::Client do
|
|
117
117
|
|
118
118
|
it { expect(subject.keys["SIZBN001.E002"].public_digest).to eq(e_key.public_digest) }
|
119
119
|
it { expect(subject.keys["SIZBN001.X002"].public_digest).to eq(e_key.public_digest) }
|
120
|
-
|
121
120
|
end
|
122
121
|
end
|
123
122
|
|
124
123
|
describe '#CD1' do
|
125
124
|
let(:cd1_document) { File.read(File.join(File.dirname(__FILE__), 'fixtures', 'xml', 'cd1.xml')) }
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
125
|
+
describe 'normal behaviour' do
|
126
|
+
before do
|
127
|
+
stub_request(:post, "https://194.180.18.30/ebicsweb/ebicsweb")
|
128
|
+
.with(:body => %r[<TransactionPhase>Initialisation</TransactionPhase>])
|
129
|
+
.to_return(status: 200, body: File.read(File.join(File.dirname(__FILE__), 'fixtures', 'xml', 'cd1_init_response.xml')))
|
130
|
+
stub_request(:post, "https://194.180.18.30/ebicsweb/ebicsweb")
|
131
|
+
.with(:body => %r[<TransactionPhase>Transfer</TransactionPhase>])
|
132
|
+
.to_return(status: 200, body: File.read(File.join(File.dirname(__FILE__), 'fixtures', 'xml', 'cd1_transfer_response.xml')))
|
133
|
+
end
|
134
|
+
|
135
|
+
it { expect(subject.CD1(cd1_document)).to eq(["387B7BE88FE33B0F4B60AC64A63F18E2","N00L"]) }
|
133
136
|
end
|
134
137
|
|
135
|
-
|
138
|
+
describe 'special case' do
|
139
|
+
before do
|
140
|
+
stub_request(:post, "https://194.180.18.30/ebicsweb/ebicsweb")
|
141
|
+
.with(:body => %r[<TransactionPhase>Initialisation</TransactionPhase>])
|
142
|
+
.to_return(status: 200, body: File.read(File.join(File.dirname(__FILE__), 'fixtures', 'xml', 'cd1_init_response.xml')).sub('N00L', 'N11L'))
|
143
|
+
stub_request(:post, "https://194.180.18.30/ebicsweb/ebicsweb")
|
144
|
+
.with(:body => %r[<TransactionPhase>Transfer</TransactionPhase>])
|
145
|
+
.to_return(status: 200, body: File.read(File.join(File.dirname(__FILE__), 'fixtures', 'xml', 'cd1_transfer_response.xml')).sub('<OrderID>N00L</OrderID>', ''))
|
146
|
+
end
|
147
|
+
|
148
|
+
# happend on some handelsbank accounts
|
149
|
+
it 'can also try to fetch the order_id from the first transaction being made' do
|
150
|
+
expect(subject.CD1(cd1_document)).to eq(["387B7BE88FE33B0F4B60AC64A63F18E2","N11L"])
|
151
|
+
end
|
152
|
+
end
|
136
153
|
end
|
137
154
|
|
138
155
|
describe '#HTD' do
|
@@ -2,12 +2,12 @@ RSpec.describe Epics::ParseEbics do
|
|
2
2
|
|
3
3
|
subject do
|
4
4
|
Faraday.new do |builder|
|
5
|
+
builder.use Epics::ParseEbics
|
5
6
|
builder.adapter :test, Faraday::Adapter::Test::Stubs.new do |stub|
|
6
7
|
stub.post('/business_nok') {[ 200, {}, File.read( File.join( File.dirname(__FILE__), '..', 'fixtures', 'xml', 'ebics_business_nok.xml') ) ]}
|
7
8
|
stub.post('/technical_nok') {[ 200, {}, File.read( File.join( File.dirname(__FILE__), '..', 'fixtures', 'xml', 'ebics_technical_nok.xml') ) ]}
|
8
9
|
stub.post('/ok') {[ 200, {}, File.read( File.join( File.dirname(__FILE__), '..', 'fixtures', 'xml', 'hpb_response_ebics_ns.xml') ) ]}
|
9
10
|
end
|
10
|
-
builder.use Epics::ParseEbics
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: epics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lars Brillert
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-09-
|
11
|
+
date: 2017-09-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -178,13 +178,16 @@ files:
|
|
178
178
|
- Rakefile
|
179
179
|
- epics.gemspec
|
180
180
|
- lib/epics.rb
|
181
|
+
- lib/epics/azv.rb
|
181
182
|
- lib/epics/c52.rb
|
182
183
|
- lib/epics/c53.rb
|
183
184
|
- lib/epics/c54.rb
|
185
|
+
- lib/epics/ccs.rb
|
184
186
|
- lib/epics/cct.rb
|
185
187
|
- lib/epics/cd1.rb
|
186
188
|
- lib/epics/cdb.rb
|
187
189
|
- lib/epics/cdd.rb
|
190
|
+
- lib/epics/cds.rb
|
188
191
|
- lib/epics/client.rb
|
189
192
|
- lib/epics/error.rb
|
190
193
|
- lib/epics/generic_request.rb
|