terminal-gateway 1.0.2 → 1.0.3

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.
package/README.md CHANGED
@@ -21,18 +21,6 @@ Using yarn:
21
21
  $ yarn add terminal-gateway
22
22
  ```
23
23
 
24
- Using pnpm:
25
-
26
- ```bash
27
- $ pnpm add terminal-gateway
28
- ```
29
-
30
- Using CDN:
31
-
32
- ```html
33
- <script src="http://localhost:3000/terminal-gateway-uat.min.js"></script>
34
- ```
35
-
36
24
  ## Congfiguration
37
25
 
38
26
  | Key | Type| Default| Description|
@@ -46,7 +34,7 @@ Using CDN:
46
34
 
47
35
  ``` javascript
48
36
  const terminal = new Terminal({
49
- key: '001116A775D266AE67DF1F6CA9C7F071',
37
+ key: '',
50
38
  timeout: 50000,
51
39
  onSuccess: () => {}
52
40
  onError: () => {}
@@ -61,7 +49,6 @@ __onSale():__ This method allows you to do sale transactions. user needs to call
61
49
  | type | String | Yes | SHOWQR | SHOWQR: sale by screen QR codeEDC: sale by card |
62
50
  | invoice | String | Yes | The invoice number must be unique. Example: INV0011620291635 |
63
51
 
64
- Code:
65
52
  ``` javascript
66
53
  terminal.onSale({amount: '0.01', type: 'SHOWQR', currency: 'USD', invoice: 'INV0011620291635'})
67
54
  ```
package/lib/terminal.js CHANGED
@@ -1 +1 @@
1
- const a0_0x2d91cf=a0_0x26aa;(function(_0x3ef4ba,_0x3ba422){const _0x30ae7c=a0_0x26aa,_0x44488f=_0x3ef4ba();while(!![]){try{const _0x5dc3bd=-parseInt(_0x30ae7c(0x89))/0x1+parseInt(_0x30ae7c(0x7b))/0x2*(-parseInt(_0x30ae7c(0x9a))/0x3)+parseInt(_0x30ae7c(0x80))/0x4*(-parseInt(_0x30ae7c(0x6c))/0x5)+-parseInt(_0x30ae7c(0x6d))/0x6*(-parseInt(_0x30ae7c(0x6b))/0x7)+-parseInt(_0x30ae7c(0x7a))/0x8*(parseInt(_0x30ae7c(0x7f))/0x9)+-parseInt(_0x30ae7c(0x6f))/0xa+-parseInt(_0x30ae7c(0xa2))/0xb*(-parseInt(_0x30ae7c(0x90))/0xc);if(_0x5dc3bd===_0x3ba422)break;else _0x44488f['push'](_0x44488f['shift']());}catch(_0x17e3f5){_0x44488f['push'](_0x44488f['shift']());}}}(a0_0xecb8,0x4347d));import a0_0x2ba8a0,{enc}from'crypto-js';function a0_0x26aa(_0x8b77d1,_0x48a653){const _0xecb86a=a0_0xecb8();return a0_0x26aa=function(_0x26aa37,_0x5cc546){_0x26aa37=_0x26aa37-0x6b;let _0xf10656=_0xecb86a[_0x26aa37];return _0xf10656;},a0_0x26aa(_0x8b77d1,_0x48a653);}function a0_0xecb8(){const _0x1d8543=['SALE_CANCEL','your\x20testing\x20it\x20ok','onSuccess','Device\x20lost\x20connection','getWriter','493798JDRMJr','readable','read','VOID','toUpperCase','open','then','12oGudUC','onErrors','close','SALE','requestPort','Timeout','Key\x20is\x20not\x20empty.','replace','getReader','You\x20do\x20not\x20provide\x20me\x20your\x20key.\x20Please\x20help\x20provide\x20me\x20your\x20key.','3NAWquK','writable','pipeTo','Your\x20browser\x20is\x20not\x20supported.','catch','onConnected','write','connect','19839842IzQYzj','MEMENQ','parse','addEventListener','7Qqbdpo','15sIjMUe','3085782nauJvv','getPorts','3632810iMkQgS','split','onSale','onVoid','cancel','serial','disconnect','releaseLock','length','message','stringify','28328ouUtWX','746598WnFyrU','Connected','onCancel','push','1278PQToom','412184KSnVZh','error','toISOString','toString'];a0_0xecb8=function(){return _0x1d8543;};return a0_0xecb8();}class Terminal{#KEY=null;#DATA=null;#PORT=null;#TIMER=null;#WRITER=null;#READER=null;#TIMEOUT=null;#DATE_BITS=0x8;#STOP_BITS=0x1;#BAUD_RATE=0x1c200;#PARITY='none';#BUFFER_SIZE=0x400;#MD5_ENCRYPTION=null;#WRITABLE_STREAM_CLOSED=null;#READABLE_STREAM_CLOSED=null;#DATE_FORMAT=new Date()[a0_0x2d91cf(0x82)]()[a0_0x2d91cf(0x97)]('T','\x20')[a0_0x2d91cf(0x97)]('Z','')[a0_0x2d91cf(0x70)]('.')[0x0];#FILTERS=[{'usbVendorId':0x5c6,'usbProductId':0x9025},{'usbVendorId':0x67b,'usbProductId':0x2303}];#SUPPORTED_BROWSER=0x1;#OPEN_SERIAL_PORT_ERROR=0x2;#OPEN_SERIAL_PORT_PAIR_ERROR=0x3;#WRITE_STREAM_ERROR=0x4;#READ_STREAM_ERROR=0x5;#VALIDATE_KEY=0x6;#CONNECTED_SERIAL_PORT=0x7;#DISCONNECTED_SERIAL_PORT=0x8;constructor({key:_0x4d2d2c,timeout:_0x4631a4,onConnected:_0xd42b17,onSuccess:_0x169d0e,onErrors:_0x57a635}){const _0xa26205=a0_0x2d91cf;if(!_0x4d2d2c)console[_0xa26205(0x81)](_0xa26205(0x99));this.#KEY=_0x4d2d2c,this.#TIMEOUT=_0x4631a4||0xea60,this[_0xa26205(0x86)]=_0x169d0e||function(){},this[_0xa26205(0x91)]=_0x57a635||function(){},this[_0xa26205(0x9f)]=_0xd42b17||function(){},!this.#isSupportedBrowser()&&(console['error']('Your\x20browser\x20is\x20not\x20supported.'),this[_0xa26205(0x91)]({'status':this.#SUPPORTED_BROWSER,'message':_0xa26205(0x9d)})),navigator['serial'][_0xa26205(0xa5)](_0xa26205(0xa1),_0x5f0c96=>{const _0x215a99=_0xa26205;this[_0x215a99(0x86)]({'status':this.#CONNECTED_SERIAL_PORT,'message':'Device\x20has\x20connected.'});if(this.#TIMER)clearTimeout(this.#TIMER);}),navigator[_0xa26205(0x74)]['addEventListener'](_0xa26205(0x75),async _0x5c57c8=>{const _0x5bd1d3=_0xa26205;this[_0x5bd1d3(0x86)]({'status':this.#DISCONNECTED_SERIAL_PORT,'message':_0x5bd1d3(0x87)});if(this.#TIMER)clearTimeout(this.#TIMER);});}#handleRequestSerialPort(){return new Promise((_0x51e6a8,_0x1fc312)=>{const _0x4a873b=a0_0x26aa;return navigator['serial'][_0x4a873b(0x94)]({'filters':this.#FILTERS})['then'](_0x393e44=>{_0x51e6a8(_0x393e44);})[_0x4a873b(0x9e)](_0x37e977=>{const _0x4d5811=_0x4a873b;_0x1fc312({'status':this.#OPEN_SERIAL_PORT_ERROR,'message':_0x37e977?.[_0x4d5811(0x78)]});});});}#handleOpenSerialPort(){return new Promise((_0x435017,_0xcfc273)=>{const _0x59c2a0=a0_0x26aa;return this.#PORT[_0x59c2a0(0x8e)]({'baudRate':this.#BAUD_RATE,'dataBits':this.#DATE_BITS,'stopBits':this.#STOP_BITS,'parity':this.#PARITY,'bufferSize':this.#BUFFER_SIZE})[_0x59c2a0(0x8f)](_0x5e9e64=>_0x435017(_0x5e9e64))[_0x59c2a0(0x9e)](_0x139447=>{const _0x3735db=_0x59c2a0;_0xcfc273({'status':this.#OPEN_SERIAL_PORT_PAIR_ERROR,'message':_0x139447?.[_0x3735db(0x78)]});});});}async[a0_0x2d91cf(0x71)]({amount:_0x5a8b07,type:_0x677add,currency:_0xcecd5e,invoice:_0x337dbf}){const _0x19eab0=a0_0x2d91cf;try{if(!this.#isSupportedBrowser()){console[_0x19eab0(0x81)](_0x19eab0(0x9d)),this['onErrors']({'status':this.#SUPPORTED_BROWSER,'message':_0x19eab0(0x9d)});return;}if(!this.#KEY){this[_0x19eab0(0x91)]({'status':this.#VALIDATE_KEY,'message':_0x19eab0(0x96)});return;}const _0x2c9a7a=await navigator['serial']['getPorts']();!this.#PORT&&!_0x2c9a7a[_0x19eab0(0x77)]?(this.#PORT=await this.#handleRequestSerialPort(),await this.#handleOpenSerialPort(),this[_0x19eab0(0x86)]({'status':this.#SUPPORTED_BROWSER,'message':_0x19eab0(0x7c)})):(this.#PORT=_0x2c9a7a[0x0],await this.#handleOpenSerialPort());this.#DATA=this.#handleGenerateJSONObject({'CMD':'SALE','type':_0x677add,'amount':_0x5a8b07,'currency':_0xcecd5e,'invoice':_0x337dbf});const _0x38f2bd=this.#handleGenerateMD5(this.#DATA);await this.#handleWriteStream(_0x38f2bd),this.#handleSetTimeout(),this.#handleReadStream(),await this.#listenToTerminal();}catch(_0x469ba0){this[_0x19eab0(0x91)](_0x469ba0);}}async[a0_0x2d91cf(0x72)]({traceId:_0x2180ce}){const _0x3d4722=a0_0x2d91cf;try{if(!this.#isSupportedBrowser()){console[_0x3d4722(0x81)](_0x3d4722(0x9d)),this[_0x3d4722(0x91)]({'status':this.#SUPPORTED_BROWSER,'message':'Your\x20browser\x20is\x20not\x20supported.'});return;}if(!this.#KEY){this[_0x3d4722(0x91)]({'status':this.#VALIDATE_KEY,'message':_0x3d4722(0x96)});return;}if(!this.#PORT&&!ports[_0x3d4722(0x77)])this.#PORT=await this.#handleRequestSerialPort(),await this.#handleOpenSerialPort(),this[_0x3d4722(0x86)]({'status':this.#SUPPORTED_BROWSER,'message':'Connected'});else{const _0x39c24b=await navigator[_0x3d4722(0x74)]['getPorts']();this.#PORT=_0x39c24b[0x0],await this.#handleOpenSerialPort();}const _0x59c23e=this.#handleGenerateJSONObject({'CMD':_0x3d4722(0x8c),'traceId':_0x2180ce}),_0x300489=this.#handleGenerateMD5(_0x59c23e);await this.#handleWriteStream(_0x300489),this.#handleReadStream(),await this.#listenToTerminal();}catch(_0xccf83f){this[_0x3d4722(0x91)](_0xccf83f);}}async['onEnquiry']({invoice:_0x12ce86}){const _0x3fa993=a0_0x2d91cf;try{if(!this.#isSupportedBrowser()){console[_0x3fa993(0x81)]('Your\x20browser\x20is\x20not\x20supported.'),this['onErrors']({'status':this.#SUPPORTED_BROWSER,'message':_0x3fa993(0x9d)});return;}if(!this.#KEY){this[_0x3fa993(0x91)]({'status':this.#VALIDATE_KEY,'message':_0x3fa993(0x96)});return;}if(!this.#PORT&&!ports['length'])this.#PORT=await this.#handleRequestSerialPort(),await this.#handleOpenSerialPort(),this[_0x3fa993(0x86)]({'status':this.#SUPPORTED_BROWSER,'message':'Connected'});else{const _0x4fa071=await navigator[_0x3fa993(0x74)][_0x3fa993(0x6e)]();this.#PORT=_0x4fa071[0x0],await this.#handleOpenSerialPort();}const _0x3416b8=this.#handleGenerateJSONObject({'CMD':'MEMENQ','invoice':_0x12ce86}),_0x36913e=this.#handleGenerateMD5(_0x3416b8);await this.#handleWriteStream(_0x36913e),this.#handleReadStream(),await this.#listenToTerminal();}catch(_0x3778aa){this[_0x3fa993(0x91)](_0x3778aa);}}async[a0_0x2d91cf(0x7d)](){const _0x45d83c=a0_0x2d91cf;try{if(!this.#isSupportedBrowser()){console[_0x45d83c(0x81)](_0x45d83c(0x9d)),this[_0x45d83c(0x91)]({'status':this.#SUPPORTED_BROWSER,'message':'Your\x20browser\x20is\x20not\x20supported.'});return;}if(!this.#KEY){this[_0x45d83c(0x91)]({'status':this.#VALIDATE_KEY,'message':_0x45d83c(0x96)});return;}this['handleReleasePort']();const _0x25c0c5=await navigator[_0x45d83c(0x74)][_0x45d83c(0x6e)]();this.#PORT=_0x25c0c5[0x0],await this.#handleOpenSerialPort();const _0x23d1a6=this.#handleGenerateJSONObject({'CMD':_0x45d83c(0x84)}),_0x752375=this.#handleGenerateMD5(_0x23d1a6);await this.#handleWriteStream(_0x752375),this.#handleReadStream(),await this.#listenToTerminal();}catch(_0x108df9){this[_0x45d83c(0x91)](_0x108df9);}}#handleWriteStream(_0x86e4bf){return new Promise((_0x684bda,_0x1140e6)=>{const _0xa3970e=a0_0x26aa,_0x2e8e3f=new TextEncoderStream();return this.#WRITABLE_STREAM_CLOSED=_0x2e8e3f['readable'][_0xa3970e(0x9c)](this.#PORT[_0xa3970e(0x9b)]),this.#WRITER=_0x2e8e3f[_0xa3970e(0x9b)][_0xa3970e(0x88)](),this.#WRITER[_0xa3970e(0xa0)](_0x86e4bf)['then'](_0x4379ab=>{_0x684bda(_0x4379ab);})['catch'](_0xdbdbff=>{const _0x2ff473=_0xa3970e;_0x1140e6({'status':this.#WRITE_STREAM_ERROR,'message':_0xdbdbff?.[_0x2ff473(0x78)]});});});}#handleReadStream(){const _0x3cbab0=a0_0x2d91cf;try{const _0x3c1c1a=new TextDecoderStream();this.#READABLE_STREAM_CLOSED=this.#PORT[_0x3cbab0(0x8a)][_0x3cbab0(0x9c)](_0x3c1c1a[_0x3cbab0(0x9b)]),this.#READER=_0x3c1c1a['readable'][_0x3cbab0(0x98)]();}catch(_0x2d6bc2){this[_0x3cbab0(0x91)]({'status':this.#READ_STREAM_ERROR,'message':_0x2d6bc2?.[_0x3cbab0(0x78)]});}}#handleGenerateJSONObject({CMD:_0x29e629,type:_0x23bc61,amount:_0x3837ca,currency:_0x1bcbb8,invoice:_0x5a266c,traceId:_0x2ff67a}){const _0x2b563c=a0_0x2d91cf;let _0x4210ea={};switch(_0x29e629){case _0x2b563c(0x93):_0x4210ea={'CMD':_0x2b563c(0x93),'TYPE':_0x23bc61[_0x2b563c(0x83)](),'AMT':_0x3837ca[_0x2b563c(0x83)](),'CURRCODE':_0x1bcbb8[_0x2b563c(0x83)](),'TIMESTAMP':this.#DATE_FORMAT,'ECRREF':_0x5a266c[_0x2b563c(0x83)]()};break;case _0x2b563c(0x8c):_0x4210ea={'CMD':'VOID','TIMESTAMP':this.#DATE_FORMAT,'TRACE':_0x2ff67a[_0x2b563c(0x83)]()};break;case _0x2b563c(0xa3):_0x4210ea={'CMD':_0x2b563c(0xa3),'TIMESTAMP':this.#DATE_FORMAT,'ECRREF':_0x5a266c[_0x2b563c(0x83)]()};break;case'SALE_CANCEL':_0x4210ea={'CMD':_0x2b563c(0x84),'TIMESTAMP':this.#DATE_FORMAT};break;}return _0x4210ea;}#handleGenerateMD5(_0x41ae72){const _0x5396ed=a0_0x2d91cf,_0x3ffcaf=JSON[_0x5396ed(0x79)](_0x41ae72)+this.#KEY;return this.#MD5_ENCRYPTION=a0_0x2ba8a0['MD5'](_0x3ffcaf)[_0x5396ed(0x83)]()[_0x5396ed(0x8d)](),'@'+this.#MD5_ENCRYPTION+JSON[_0x5396ed(0x79)](_0x41ae72);}async #listenToTerminal(){const _0x55866e=a0_0x2d91cf;try{const _0x44207a=[];let _0x14feb4='',_0x446b80=0x0;while(!![]){const {value:_0x22ed82,done:_0x503ff7}=await this.#READER[_0x55866e(0x8b)]();if(_0x503ff7){this.#READER[_0x55866e(0x76)]();break;}if(this.#TIMER)clearTimeout(this.#TIMER);_0x14feb4+=_0x22ed82,_0x446b80+=0x1;const _0x5dd332=setTimeout(async()=>{this.#handlePrintResult(_0x14feb4),this.#handleReleasePort();},0x64);_0x44207a[_0x55866e(0x7e)](_0x5dd332),clearTimeout(_0x44207a[_0x446b80-0x2]);}}catch(_0x41e181){this['onErrors']({'status':this.#READ_STREAM_ERROR,'message':_0x41e181?.['message']});}}#handleSetTimeout(){this.#TIMER=setTimeout(async()=>{const _0x45a415=a0_0x26aa,_0x1cfeb4='@'+this.#MD5_ENCRYPTION+JSON['stringify']({...this.#DATA,'APV':'','PAN':'','PAYER':'','MESSAGE':'','TRXN_ID':'','TRACE':'','STATUS':_0x45a415(0x95)});this.#handlePrintResult(_0x1cfeb4),this.#handleReleasePort();},this.#TIMEOUT);}#handlePrintResult(_0x5806d4){const _0x202ef3=a0_0x2d91cf;if(!_0x5806d4)return;this[_0x202ef3(0x86)]({'key':this.#KEY,'value':JSON[_0x202ef3(0xa4)](_0x5806d4['slice'](0x21))});}async #handleReleasePort(){const _0x5eb59d=a0_0x2d91cf;this.#READER[_0x5eb59d(0x73)](),await this.#READABLE_STREAM_CLOSED['catch'](()=>{}),this.#WRITER[_0x5eb59d(0x92)](),await this.#WRITABLE_STREAM_CLOSED[_0x5eb59d(0x9e)](()=>{}),await this.#PORT[_0x5eb59d(0x92)]();}#isSupportedBrowser(){const _0x2f91ef=a0_0x2d91cf;return _0x2f91ef(0x74)in navigator;}['getTesting'](){const _0x1884df=a0_0x2d91cf;return _0x1884df(0x85);}}export default Terminal;
1
+ function a0_0xa428(){const _0x2935d9=['replace','getTesting','addEventListener','3771834RfJgrw','message','error','your\x20testing\x20it\x20ok','onErrors','297fcduLh','then','serial','cancel','split','catch','617230rSpRWx','toString','2236116epMgYD','disconnect','onSuccess','pipeTo','Timeout','stringify','Your\x20browser\x20is\x20not\x20supported.','onVoid','length','handleReleasePort','184rmcodk','Key\x20is\x20not\x20empty.','453303WzYjMs','toUpperCase','MEMENQ','toISOString','5457753jsWrue','getPorts','onConnected','Connected','287138QQkwEt','onCancel','getWriter','Device\x20lost\x20connection','Device\x20has\x20connected.','readable','open','1048044HVLofG','releaseLock','SALE','VOID','close','SALE_CANCEL','5eAOImx','writable','connect','1bcTzIN'];a0_0xa428=function(){return _0x2935d9;};return a0_0xa428();}const a0_0x34a15c=a0_0x19df;(function(_0x4ade39,_0x995568){const _0x5931f9=a0_0x19df,_0x23a920=_0x4ade39();while(!![]){try{const _0x4a3779=parseInt(_0x5931f9(0x1cf))/0x1*(parseInt(_0x5931f9(0x1f4))/0x2)+parseInt(_0x5931f9(0x1fb))/0x3+-parseInt(_0x5931f9(0x1e0))/0x4+-parseInt(_0x5931f9(0x1cc))/0x5*(parseInt(_0x5931f9(0x1d3))/0x6)+parseInt(_0x5931f9(0x1f0))/0x7+parseInt(_0x5931f9(0x1ea))/0x8*(-parseInt(_0x5931f9(0x1ec))/0x9)+parseInt(_0x5931f9(0x1de))/0xa*(parseInt(_0x5931f9(0x1d8))/0xb);if(_0x4a3779===_0x995568)break;else _0x23a920['push'](_0x23a920['shift']());}catch(_0x31a708){_0x23a920['push'](_0x23a920['shift']());}}}(a0_0xa428,0x90c70));import a0_0x4bc3f7,{enc}from'crypto-js';function a0_0x19df(_0x42fa0d,_0x4e97a1){const _0xa42853=a0_0xa428();return a0_0x19df=function(_0x19df78,_0x3b367b){_0x19df78=_0x19df78-0x1c8;let _0x5820bb=_0xa42853[_0x19df78];return _0x5820bb;},a0_0x19df(_0x42fa0d,_0x4e97a1);}class Terminal{#KEY=null;#DATA=null;#PORT=null;#TIMER=null;#WRITER=null;#READER=null;#TIMEOUT=null;#DATE_BITS=0x8;#STOP_BITS=0x1;#BAUD_RATE=0x1c200;#PARITY='none';#BUFFER_SIZE=0x400;#MD5_ENCRYPTION=null;#WRITABLE_STREAM_CLOSED=null;#READABLE_STREAM_CLOSED=null;#DATE_FORMAT=new Date()[a0_0x34a15c(0x1ef)]()[a0_0x34a15c(0x1d0)]('T','\x20')[a0_0x34a15c(0x1d0)]('Z','')[a0_0x34a15c(0x1dc)]('.')[0x0];#FILTERS=[{'usbVendorId':0x5c6,'usbProductId':0x9025},{'usbVendorId':0x67b,'usbProductId':0x2303}];#SUPPORTED_BROWSER=0x1;#OPEN_SERIAL_PORT_ERROR=0x2;#OPEN_SERIAL_PORT_PAIR_ERROR=0x3;#WRITE_STREAM_ERROR=0x4;#READ_STREAM_ERROR=0x5;#VALIDATE_KEY=0x6;#CONNECTED_SERIAL_PORT=0x7;#DISCONNECTED_SERIAL_PORT=0x8;constructor({key:_0x5d0e3c,timeout:_0x21ad15,onConnected:_0x9f380a,onSuccess:_0x21c26b,onErrors:_0x551c78}){const _0x53adcb=a0_0x34a15c;if(!_0x5d0e3c)console[_0x53adcb(0x1d5)]('You\x20do\x20not\x20provide\x20me\x20your\x20key.\x20Please\x20help\x20provide\x20me\x20your\x20key.');this.#KEY=_0x5d0e3c,this.#TIMEOUT=_0x21ad15||0xea60,this[_0x53adcb(0x1e2)]=_0x21c26b||function(){},this[_0x53adcb(0x1d7)]=_0x551c78||function(){},this[_0x53adcb(0x1f2)]=_0x9f380a||function(){},!this.#isSupportedBrowser()&&(console['error']('Your\x20browser\x20is\x20not\x20supported.'),this[_0x53adcb(0x1d7)]({'status':this.#SUPPORTED_BROWSER,'message':'Your\x20browser\x20is\x20not\x20supported.'})),navigator[_0x53adcb(0x1da)]['addEventListener'](_0x53adcb(0x1ce),_0x50002d=>{const _0x27ffce=_0x53adcb;this[_0x27ffce(0x1e2)]({'status':this.#CONNECTED_SERIAL_PORT,'message':_0x27ffce(0x1f8)});if(this.#TIMER)clearTimeout(this.#TIMER);}),navigator[_0x53adcb(0x1da)][_0x53adcb(0x1d2)](_0x53adcb(0x1e1),async _0x40022d=>{const _0x441254=_0x53adcb;this[_0x441254(0x1e2)]({'status':this.#DISCONNECTED_SERIAL_PORT,'message':_0x441254(0x1f7)});if(this.#TIMER)clearTimeout(this.#TIMER);});}#handleRequestSerialPort(){return new Promise((_0x3f0c49,_0x23fa31)=>{const _0x1c63e2=a0_0x19df;return navigator[_0x1c63e2(0x1da)]['requestPort']({'filters':this.#FILTERS})['then'](_0xe3df6c=>{_0x3f0c49(_0xe3df6c);})[_0x1c63e2(0x1dd)](_0x192e38=>{const _0x1552ec=_0x1c63e2;_0x23fa31({'status':this.#OPEN_SERIAL_PORT_ERROR,'message':_0x192e38?.[_0x1552ec(0x1d4)]});});});}#handleOpenSerialPort(){return new Promise((_0x9ac568,_0x57e6c8)=>{const _0x14e7f1=a0_0x19df;return this.#PORT[_0x14e7f1(0x1fa)]({'baudRate':this.#BAUD_RATE,'dataBits':this.#DATE_BITS,'stopBits':this.#STOP_BITS,'parity':this.#PARITY,'bufferSize':this.#BUFFER_SIZE})[_0x14e7f1(0x1d9)](_0x23480b=>_0x9ac568(_0x23480b))[_0x14e7f1(0x1dd)](_0x1c7c9b=>{const _0x191fbd=_0x14e7f1;_0x57e6c8({'status':this.#OPEN_SERIAL_PORT_PAIR_ERROR,'message':_0x1c7c9b?.[_0x191fbd(0x1d4)]});});});}async['onSale']({amount:_0x2b5200,type:_0x5e4828,currency:_0x36c091,invoice:_0x15c903}){const _0x50d60c=a0_0x34a15c;try{if(!this.#isSupportedBrowser()){console[_0x50d60c(0x1d5)](_0x50d60c(0x1e6)),this['onErrors']({'status':this.#SUPPORTED_BROWSER,'message':_0x50d60c(0x1e6)});return;}if(!this.#KEY){this[_0x50d60c(0x1d7)]({'status':this.#VALIDATE_KEY,'message':'Key\x20is\x20not\x20empty.'});return;}const _0x364bec=await navigator[_0x50d60c(0x1da)][_0x50d60c(0x1f1)]();!this.#PORT&&!_0x364bec[_0x50d60c(0x1e8)]?(this.#PORT=await this.#handleRequestSerialPort(),await this.#handleOpenSerialPort(),this[_0x50d60c(0x1e2)]({'status':this.#SUPPORTED_BROWSER,'message':'Connected'})):(this.#PORT=_0x364bec[0x0],await this.#handleOpenSerialPort());this.#DATA=this.#handleGenerateJSONObject({'CMD':'SALE','type':_0x5e4828,'amount':_0x2b5200,'currency':_0x36c091,'invoice':_0x15c903});const _0x14aa71=this.#handleGenerateMD5(this.#DATA);await this.#handleWriteStream(_0x14aa71),this.#handleSetTimeout(),this.#handleReadStream(),await this.#listenToTerminal();}catch(_0x3028ff){this[_0x50d60c(0x1d7)](_0x3028ff);}}async[a0_0x34a15c(0x1e7)]({traceId:_0x14b924}){const _0x4ee489=a0_0x34a15c;try{if(!this.#isSupportedBrowser()){console[_0x4ee489(0x1d5)]('Your\x20browser\x20is\x20not\x20supported.'),this[_0x4ee489(0x1d7)]({'status':this.#SUPPORTED_BROWSER,'message':_0x4ee489(0x1e6)});return;}if(!this.#KEY){this['onErrors']({'status':this.#VALIDATE_KEY,'message':_0x4ee489(0x1eb)});return;}if(!this.#PORT&&!ports[_0x4ee489(0x1e8)])this.#PORT=await this.#handleRequestSerialPort(),await this.#handleOpenSerialPort(),this['onSuccess']({'status':this.#SUPPORTED_BROWSER,'message':_0x4ee489(0x1f3)});else{const _0x3d4d90=await navigator[_0x4ee489(0x1da)][_0x4ee489(0x1f1)]();this.#PORT=_0x3d4d90[0x0],await this.#handleOpenSerialPort();}const _0x28f7fe=this.#handleGenerateJSONObject({'CMD':_0x4ee489(0x1c9),'traceId':_0x14b924}),_0x147534=this.#handleGenerateMD5(_0x28f7fe);await this.#handleWriteStream(_0x147534),this.#handleReadStream(),await this.#listenToTerminal();}catch(_0x1dd4ca){this[_0x4ee489(0x1d7)](_0x1dd4ca);}}async['onEnquiry']({invoice:_0x182c9e}){const _0x54b79d=a0_0x34a15c;try{if(!this.#isSupportedBrowser()){console[_0x54b79d(0x1d5)](_0x54b79d(0x1e6)),this[_0x54b79d(0x1d7)]({'status':this.#SUPPORTED_BROWSER,'message':'Your\x20browser\x20is\x20not\x20supported.'});return;}if(!this.#KEY){this[_0x54b79d(0x1d7)]({'status':this.#VALIDATE_KEY,'message':_0x54b79d(0x1eb)});return;}if(!this.#PORT&&!ports[_0x54b79d(0x1e8)])this.#PORT=await this.#handleRequestSerialPort(),await this.#handleOpenSerialPort(),this[_0x54b79d(0x1e2)]({'status':this.#SUPPORTED_BROWSER,'message':_0x54b79d(0x1f3)});else{const _0x24211d=await navigator[_0x54b79d(0x1da)][_0x54b79d(0x1f1)]();this.#PORT=_0x24211d[0x0],await this.#handleOpenSerialPort();}const _0x16fd68=this.#handleGenerateJSONObject({'CMD':_0x54b79d(0x1ee),'invoice':_0x182c9e}),_0x299670=this.#handleGenerateMD5(_0x16fd68);await this.#handleWriteStream(_0x299670),this.#handleReadStream(),await this.#listenToTerminal();}catch(_0x550344){this[_0x54b79d(0x1d7)](_0x550344);}}async[a0_0x34a15c(0x1f5)](){const _0x68b7c5=a0_0x34a15c;try{if(!this.#isSupportedBrowser()){console[_0x68b7c5(0x1d5)](_0x68b7c5(0x1e6)),this[_0x68b7c5(0x1d7)]({'status':this.#SUPPORTED_BROWSER,'message':_0x68b7c5(0x1e6)});return;}if(!this.#KEY){this[_0x68b7c5(0x1d7)]({'status':this.#VALIDATE_KEY,'message':_0x68b7c5(0x1eb)});return;}this[_0x68b7c5(0x1e9)]();const _0x4d5e4c=await navigator[_0x68b7c5(0x1da)][_0x68b7c5(0x1f1)]();this.#PORT=_0x4d5e4c[0x0],await this.#handleOpenSerialPort();const _0x2a93a1=this.#handleGenerateJSONObject({'CMD':'SALE_CANCEL'}),_0x184576=this.#handleGenerateMD5(_0x2a93a1);await this.#handleWriteStream(_0x184576),this.#handleReadStream(),await this.#listenToTerminal();}catch(_0x3fb6db){this[_0x68b7c5(0x1d7)](_0x3fb6db);}}#handleWriteStream(_0x38d546){return new Promise((_0x5a1b8f,_0x5b97f8)=>{const _0x33825=a0_0x19df,_0x5548d2=new TextEncoderStream();return this.#WRITABLE_STREAM_CLOSED=_0x5548d2[_0x33825(0x1f9)][_0x33825(0x1e3)](this.#PORT['writable']),this.#WRITER=_0x5548d2[_0x33825(0x1cd)][_0x33825(0x1f6)](),this.#WRITER['write'](_0x38d546)[_0x33825(0x1d9)](_0x2a2b02=>{_0x5a1b8f(_0x2a2b02);})['catch'](_0x56225c=>{const _0x294184=_0x33825;_0x5b97f8({'status':this.#WRITE_STREAM_ERROR,'message':_0x56225c?.[_0x294184(0x1d4)]});});});}#handleReadStream(){const _0x14d257=a0_0x34a15c;try{const _0xf18cc5=new TextDecoderStream();this.#READABLE_STREAM_CLOSED=this.#PORT[_0x14d257(0x1f9)][_0x14d257(0x1e3)](_0xf18cc5[_0x14d257(0x1cd)]),this.#READER=_0xf18cc5[_0x14d257(0x1f9)]['getReader']();}catch(_0xf03ea4){this[_0x14d257(0x1d7)]({'status':this.#READ_STREAM_ERROR,'message':_0xf03ea4?.['message']});}}#handleGenerateJSONObject({CMD:_0x1c45ea,type:_0x3ad33a,amount:_0xaab88b,currency:_0x51b96c,invoice:_0x5b49eb,traceId:_0xf7f2}){const _0xfe2d28=a0_0x34a15c;let _0x423f1f={};switch(_0x1c45ea){case _0xfe2d28(0x1c8):_0x423f1f={'CMD':_0xfe2d28(0x1c8),'TYPE':_0x3ad33a['toString'](),'AMT':_0xaab88b[_0xfe2d28(0x1df)](),'CURRCODE':_0x51b96c[_0xfe2d28(0x1df)](),'TIMESTAMP':this.#DATE_FORMAT,'ECRREF':_0x5b49eb[_0xfe2d28(0x1df)]()};break;case _0xfe2d28(0x1c9):_0x423f1f={'CMD':_0xfe2d28(0x1c9),'TIMESTAMP':this.#DATE_FORMAT,'TRACE':_0xf7f2[_0xfe2d28(0x1df)]()};break;case _0xfe2d28(0x1ee):_0x423f1f={'CMD':_0xfe2d28(0x1ee),'TIMESTAMP':this.#DATE_FORMAT,'ECRREF':_0x5b49eb[_0xfe2d28(0x1df)]()};break;case _0xfe2d28(0x1cb):_0x423f1f={'CMD':_0xfe2d28(0x1cb),'TIMESTAMP':this.#DATE_FORMAT};break;}return _0x423f1f;}#handleGenerateMD5(_0x4f5524){const _0x5cecd0=a0_0x34a15c,_0x269291=JSON[_0x5cecd0(0x1e5)](_0x4f5524)+this.#KEY;return this.#MD5_ENCRYPTION=a0_0x4bc3f7['MD5'](_0x269291)[_0x5cecd0(0x1df)]()[_0x5cecd0(0x1ed)](),'@'+this.#MD5_ENCRYPTION+JSON[_0x5cecd0(0x1e5)](_0x4f5524);}async #listenToTerminal(){const _0x2692de=a0_0x34a15c;try{const _0x1e13de=[];let _0x52fe07='',_0x31c176=0x0;while(!![]){const {value:_0x4eeab0,done:_0x569fb1}=await this.#READER['read']();if(_0x569fb1){this.#READER[_0x2692de(0x1fc)]();break;}if(this.#TIMER)clearTimeout(this.#TIMER);_0x52fe07+=_0x4eeab0,_0x31c176+=0x1;const _0x229e96=setTimeout(async()=>{this.#handlePrintResult(_0x52fe07),this.#handleReleasePort();},0x64);_0x1e13de['push'](_0x229e96),clearTimeout(_0x1e13de[_0x31c176-0x2]);}}catch(_0x2a74f2){this[_0x2692de(0x1d7)]({'status':this.#READ_STREAM_ERROR,'message':_0x2a74f2?.[_0x2692de(0x1d4)]});}}#handleSetTimeout(){this.#TIMER=setTimeout(async()=>{const _0x5223d2=a0_0x19df,_0x4e95b7='@'+this.#MD5_ENCRYPTION+JSON['stringify']({...this.#DATA,'APV':'','PAN':'','PAYER':'','MESSAGE':'','TRXN_ID':'','TRACE':'','STATUS':_0x5223d2(0x1e4)});this.#handlePrintResult(_0x4e95b7),this.#handleReleasePort();},this.#TIMEOUT);}#handlePrintResult(_0x1fb527){if(!_0x1fb527)return;this['onSuccess']({'key':this.#KEY,'value':JSON['parse'](_0x1fb527['slice'](0x21))});}async #handleReleasePort(){const _0x7f81c9=a0_0x34a15c;this.#READER[_0x7f81c9(0x1db)](),await this.#READABLE_STREAM_CLOSED[_0x7f81c9(0x1dd)](()=>{}),this.#WRITER[_0x7f81c9(0x1ca)](),await this.#WRITABLE_STREAM_CLOSED[_0x7f81c9(0x1dd)](()=>{}),await this.#PORT['close']();}#isSupportedBrowser(){const _0x3b3484=a0_0x34a15c;return _0x3b3484(0x1da)in navigator;}[a0_0x34a15c(0x1d1)](){const _0x183cfe=a0_0x34a15c;return _0x183cfe(0x1d6);}}export default Terminal;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "terminal-gateway",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "POS SDK is a library that allows users to perform sale transactions on a terminal from a web browser.",
5
5
  "main": "index.js",
6
6
  "author": "",
@@ -14,4 +14,4 @@
14
14
  "crypto-js": "^4.1.1"
15
15
  },
16
16
  "devDependencies": {}
17
- }
17
+ }