epics 2.4.0 → 2.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/.semaphore/semaphore.yml +3 -12
  3. data/CHANGELOG.md +14 -0
  4. data/epics.gemspec +9 -4
  5. data/lib/epics/azv.rb +9 -26
  6. data/lib/epics/b2b.rb +11 -3
  7. data/lib/epics/c2s.rb +11 -7
  8. data/lib/epics/c52.rb +12 -37
  9. data/lib/epics/c53.rb +12 -37
  10. data/lib/epics/c54.rb +12 -37
  11. data/lib/epics/c5n.rb +17 -0
  12. data/lib/epics/ccs.rb +11 -7
  13. data/lib/epics/cct.rb +9 -34
  14. data/lib/epics/cd1.rb +9 -26
  15. data/lib/epics/cdb.rb +9 -34
  16. data/lib/epics/cdd.rb +9 -34
  17. data/lib/epics/cds.rb +11 -7
  18. data/lib/epics/cdz.rb +12 -41
  19. data/lib/epics/cip.rb +13 -0
  20. data/lib/epics/client.rb +40 -19
  21. data/lib/epics/crz.rb +12 -41
  22. data/lib/epics/generic_request.rb +8 -3
  23. data/lib/epics/generic_upload_request.rb +2 -2
  24. data/lib/epics/haa.rb +8 -25
  25. data/lib/epics/hac.rb +12 -41
  26. data/lib/epics/header_request.rb +60 -0
  27. data/lib/epics/hia.rb +6 -16
  28. data/lib/epics/hkd.rb +8 -25
  29. data/lib/epics/hpb.rb +8 -18
  30. data/lib/epics/hpd.rb +8 -25
  31. data/lib/epics/htd.rb +8 -25
  32. data/lib/epics/ini.rb +6 -16
  33. data/lib/epics/letter_renderer.rb +22 -0
  34. data/lib/epics/ptk.rb +12 -41
  35. data/lib/epics/sta.rb +12 -41
  36. data/lib/epics/version.rb +1 -1
  37. data/lib/epics/vmk.rb +12 -41
  38. data/lib/epics/wss.rb +13 -0
  39. data/lib/epics/xct.rb +9 -26
  40. data/lib/epics/xds.rb +11 -3
  41. data/lib/epics/xe2.rb +11 -3
  42. data/lib/epics/xe3.rb +11 -3
  43. data/lib/epics/z52.rb +12 -37
  44. data/lib/epics/z53.rb +12 -37
  45. data/lib/epics/z54.rb +12 -37
  46. data/lib/epics.rb +8 -0
  47. data/lib/letter/ini.erb +260 -150
  48. data/lib/letter/locales/de.yml +19 -0
  49. data/lib/letter/locales/en.yml +19 -0
  50. data/lib/letter/locales/fr.yml +19 -0
  51. data/spec/client_spec.rb +1 -1
  52. data/spec/fixtures/xml/cip.xml +86 -0
  53. data/spec/fixtures/xml/htd_order_data.xml +7 -1
  54. data/spec/hpb_spec.rb +4 -4
  55. data/spec/orders/c52_spec.rb +1 -1
  56. data/spec/orders/c53_spec.rb +1 -1
  57. data/spec/orders/c54_spec.rb +1 -1
  58. data/spec/orders/c5n_spec.rb +9 -0
  59. data/spec/orders/cdz_spec.rb +1 -1
  60. data/spec/orders/cip_spec.rb +23 -0
  61. data/spec/orders/crz_spec.rb +1 -1
  62. data/spec/orders/hac_spec.rb +1 -1
  63. data/spec/orders/ptk_spec.rb +1 -1
  64. data/spec/orders/sta_spec.rb +1 -1
  65. data/spec/orders/vmk_spec.rb +1 -1
  66. data/spec/orders/wss_spec.rb +9 -0
  67. data/spec/orders/z52_spec.rb +1 -1
  68. data/spec/orders/z53_spec.rb +1 -1
  69. data/spec/orders/z54_spec.rb +1 -1
  70. metadata +44 -11
data/lib/letter/ini.erb CHANGED
@@ -4,62 +4,117 @@
4
4
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
5
5
  <meta charset="UTF-8" />
6
6
  <title>EBICS ini</title>
