mirror of
https://github.com/node-ebics/node-ebics-client.git
synced 2025-08-15 12:15:36 +00:00
Compare commits
25 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
0049fffc00 | ||
|
2c9040904a | ||
|
0f6dcf9eb2 | ||
|
ca31edf245 | ||
|
4464349d0f | ||
|
15546df9ea | ||
|
40467a2c5e | ||
|
eb9fbf5834 | ||
|
166c61aec4 | ||
|
5a63e19aab | ||
|
9e6c318372 | ||
|
ce6e58b3f3 | ||
|
7dad7c8787 | ||
|
79f17e1404 | ||
|
3ef32c8ce5 | ||
|
aa761cf7ad | ||
|
5ff3147124 | ||
|
01d4634d86 | ||
|
89904afa63 | ||
|
4907524259 | ||
|
c9f52d3bd9 | ||
|
f5b05ae491 | ||
|
9f88b048d7 | ||
|
d06e92c51c | ||
|
cb2062ae2f |
@@ -1,4 +1,4 @@
|
||||
# node-ebics-client v0.0.35
|
||||
# node-ebics-client
|
||||
---
|
||||
|
||||
Pure node.js ( >=8 ) implementation of [EBICS](https://en.wikipedia.org/wiki/Electronic_Banking_Internet_Communication_Standard) ( Electronic Banking Internet Communication ).
|
||||
@@ -21,4 +21,4 @@ The basic concept of this library was inspired by the [EPICS](https://github.com
|
||||
|
||||
## Copyright
|
||||
|
||||
Copyright: eCollect AG, 2018.
|
||||
Copyright: eCollect AG, 2018-9.
|
||||
|
31
examples/bankLetter.js
Executable file
31
examples/bankLetter.js
Executable file
@@ -0,0 +1,31 @@
|
||||
#! /usr/bin/env node
|
||||
|
||||
'use strict';
|
||||
|
||||
const ebics = require('../index');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const os = require('os');
|
||||
|
||||
const client = new ebics.Client({
|
||||
url: 'https://ebics.server',
|
||||
partnerId: '',
|
||||
userId: '',
|
||||
hostId: '',
|
||||
passphrase: 'test', // keys-test will be decrypted with this passphrase
|
||||
keyStorage: ebics.fsKeysStorage('./keys-test'),
|
||||
});
|
||||
|
||||
const bankName = 'Bank name';
|
||||
const template = fs.readFileSync('./templates/ini.hbs').toString();
|
||||
const letter = new ebics.BankLetter({ client, bankName, template });
|
||||
const bankLetterFile = path.join(os.homedir(), 'bankLetter.html');
|
||||
|
||||
letter.serialize(bankLetterFile)
|
||||
.then(() => {
|
||||
console.log('Send your bank the letter (%s)', bankLetterFile);
|
||||
})
|
||||
.catch((err) => {
|
||||
console.error(err);
|
||||
process.exit(1);
|
||||
});
|
32
examples/initialize.js
Executable file
32
examples/initialize.js
Executable file
@@ -0,0 +1,32 @@
|
||||
#! /usr/bin/env node
|
||||
|
||||
'use strict';
|
||||
|
||||
const ebics = require('../index');
|
||||
|
||||
const client = new ebics.Client({
|
||||
url: 'https://ebics.server',
|
||||
partnerId: 'PARTNER',
|
||||
userId: 'USER',
|
||||
hostId: 'HOST',
|
||||
passphrase: 'test', // keys-test will be encrypted with this passphrase
|
||||
keyStorage: ebics.fsKeysStorage('./keys-test'),
|
||||
});
|
||||
|
||||
// New keys will be generated and saved in ./keys-test
|
||||
client.send(ebics.Orders.INI)
|
||||
.then((resp) => {
|
||||
console.log('Respose for INI order %j', resp);
|
||||
return client.send(ebics.Orders.HIA);
|
||||
})
|
||||
.then((resp) => {
|
||||
console.log('Reponse for HIA order %j', resp);
|
||||
if (resp.technicalCode !== '000000')
|
||||
throw new Error('Something might went wrong');
|
||||
|
||||
console.log('Public keys should be sent to bank now. See examples/bankLetter.js');
|
||||
})
|
||||
.catch((err) => {
|
||||
console.error(err);
|
||||
process.exit(1);
|
||||
});
|
30
examples/save-bank-kesy.js
Executable file
30
examples/save-bank-kesy.js
Executable file
@@ -0,0 +1,30 @@
|
||||
#! /usr/bin/env node
|
||||
|
||||
'use strict';
|
||||
|
||||
const ebics = require('../index');
|
||||
|
||||
const client = new ebics.Client({
|
||||
url: 'https://ebics.server',
|
||||
partnerId: '',
|
||||
userId: '',
|
||||
hostId: '',
|
||||
passphrase: 'test', // keys-test will be decrypted with this passphrase
|
||||
keyStorage: ebics.fsKeysStorage('./keys-test'),
|
||||
});
|
||||
|
||||
// Client keys must be already generated and send by letter.
|
||||
// The bank should have enabled the user
|
||||
client.send(ebics.Orders.HPB)
|
||||
.then((resp) => {
|
||||
console.log('Respose for HPB order %j', resp);
|
||||
if (resp.technicalCode !== '000000')
|
||||
throw new Error('Something went wrong');
|
||||
|
||||
console.log('Received bank keys: %j', resp.bankKeys);
|
||||
return client.setBankKeys(resp.bankKeys);
|
||||
})
|
||||
.catch((err) => {
|
||||
console.error(err);
|
||||
process.exit(1);
|
||||
});
|
29
examples/send-hbt-order.js
Executable file
29
examples/send-hbt-order.js
Executable file
@@ -0,0 +1,29 @@
|
||||
#! /usr/bin/env node
|
||||
|
||||
'use strict';
|
||||
|
||||
const ebics = require('../index');
|
||||
|
||||
const client = new ebics.Client({
|
||||
url: 'https://ebics.server',
|
||||
partnerId: '',
|
||||
userId: '',
|
||||
hostId: '',
|
||||
passphrase: 'test', // keys-test will be decrypted with this passphrase
|
||||
keyStorage: ebics.fsKeysStorage('./keys-test'),
|
||||
});
|
||||
|
||||
// The bank keys must have been already saved
|
||||
client.send(ebics.Orders.HTD)
|
||||
.then((resp) => {
|
||||
console.log('Respose for HTD order %j', resp);
|
||||
if (resp.technicalCode !== '000000')
|
||||
throw new Error('Something went wrong');
|
||||
|
||||
const data = Buffer.from(resp.orderData);
|
||||
console.log(data.toString('utf8'));
|
||||
})
|
||||
.catch((err) => {
|
||||
console.error(err);
|
||||
process.exit(1);
|
||||
});
|
@@ -63,11 +63,10 @@ module.exports = class BankLetter {
|
||||
|
||||
try {
|
||||
fs.writeFileSync(path, letter);
|
||||
console.log('Data written to file');
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
throw error;
|
||||
}
|
||||
|
||||
return new Promise(resolve => resolve(true));
|
||||
}
|
||||
};
|
||||
|
@@ -42,7 +42,7 @@ module.exports = class Client {
|
||||
throw new Error('passphrase is requierd');
|
||||
|
||||
if (!keyStorage || typeof keyStorage.read !== 'function' || typeof keyStorage.write !== 'function')
|
||||
throw new Error('keyStorage implemntation missing or wrong');
|
||||
throw new Error('keyStorage implementation missing or wrong');
|
||||
|
||||
this.url = url;
|
||||
this.partnerId = partnerId;
|
||||
|
@@ -2,7 +2,7 @@
|
||||
|
||||
const packageJson = require('../package.json');
|
||||
|
||||
const name = 'eCollect Node Ebics Client';
|
||||
const name = 'Node Ebics Client';
|
||||
const { version } = packageJson;
|
||||
const orderOperations = {
|
||||
ini: 'INI',
|
||||
|
@@ -1,23 +1,13 @@
|
||||
'use strict';
|
||||
|
||||
const dateRange = (start, end) => {
|
||||
if (start && end)
|
||||
return {
|
||||
DateRange: {
|
||||
Start: start,
|
||||
End: end,
|
||||
},
|
||||
};
|
||||
|
||||
return {};
|
||||
};
|
||||
const utils = require('../utils');
|
||||
|
||||
module.exports = (start = null, end = null) => ({
|
||||
version: 'h004',
|
||||
orderDetails: {
|
||||
OrderType: 'HAC',
|
||||
OrderAttribute: 'DZHNN',
|
||||
StandardOrderParams: dateRange(start, end),
|
||||
StandardOrderParams: utils.dateRange(start, end),
|
||||
},
|
||||
operation: 'download',
|
||||
});
|
||||
|
@@ -1,23 +1,13 @@
|
||||
'use strict';
|
||||
|
||||
const dateRange = (start, end) => {
|
||||
if (start && end)
|
||||
return {
|
||||
DateRange: {
|
||||
Start: start,
|
||||
End: end,
|
||||
},
|
||||
};
|
||||
|
||||
return {};
|
||||
};
|
||||
const utils = require('../utils');
|
||||
|
||||
module.exports = (start = null, end = null) => ({
|
||||
version: 'h004',
|
||||
orderDetails: {
|
||||
OrderType: 'PTK',
|
||||
OrderAttribute: 'DZHNN',
|
||||
StandardOrderParams: dateRange(start, end),
|
||||
StandardOrderParams: utils.dateRange(start, end),
|
||||
},
|
||||
operation: 'download',
|
||||
});
|
||||
|
@@ -1,23 +1,13 @@
|
||||
'use strict';
|
||||
|
||||
const dateRange = (start, end) => {
|
||||
if (start && end)
|
||||
return {
|
||||
DateRange: {
|
||||
Start: start,
|
||||
End: end,
|
||||
},
|
||||
};
|
||||
|
||||
return {};
|
||||
};
|
||||
const utils = require('../utils');
|
||||
|
||||
module.exports = (start = null, end = null) => ({
|
||||
version: 'h004',
|
||||
orderDetails: {
|
||||
OrderType: 'STA',
|
||||
OrderAttribute: 'DZHNN',
|
||||
StandardOrderParams: dateRange(start, end),
|
||||
StandardOrderParams: utils.dateRange(start, end),
|
||||
},
|
||||
operation: 'download',
|
||||
});
|
||||
|
@@ -1,23 +1,13 @@
|
||||
'use strict';
|
||||
|
||||
const dateRange = (start, end) => {
|
||||
if (start && end)
|
||||
return {
|
||||
DateRange: {
|
||||
Start: start,
|
||||
End: end,
|
||||
},
|
||||
};
|
||||
|
||||
return {};
|
||||
};
|
||||
const utils = require('../utils');
|
||||
|
||||
module.exports = (start = null, end = null) => ({
|
||||
version: 'h004',
|
||||
orderDetails: {
|
||||
OrderType: 'VMK',
|
||||
OrderAttribute: 'DZHNN',
|
||||
StandardOrderParams: dateRange(start, end),
|
||||
StandardOrderParams: utils.dateRange(start, end),
|
||||
},
|
||||
operation: 'download',
|
||||
});
|
||||
|
8
lib/predefinedOrders/XCT.js
Normal file
8
lib/predefinedOrders/XCT.js
Normal file
@@ -0,0 +1,8 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = document => ({
|
||||
version: 'h004',
|
||||
orderDetails: { OrderType: 'XCT', OrderAttribute: 'OZHNN', StandardOrderParams: {} },
|
||||
operation: 'upload',
|
||||
document,
|
||||
});
|
13
lib/predefinedOrders/Z53.js
Normal file
13
lib/predefinedOrders/Z53.js
Normal file
@@ -0,0 +1,13 @@
|
||||
'use strict';
|
||||
|
||||
const utils = require('../utils');
|
||||
|
||||
module.exports = (start = null, end = null) => ({
|
||||
version: 'h004',
|
||||
orderDetails: {
|
||||
OrderType: 'Z53',
|
||||
OrderAttribute: 'DZHNN',
|
||||
StandardOrderParams: utils.dateRange(start, end),
|
||||
},
|
||||
operation: 'download',
|
||||
});
|
@@ -12,6 +12,7 @@ const CDS = require('./CDS');
|
||||
const CCT = require('./CCT');
|
||||
const CCS = require('./CCS');
|
||||
const XE3 = require('./XE3');
|
||||
const XCT = require('./XCT');
|
||||
|
||||
const STA = require('./STA');
|
||||
const VMK = require('./VMK');
|
||||
@@ -21,11 +22,13 @@ const HPD = require('./HPD');
|
||||
const HKD = require('./HKD');
|
||||
const PTK = require('./PTK');
|
||||
const HAC = require('./HAC');
|
||||
const Z53 = require('./Z53');
|
||||
|
||||
module.exports = {
|
||||
INI,
|
||||
HIA,
|
||||
HPB,
|
||||
Z53,
|
||||
|
||||
AZV,
|
||||
CD1,
|
||||
@@ -35,7 +38,7 @@ module.exports = {
|
||||
CCT,
|
||||
CCS,
|
||||
XE3,
|
||||
|
||||
XCT,
|
||||
STA,
|
||||
VMK,
|
||||
HAA,
|
||||
|
@@ -58,9 +58,7 @@ module.exports = dir => ({
|
||||
|
||||
try {
|
||||
fs.writeFileSync(path, this.traceData);
|
||||
console.log("Data written to file");
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
throw error;
|
||||
}
|
||||
},
|
||||
|
18
lib/utils.js
Normal file
18
lib/utils.js
Normal file
@@ -0,0 +1,18 @@
|
||||
'use strict';
|
||||
|
||||
const dateRange = (start, end) => {
|
||||
if (start && end)
|
||||
return {
|
||||
DateRange: {
|
||||
Start: start,
|
||||
End: end,
|
||||
},
|
||||
};
|
||||
|
||||
return {};
|
||||
};
|
||||
|
||||
|
||||
module.exports = {
|
||||
dateRange,
|
||||
};
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "ebics-client",
|
||||
"version": "0.0.5",
|
||||
"version": "0.0.8",
|
||||
"description": "Node.js ISO 20022 Compliant EBICS Client",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
@@ -21,6 +21,10 @@
|
||||
{
|
||||
"name": "Vasyl Stashuk",
|
||||
"url": "https://github.com/vasyas"
|
||||
},
|
||||
{
|
||||
"name": "Yago",
|
||||
"url": "https://github.com/yagop"
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
|
Reference in New Issue
Block a user