0.8.3 • Published 8 years ago

@nfctron/eet v0.8.3

Weekly downloads
12
License
MIT
Repository
github
Last release
8 years ago

eet

npm build status eet channel on discord

Node.js library for EET (Electronic Registration of Sales in the Czech Republic) (Elektronickou evidenci tržeb).

Note: this library is still in development (version 0.x). API should stay the same, but there are not enough tests and documentation. Pull requests are welcome!

Differences against the original library

This is fork of JakubMrozek/eet with the following changes:

  • completely rewritten to allow multiple request with the same client (performance improvement)
    + currentDate and uuid moved from options to items and renamed to datOdesl and uuidZpravy to improve consistency
  • fixed LICENSE (to be recognized by GitHub)
  • improved README
  • added yarn.lock
  • improved package.json, upgraded dependencies

Installation

Requirements: Node.js 7+ (it might work under 6.x but it is not tested)

Using npm:

npm install @nfctron/eet --save

or with yarn:

yarn add @nfctron/eet

Example usage

const { createClient } = require('eet');

// privatni klic a certifikat podnikatele
const options = {
	privateKey: '...',
	certificate: '...',
	playground: true
};

// polozky, ktere se posilaji do EET 
const items = {
	dicPopl: 'CZ1212121218',
	idPokl: '/5546/RO24',
	poradCis: '0/6460/ZQ42',
	datTrzby: new Date(),
	celkTrzba: 34113,
	idProvoz: '273'
};

// ziskani FIK (kod uctenky) pomoci async/await (Node.js 8+ / Babel)

const client = await createClient(options);

try {
	const { fik } = await client.request(items);
}


// ziskani FIK v Node.js 6+
createClient(options)
	.then(client => client.request(items))
	.then(response => {
		// response.fik
	});

Convert .p12 to .pem

TODO example using command line with OpenSSL

This library works only with certificates and keys in string format .pem. From the binary .p12 you can convert them for example by package pem:

npm install pem --save
const pem = require('pem');

const file = require('fs').readFileSync('cesta/k/souboru.p12');
const password = ''; //pro testovací certifikáty EET je heslo 'eet'

pem.readPkcs12(file, {p12Password: password}, (err, result) => {
	if (err) ...
	// result.key je privátní klíč
	// result.cert je certifikát
});

API

createClient(options)

nametyperequireddefaultdescription
privateKeystringyesprivate key for the certificate
certificatestringyescertificate
offlinebooleannofalseif true, includes PKP and BKB in response on unsuccessful request to EET
playgroundbooleannofalseuse Playground EET endpoint instead of production
timeoutnumberno2000 msmaximal time to wait in milliseconds
measureResponseTimebooleannofalsemeasure response time using node-soap's client.lastElapsedTime
httpClientobjectnosee soap options, just for testing

EETClient.request(items)

  • items - data to send in EET request, same name as in EET specification but in camel case (so instead of dic_popl use dicPopl)

    	**TODO** add table of items (required, data type, and description)

TODO document whole API

Frequent errors

Neplatny podpis SOAP zpravy (4)

Na 99% půjde o problém s certifikátem, více je popsáno v issue #1.

Roadmap

Changelog

see description of each release in Releases

License

MIT