7
+ <style>
8
+ code {
9
+ font-size: 0.6rem;
10
+ overflow-wrap: break-word;
11
+ }
12
+ .code {
13
+ border-style: solid;
14
+ border-width: 1px;
15
+ padding: 8px;
16
+ background-color: azure;
17
+ }
18
+ .strong {
19
+ font-weight: bold;
20
+ }
21
+ h2 {
22
+ text-align: center;
23
+ }
24
+ td {
25
+ min-width: 150px;
26
+ }
27
+ table {
28
+ display: flex;
29
+ justify-content: center;
30
+ }
31
+ .column {
32
+ height: 100px;
33
+ }
34
+ </style>
7
35
  </head>
8
36
  <body>
9
37
  <div>
10
- <h2>EBICS-Initialisierungsbrief (INI)</h2>
38
+ <h2><%= t('initialization_letter.a') %></h2>
11
39
  <table>
12
40
  <tr>
13
41
  <td>
14
- Datum
15
- </td>
16
- <td>
17
- <%= Date.today.strftime("%d.%m.%Y") %>
18
- </td>
19
- </tr>
20
- <tr>
21
- <td>
22
- Uhrzeit
23
- </td>
24
- <td>
25
- <%= Time.now.strftime("%H:%M:%S") %>
26
- </td>
27
- </tr>
28
- <tr>
29
- <td>
30
- Empfänger
31
- </td>
32
- <td>
33
- <%= bankname %>
34
- </td>
35
- </tr>
36
- <tr>
37
- <td>
38
- User-ID
39
- </td>
40
- <td>
41
- <%= user_id %>
42
- </td>
43
- </tr>
44
- <tr>
45
- <td>
46
- Kunden-ID
47
- </td>
48
- <td>
49
- <%= partner_id %>
42
+ <div class="column">
43
+ <table>
44
+ <tr>
45
+ <td class="strong">
46
+ <%= t('date') %> :
47
+ </td>
48
+ <td>
49
+ <%= Date.today.strftime('%d.%m.%Y') %>
50
+ </td>
51
+ </tr>
52
+ <tr>
53
+ <td class="strong">
54
+ <%= t('time') %> :
55
+ </td>
56
+ <td>
57
+ <%= Time.now.strftime('%H:%M:%S') %>
58
+ </td>
59
+ </tr>
60
+ <tr>
61
+ <td class="strong">
62
+ <%= t('recipient') %> :
63
+ </td>
64
+ <td>
65
+ <%= bankname %>
66
+ </td>
67
+ </tr>
68
+ </table>
69
+ </div>
70
+ </td>
71
+ <td>
72
+ <div class="column">
73
+ <table>
74
+ <tr>
75
+ <td class="strong">
76
+ Host-ID :
77
+ </td>
78
+ <td>
79
+ <%= host_id %>
80
+ </td>
81
+ </tr>
82
+ <tr>
83
+ <td class="strong">
84
+ User-ID :
85
+ </td>
86
+ <td>
87
+ <%= user_id %>
88
+ </td>
89
+ </tr>
90
+ <tr>
91
+ <td class="strong">
92
+ Partner-ID :
93
+ </td>
94
+ <td>
95
+ <%= partner_id %>
96
+ </td>
97
+ </tr>
98
+ <tr>
99
+ <td class="strong">
100
+ <%= t('version') %> :
101
+ </td>
102
+ <td>
103
+ A006
104
+ </td>
105
+ </tr>
106
+ </table>
107
+ </div>
50
108
  </td>
51
109
  </tr>
52
110
  </table>
53
- <p>Öffentlicher Schlüssel für die elektronische Unterschrift (A006)</p>
54
- <p>Exponent (<%= a.key.e.num_bytes * 8 %> Bit):</p>
55
- <p><code><%= a.e %></code></p>
56
- <p>Modulus (<%= a.key.n.num_bytes * 8 %> Bit):</p>
57
- <p><code><%= a.n.scan(/.{2}/).join(" ") %></code></p>
58
- <p>Hash (SHA-256):</p>
59
- <p>
60
- <code><%= Base64.decode64(a.public_digest).unpack("H*").join.upcase.scan(/.{2}/).join(" ") %></code>
61
- </p>
62
- <p>Ich bestätige hiermit den obigen öffentlichen Schlüssel für meine elektronische Unterschrift.</p>
111
+ <p><%= t('exponent') %> (<%= t('bit', bit: a.key.e.num_bytes * 8) %>) :</p>
112
+ <p class="code"><code><%= a.e %></code></p>
113
+ <p><%= t('modulus') %> (<%= t('bit', bit: a.key.n.num_bytes * 8) %>) :</p>
114
+ <p class="code"><code><%= a.n.scan(/.{2}/).join(' ') %></code></p>
115
+ <p><%= t('hash') %> (SHA-256) :</p>
116
+ <p class="code"><code><%= Base64.decode64(a.public_digest).unpack('H*').join.upcase.scan(/.{2}/).join(' ') %></code></p>
117
+ <p><%= t('confirmation') %></p>
63
118
  <br/>
64
119
  <br/>
65
120
  <br/>
@@ -78,126 +133,181 @@
78
133
  </tr>
79
134
  <tr>
80
135
  <td>
81
- Ort/Datum
136
+ <%= t('issued_in') %>
82
137
  </td>
83
138
  <td>
84
- Name/Firma
139
+ <%= t('name') %>
85
140
  </td>
86
141
  <td>
87
- Unterschrift
142
+ <%= t('signature') %>
88
143
  </td>
89
144
  </tr>
90
145
  </table>
91
146
  </div>
92
147
  <div style="page-break-after:always"></div>
93
- <h2>EBICS-Initialisierungsbrief (HIA) - Seite 1/2</h2>
94
- <table>
95
- <tr>
96
- <td>
97
- Datum
98
- </td>
99
- <td>
100
- <%= Date.today.strftime("%d.%m.%Y") %>
101
- </td>
102
- </tr>
103
- <tr>
104
- <td>
105
- Uhrzeit
106
- </td>
107
- <td>
108
- <%= Time.now.strftime("%H:%M:%S") %>
109
- </td>
110
- </tr>
111
- <tr>
112
- <td>
113
- Empfänger
114
- </td>
115
- <td>
116
- <%= bankname %>
117
- </td>
118
- </tr>
119
- <tr>
120
- <td>
121
- User-ID
122
- </td>
123
- <td>
124
- <%= user_id %>
125
- </td>
126
- </tr>
127
- <tr>
128
- <td>
129
- Kunden-ID
130
- </td>
131
- <td>
132
- <%= partner_id %>
133
- </td>
134
- </tr>
135
- </table>
136
148
  <div>
137
- <p>Öffentlicher Authentifikationsschlüssel (X002)</p>
138
- <p>Exponent (<%= x.key.e.num_bytes * 8 %> Bit):</p>
139
- <p><code><%= x.e %></code></p>
140
- <p>Modulus (<%= x.key.n.num_bytes * 8 %> Bit):</p>
141
- <p><code><%= x.n.scan(/.{2}/).join(" ") %></code></p>
142
- <p>Hash (SHA-256):</p>
143
- <p>
144
- <code><%= Base64.decode64(x.public_digest).unpack("H*").join.upcase.scan(/.{2}/).join(" ") %></code>
145
- </p>
146
- <p> Fortsetzung auf Seite 2 ...</p>
147
- <div style="page-break-after:always"></div>
148
- <h2>EBICS-Initialisierungsbrief (HIA) - Seite 2/2</h2>
149
+ <h2><%= t('initialization_letter.x') %></h2>
149
150
  <table>
150
151
  <tr>
151
152
  <td>
152
- Datum
153
- </td>
154
- <td>
155
- <%= Date.today.strftime("%d.%m.%Y") %>
156
- </td>
157
- </tr>
158
- <tr>
159
- <td>
160
- Uhrzeit
161
- </td>
162
- <td>
163
- <%= Time.now.strftime("%H:%M:%S") %>
164
- </td>
165
- </tr>
166
- <tr>
167
- <td>
168
- Empfänger
169
- </td>
170
- <td>
171
- <%= bankname %>
172
- </td>
173
- </tr>
174
- <tr>
175
- <td>
176
- User-ID
177
- </td>
178
- <td>
179
- <%= user_id %>
153
+ <div class="column">
154
+ <table>
155
+ <tr>
156
+ <td class="strong">
157
+ <%= t('date') %> :
158
+ </td>
159
+ <td>
160
+ <%= Date.today.strftime('%d.%m.%Y') %>
161
+ </td>
162
+ </tr>
163
+ <tr>
164
+ <td class="strong">
165
+ <%= t('time') %> :
166
+ </td>
167
+ <td>
168
+ <%= Time.now.strftime('%H:%M:%S') %>
169
+ </td>
170
+ </tr>
171
+ <tr>
172
+ <td class="strong">
173
+ <%= t('recipient') %> :
174
+ </td>
175
+ <td>
176
+ <%= bankname %>
177
+ </td>
178
+ </tr>
179
+ </table>
180
+ </div>
181
+ </td>
182
+ <td>
183
+ <div class="column">
184
+ <table>
185
+ <tr>
186
+ <td class="strong">
187
+ Host-ID :
188
+ </td>
189
+ <td>
190
+ <%= host_id %>
191
+ </td>
192
+ </tr>
193
+ <tr>
194
+ <td class="strong">
195
+ User-ID :
196
+ </td>
197
+ <td>
198
+ <%= user_id %>
199
+ </td>
200
+ </tr>
201
+ <tr>
202
+ <td class="strong">
203
+ Partner-ID :
204
+ </td>
205
+ <td>
206
+ <%= partner_id %>
207
+ </td>
208
+ </tr>
209
+ <tr>
210
+ <td class="strong">
211
+ <%= t('version') %> :
212
+ </td>
213
+ <td>
214
+ X002
215
+ </td>
216
+ </tr>
217
+ </table>
218
+ </div>
180
219
  </td>
181
220
  </tr>
221
+ </table>
222
+ <p><%= t('exponent') %> (<%= t('bit', bit: x.key.e.num_bytes * 8) %>) :</p>
223
+ <p class="code"><code><%= x.e %></code></p>
224
+ <p><%= t('modulus') %> (<%= t('bit', bit: x.key.n.num_bytes * 8) %>) :</p>
225
+ <p class="code"><code><%= x.n.scan(/.{2}/).join(' ') %></code></p>
226
+ <p><%= t('hash') %> (SHA-256) :</p>
227
+ <p class="code"><code><%= Base64.decode64(x.public_digest).unpack('H*').join.upcase.scan(/.{2}/).join(' ') %></code></p>
228
+ </div>
229
+ <div style="page-break-after:always"></div>
230
+ <div>
231
+ <h2><%= t('initialization_letter.e') %></h2>
232
+ <table>
182
233
  <tr>
183
234
  <td>
184
- Kunden-ID
185
- </td>
186
- <td>
187
- <%= partner_id %>
235
+ <div class="column">
236
+ <table>
237
+ <tr>
238
+ <td class="strong">
239
+ <%= t('date') %> :
240
+ </td>
241
+ <td>
242
+ <%= Date.today.strftime('%d.%m.%Y') %>
243
+ </td>
244
+ </tr>
245
+ <tr>
246
+ <td class="strong">
247
+ <%= t('time') %> :
248
+ </td>
249
+ <td>
250
+ <%= Time.now.strftime('%H:%M:%S') %>
251
+ </td>
252
+ </tr>
253
+ <tr>
254
+ <td class="strong">
255
+ <%= t('recipient') %> :
256
+ </td>
257
+ <td>
258
+ <%= bankname %>
259
+ </td>
260
+ </tr>
261
+ </table>
262
+ </div>
263
+ </td>
264
+ <td>
265
+ <div class="column">
266
+ <table>
267
+ <tr>
268
+ <td class="strong">
269
+ Host-ID :
270
+ </td>
271
+ <td>
272
+ <%= host_id %>
273
+ </td>
274
+ </tr>
275
+ <tr>
276
+ <td class="strong">
277
+ User-ID :
278
+ </td>
279
+ <td>
280
+ <%= user_id %>
281
+ </td>
282
+ </tr>
283
+ <tr>
284
+ <td class="strong">
285
+ Partner-ID :
286
+ </td>
287
+ <td>
288
+ <%= partner_id %>
289
+ </td>
290
+ </tr>
291
+ <tr>
292
+ <td class="strong">
293
+ <%= t('version') %> :
294
+ </td>
295
+ <td>
296
+ E002
297
+ </td>
298
+ </tr>
299
+ </table>
300
+ </div>
188
301
  </td>
189
302
  </tr>
190
303
  </table>
191
- </div>
192
- <div>
193
- <p>Öffentlicher Verschlüsselungsschlüssel (E002)</p>
194
- <p>Exponent (<%= e.key.e.num_bytes * 8 %> Bit):</p>
195
- <p><code><%= e.e %></code></p>
196
- <p>Modulus (<%= e.key.n.num_bytes * 8 %> Bit):</p>
197
- <p><code><%= e.n.scan(/.{2}/).join(" ") %></code></p>
198
- <p>Hash (SHA-256):</p>
199
- <p><code><%= Base64.decode64(e.public_digest).unpack("H*").join.upcase.scan(/.{2}/).join(" ") %></code></p>
200
- <p>Ich bestätige hiermit die obigen öffentlichen Schlüssel für meinen EBICS-Zugang.</p>
304
+ <p><%= t('exponent') %> (<%= t('bit', bit: e.key.e.num_bytes * 8) %>) :</p>
305
+ <p class="code"><code><%= e.e %></code></p>
306
+ <p><%= t('modulus') %> (<%= t('bit', bit: e.key.n.num_bytes * 8) %>) :</p>
307
+ <p class="code"><code><%= e.n.scan(/.{2}/).join(' ') %></code></p>
308
+ <p><%= t('hash') %> (SHA-256) :</p>
309
+ <p class="code"><code><%= Base64.decode64(e.public_digest).unpack('H*').join.upcase.scan(/.{2}/).join(' ') %></code></p>
310
+ <p><%= t('confirmation') %></p>
201
311
  <br/>
202
312
  <br/>
203
313
  <br/>
@@ -216,13 +326,13 @@
216
326
  </tr>
217
327
  <tr>
218
328
  <td>
219
- Ort/Datum
329
+ <%= t('issued_in') %>
220
330
  </td>
221
331
  <td>
222
- Name/Firma
332
+ <%= t('name') %>
223
333
  </td>
224
334
  <td>
225
- Unterschrift
335
+ <%= t('signature') %>
226
336
  </td>
227
337
  </tr>
228
338
  </table>
@@ -0,0 +1,19 @@
1
+ de:
2
+ epics:
3
+ letter:
4
+ date: Datum
5
+ time: Uhrzeit
6
+ recipient: Empfänger
7
+ signature: Unterschrift
8
+ version: Version
9
+ exponent: Exponent
10
+ modulus: Modulus
11
+ hash: Hash
12
+ bit: '%{bit} Bit'
13
+ issued_in: Ort/Datum
14
+ name: Name/Firma
15
+ confirmation: Ich bestätige hiermit den obigen öffentlichen Schlüssel für meine elektronische Unterschrift.
16
+ initialization_letter:
17
+ a: Initialisierungsbrief für SIGNATUR-Zertifikat (INI)
18
+ x: Initialisierungsbrief für AUTHENTIFIZIERUNGS-Zertifikat (HIA)
19
+ e: Initialisierungsbrief für VERSCHLÜSSELUNGS-Zertifikat (HIA)
@@ -0,0 +1,19 @@
1
+ en:
2
+ epics:
3
+ letter:
4
+ date: Date
5
+ time: Time
6
+ recipient: Recipient
7
+ signature: Signature
8
+ version: Version
9
+ exponent: Exponent
10
+ modulus: Modulus
11
+ hash: Hash
12
+ bit: '%{bit} Bit'
13
+ issued_in: Location/Date
14
+ name: Name/Company
15
+ confirmation: I hearby confirm the public key above for my electronic signature.
16
+ initialization_letter:
17
+ a: Initialization letter for SIGNATURE certificate (INI)
18
+ x: Initialization letter for AUTHENTICATION certificate (HIA)
19
+ e: Initialization letter for ENCRYPTION certificate (HIA)
@@ -0,0 +1,19 @@
1
+ fr:
2
+ epics:
3
+ letter:
4
+ date: Date
5
+ time: Heure
6
+ recipient: Destinataire
7
+ signature: Signature
8
+ version: Version
9
+ exponent: Exponent
10
+ modulus: Modulus
11
+ hash: Hash
12
+ bit: '%{bit} Bit'
13
+ issued_in: Lieu/Date
14
+ name: Nom/Société
15
+ confirmation: Je confirme par la présente la clé publique ci-dessus pour ma signature électronique.
16
+ initialization_letter:
17
+ a: Lettre d'initialization du certificat de SIGNATURE (INI)
18
+ x: Lettre d'initialization du certificat d'AUTHENTIFICATION (HIA)
19
+ e: Lettre d'initialization du certificat de CHIFFREMENT (HIA)
data/spec/client_spec.rb CHANGED
@@ -88,7 +88,7 @@ RSpec.describe Epics::Client do
88
88
  end
89
89
 
90
90
  it 'extracts the accessible order types of a subscriber' do
91
- expect(subject.order_types).to match_array(%w(PTK HPD HTD STA HVD HPB HAA HVT HVU HVZ INI SPR PUB HIA HCA HSA HVE HVS CCS CCT CD1 CDB CDD))
91
+ expect(subject.order_types).to match_array(%w(PTK HPD HTD STA HVD HPB HAA HVT HVU HVZ INI SPR PUB HIA HCA HSA HVE HVS CCS CCT CIP CD1 CDB CDD))
92
92
  end
93
93
  end
94
94
 
@@ -0,0 +1,86 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09 pain.001.001.09.xsd">
3
+ <CstmrCdtTrfInitn>
4
+ <GrpHdr>
5
+ <MsgId>Message-ID-0815</MsgId>
6
+ <CreDtTm>2022-09-15T09:31:39.000Z</CreDtTm>
7
+ <NbOfTxs>2</NbOfTxs>
8
+ <CtrlSum>1122.33</CtrlSum>
9
+ <InitgPty>
10
+ <Nm>Initiator Name</Nm>
11
+ </InitgPty>
12
+ </GrpHdr>
13
+ <PmtInf>
14
+ <PmtInfId>Payment-Information-ID-0815</PmtInfId>
15
+ <PmtMtd>TRF</PmtMtd>
16
+ <BtchBookg>true</BtchBookg>
17
+ <NbOfTxs>2</NbOfTxs>
18
+ <CtrlSum>1122.33</CtrlSum>
19
+ <PmtTpInf>
20
+ <SvcLvl>
21
+ <Cd>SEPA</Cd>
22
+ </SvcLvl>
23
+ <LclInstrm>
24
+ <Cd>INST</Cd>
25
+ </LclInstrm>
26
+ </PmtTpInf>
27
+ <ReqdExctnDt>
28
+ <DtTm>2022-09-16T10:00:00</DtTm>
29
+ </ReqdExctnDt>
30
+ <Dbtr>
31
+ <Nm>Herr Schnellzahler</Nm>
32
+ </Dbtr>
33
+ <DbtrAcct>
34
+ <Id>
35
+ <IBAN>DE89370400440532013000</IBAN>
36
+ </Id>
37
+ </DbtrAcct>
38
+ <DbtrAgt>
39
+ <FinInstnId>
40
+ <Othr>
41
+ <Id>NOTPROVIDED</Id>
42
+ </Othr>
43
+ </FinInstnId>
44
+ </DbtrAgt>
45
+ <ChrgBr>SLEV</ChrgBr>
46
+ <CdtTrfTxInf>
47
+ <PmtId>
48
+ <EndToEndId>OriginID1</EndToEndId>
49
+ </PmtId>
50
+ <Amt>
51
+ <InstdAmt Ccy="EUR">1022.00</InstdAmt>
52
+ </Amt>
53
+ <Cdtr>
54
+ <Nm>John Dough</Nm>
55
+ </Cdtr>
56
+ <CdtrAcct>
57
+ <Id>
58
+ <IBAN>AT611904300234573201</IBAN>
59
+ </Id>
60
+ </CdtrAcct>
61
+ <RmtInf>
62
+ <Ustrd>Unstructured Remittance Information</Ustrd>
63
+ </RmtInf>
64
+ </CdtTrfTxInf>
65
+ <CdtTrfTxInf>
66
+ <PmtId>
67
+ <EndToEndId>OriginID2</EndToEndId>
68
+ </PmtId>
69
+ <Amt>
70
+ <InstdAmt Ccy="EUR">100.33</InstdAmt>
71
+ </Amt>
72
+ <Cdtr>
73
+ <Nm>Cookie Cutter</Nm>
74
+ </Cdtr>
75
+ <CdtrAcct>
76
+ <Id>
77
+ <IBAN>AT611904300234573201</IBAN>
78
+ </Id>
79
+ </CdtrAcct>
80
+ <RmtInf>
81
+ <Ustrd>Unstructured Remittance Information</Ustrd>
82
+ </RmtInf>
83
+ </CdtTrfTxInf>
84
+ </PmtInf>
85
+ </CstmrCdtTrfInitn>
86
+ </Document>
@@ -127,6 +127,12 @@
127
127
  <Description>Credit Transfer Initiation</Description>
128
128
  <NumSigRequired>1</NumSigRequired>
129
129
  </OrderInfo>
130
+ <OrderInfo>
131
+ <OrderType>CIP</OrderType>
132
+ <TransferType>Upload</TransferType>
133
+ <Description>Instant Credit Transfer Initiation</Description>
134
+ <NumSigRequired>1</NumSigRequired>
135
+ </OrderInfo>
130
136
  <OrderInfo>
131
137
  <OrderType>CD1</OrderType>
132
138
  <TransferType>Upload</TransferType>
@@ -153,7 +159,7 @@
153
159
  <OrderTypes>PTK HPD HTD STA HVD HPB HAA HVT HVU HVZ</OrderTypes>
154
160
  </Permission>
155
161
  <Permission AuthorisationLevel="E">
156
- <OrderTypes>INI SPR PUB HIA HCA HSA HVE HVS CCS CCT CD1 CDB CDD</OrderTypes>
162
+ <OrderTypes>INI SPR PUB HIA HCA HSA HVE HVS CCS CCT CIP CD1 CDB CDD</OrderTypes>
157
163
  </Permission>
158
164
  </UserInfo>
159
165
  </HTDResponseOrderData>
data/spec/hpb_spec.rb CHANGED
@@ -1,14 +1,14 @@
1
1
  RSpec.describe Epics::HPB do
2
- let(:client) { instance_double(Epics::Client, host_id: "HOST", user_id: "USER", partner_id: "PARTNER") }
2
+ let(:client) { Epics::Client.new( File.open(File.join( File.dirname(__FILE__), 'fixtures', 'SIZBN001.key')), 'secret' , 'https://194.180.18.30/ebicsweb/ebicsweb', 'SIZBN001', 'EBIX', 'EBICS') }
3
3
  describe '#to_xml' do
4
4
  subject { Nokogiri::XML.parse(described_class.new(client).to_xml) }
5
5
 
6
6
  specify do
7
7
  expect(subject.xpath("//xmlns:Timestamp").first.content).to_not be_nil
8
8
  expect(subject.xpath("//xmlns:Nonce").first.content).to_not be_nil
9
- expect(subject.xpath("//xmlns:HostID").first.content).to eq("HOST")
10
- expect(subject.xpath("//xmlns:UserID").first.content).to eq("USER")
11
- expect(subject.xpath("//xmlns:PartnerID").first.content).to eq("PARTNER")
9
+ expect(subject.xpath("//xmlns:HostID").first.content).to eq("SIZBN001")
10
+ expect(subject.xpath("//xmlns:UserID").first.content).to eq("EBIX")
11
+ expect(subject.xpath("//xmlns:PartnerID").first.content).to eq("EBICS")
12
12
  end
13
13
  end
14
14
 
@@ -2,7 +2,7 @@ RSpec.describe Epics::C52 do
2
2
 
3
3
  let(:client) { Epics::Client.new( File.open(File.join( File.dirname(__FILE__), '..', 'fixtures', 'SIZBN001.key')), 'secret' , 'https://194.180.18.30/ebicsweb/ebicsweb', 'SIZBN001', 'EBIX', 'EBICS') }
4
4
 
5
- subject { described_class.new(client, "2014-09-01", "2014-09-30") }
5
+ subject { described_class.new(client, from: "2014-09-01", to: "2014-09-30") }
6
6
 
7
7
  describe '#to_xml' do
8
8
  specify { expect(subject.to_xml).to be_a_valid_ebics_doc }