terminal-gateway 1.0.7 → 1.0.8

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
@@ -2,9 +2,9 @@
2
2
 
3
3
  ## Browser Support
4
4
 
5
- ![Chrome](https://raw.githubusercontent.com/alrra/browser-logos/main/src/chrome/chrome_48x48.png) | ![Edge](https://raw.githubusercontent.com/alrra/browser-logos/main/src/edge/edge_48x48.png) |
6
- --- | --- |
7
- Latest ✔ | Latest ✔ |
5
+ ![Chrome](https://raw.githubusercontent.com/alrra/browser-logos/main/src/chrome/chrome_48x48.png) | ![Edge](https://raw.githubusercontent.com/alrra/browser-logos/main/src/edge/edge_48x48.png) |![Opera](https://raw.githubusercontent.com/alrra/browser-logos/main/src/opera/opera_48x48.png) |
6
+ --- | --- | --- |
7
+ Latest ✔ | Latest ✔ | Latest ✔ |
8
8
 
9
9
 
10
10
  ## Installation
@@ -34,10 +34,46 @@ $ yarn add terminal-gateway
34
34
 
35
35
  ``` javascript
36
36
  import Terminal from 'terminal-gateway'
37
+
37
38
  const terminal = new Terminal({
38
39
  key: '',
39
40
  timeout: 50000,
40
- onSuccess: () => {},
41
+ onSuccess: () => {}
41
42
  onError: () => {}
42
43
  });
43
- ```
44
+ ```
45
+
46
+ ## Sale transaction
47
+ __onSale():__ This method allows you to do sale transactions. user needs to call this function to get the result failed or successful. It is required four parameters:
48
+ | Parameter name | Data type | Require | Default | Description |
49
+ | --- | --- | --- | --- | --- |
50
+ | amount | String | Yes | 0 | amount define transaction |
51
+ | type | String | Yes | SHOWQR | SHOWQR: sale by screen QR codeEDC: sale by card |
52
+ | invoice | String | Yes | The invoice number must be unique. Example: INV0011620291635 |
53
+ <br />
54
+ ``` javascript
55
+ terminal.onSale({amount: '0.01', type: 'SHOWQR', currency: 'USD', invoice: 'INV0011620291635'})
56
+ ```
57
+ ## Enquiry transaction
58
+ __onEnquiry():__ This method allows you to receive the response back with the result status of the transaction whether it's successful or failed. It is required a parameter:
59
+
60
+ | Parameter name | Data type | Require | Default |Description |
61
+ | --- | --- | --- | --- | --- |
62
+ | invoice | String | Yes | | The invoice number must be unique. example: `INV0011620291635`|
63
+
64
+ <br />
65
+ ``` javascript
66
+ terminal.onEnquiry({invoice: 'INV0011620291635'})
67
+ ```
68
+ ## Void transaction
69
+ __onVoid():__ This method allows you to void the transaction. It is required a parameter:
70
+ | Parameter name | Data type | Require | Default |Description |
71
+ | --- | --- | --- | --- | --- |
72
+ | traceId | String | Yes | | trace number of sale transaction response |
73
+
74
+
75
+ ## Cancelation transaction
76
+ __onCancel():__ This method allows the cancellation of the sale of the transaction.
77
+ ``` javascript
78
+ terminal.onCancel()
79
+ ```
package/lib/terminal.js CHANGED
@@ -1 +1 @@
1
- const a0_0x395e06=a0_0x48d3;(function(_0x580dbe,_0x4baf89){const _0x58f585=a0_0x48d3,_0x7236b2=_0x580dbe();while(!![]){try{const _0x459339=-parseInt(_0x58f585(0x107))/0x1+-parseInt(_0x58f585(0xff))/0x2*(parseInt(_0x58f585(0x120))/0x3)+parseInt(_0x58f585(0xfe))/0x4+parseInt(_0x58f585(0xfc))/0x5+-parseInt(_0x58f585(0x111))/0x6+parseInt(_0x58f585(0xf8))/0x7*(-parseInt(_0x58f585(0x10c))/0x8)+parseInt(_0x58f585(0x118))/0x9*(parseInt(_0x58f585(0x10d))/0xa);if(_0x459339===_0x4baf89)break;else _0x7236b2['push'](_0x7236b2['shift']());}catch(_0x360ccf){_0x7236b2['push'](_0x7236b2['shift']());}}}(a0_0x32b2,0xa4d73));function a0_0x32b2(){const _0x53f39d=['parse','cmd','toISOString','disconnect','Forget\x20device\x20success','211686mzrbIw','slice','log','Timeout','keys','readable','Connected','stringify','serial','writable','onError','Device\x20has\x20been\x20connected.','message','split','releaseLock','catch','cancel','7DXUZsD','getPorts','toUpperCase','MD5','3684210ptjEnq','none','944516chMBDi','28KOJFfX','addEventListener','forget','then','write','close','You\x20do\x20not\x20provide\x20me\x20your\x20key.\x20Please\x20help\x20provide\x20me\x20your\x20key.','toString','225773glgkjh','replace','reduce','open','CANCEL','5088856XZIotz','10CbNZDb','getWriter','onForget','pipeTo','7142526dHzdVN','read','connect','onSale','Not\x20provide\x20key.','onSuccess','requestPort','24681465FQtIyn','Device\x20has\x20been\x20lost\x20connection','Your\x20browser\x20is\x20not\x20supported.'];a0_0x32b2=function(){return _0x53f39d;};return a0_0x32b2();}function a0_0x48d3(_0x4aeba9,_0xb560e){const _0x32b2f3=a0_0x32b2();return a0_0x48d3=function(_0x48d31e,_0x5cb75f){_0x48d31e=_0x48d31e-0xf8;let _0x46ae24=_0x32b2f3[_0x48d31e];return _0x46ae24;},a0_0x48d3(_0x4aeba9,_0xb560e);}import a0_0x56d3ae,{enc}from'crypto-js';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=a0_0x395e06(0xfd);#BUFFER_SIZE=0x400;#MD5_ENCRYPTION=null;#WRITABLE_STREAM_CLOSED=null;#READABLE_STREAM_CLOSED=null;#DATE_FORMAT=new Date()[a0_0x395e06(0x11d)]()['replace']('T','\x20')[a0_0x395e06(0x108)]('Z','')[a0_0x395e06(0x12d)]('.')[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;#FORGET_PORT=0x9;#CANCEL_TRANSACTION=0xa;constructor({key:_0x38d18f,timeout:_0x2ea769,onConnected:_0x4132c9,onSuccess:_0x242e69,onError:_0x359ce4}){const _0x500019=a0_0x395e06;!_0x38d18f&&(console[_0x500019(0x122)](_0x500019(0x105)),this[_0x500019(0x12a)]({'status':this.#VALIDATE_KEY,'message':_0x500019(0x115)})),this.#KEY=_0x38d18f,this.#TIMEOUT=_0x2ea769||0xea60,this[_0x500019(0x116)]=_0x242e69||function(){},this['onError']=_0x359ce4||function(){},this['onConnected']=_0x4132c9||function(){},!this.#isSupportedBrowser()&&(console['log']('Your\x20browser\x20is\x20not\x20supported.'),this[_0x500019(0x12a)]({'status':this.#SUPPORTED_BROWSER,'message':_0x500019(0x11a)})),navigator[_0x500019(0x128)][_0x500019(0x100)](_0x500019(0x113),_0x597efc=>{const _0x5db008=_0x500019;this[_0x5db008(0x116)]({'status':this.#CONNECTED_SERIAL_PORT,'message':_0x5db008(0x12b)});if(this.#TIMER)clearTimeout(this.#TIMER);}),navigator['serial']['addEventListener'](_0x500019(0x11e),_0x22f91f=>{const _0x56614c=_0x500019;this[_0x56614c(0x12a)]({'status':this.#DISCONNECTED_SERIAL_PORT,'message':_0x56614c(0x119)});if(this.#TIMER)clearTimeout(this.#TIMER);});}#handleRequestSerialPort(){return new Promise((_0x228155,_0x458e3b)=>{const _0x2e9c6a=a0_0x48d3;return navigator[_0x2e9c6a(0x128)][_0x2e9c6a(0x117)]({'filters':this.#FILTERS})[_0x2e9c6a(0x102)](_0x3b6a9a=>{_0x228155(_0x3b6a9a);})[_0x2e9c6a(0x12f)](_0x3fcf37=>{const _0x214ffb=_0x2e9c6a;_0x458e3b({'status':this.#OPEN_SERIAL_PORT_ERROR,'message':_0x3fcf37?.[_0x214ffb(0x12c)]});});});}#handleOpenSerialPort(){return new Promise((_0x49ec16,_0x3894ea)=>{const _0x2d44cc=a0_0x48d3;return this.#PORT[_0x2d44cc(0x10a)]({'baudRate':this.#BAUD_RATE,'dataBits':this.#DATE_BITS,'stopBits':this.#STOP_BITS,'parity':this.#PARITY,'bufferSize':this.#BUFFER_SIZE})['then'](_0x59ce56=>_0x49ec16(_0x59ce56))['catch'](_0x707b4a=>{const _0x3dbbb0=_0x2d44cc;_0x3894ea({'status':this.#OPEN_SERIAL_PORT_PAIR_ERROR,'message':_0x707b4a?.[_0x3dbbb0(0x12c)]});});});}#handleWriteStream(_0x403115){return new Promise((_0x2c01bd,_0x24d17e)=>{const _0x4fda98=a0_0x48d3,_0x1e7e8b=new TextEncoderStream();return this.#WRITABLE_STREAM_CLOSED=_0x1e7e8b[_0x4fda98(0x125)][_0x4fda98(0x110)](this.#PORT['writable']),this.#WRITER=_0x1e7e8b[_0x4fda98(0x129)][_0x4fda98(0x10e)](),this.#WRITER[_0x4fda98(0x103)](_0x403115)['then'](_0x2c9c05=>{_0x2c01bd(_0x2c9c05);})[_0x4fda98(0x12f)](_0x1293c5=>{const _0x48a41a=_0x4fda98;_0x24d17e({'status':this.#WRITE_STREAM_ERROR,'message':_0x1293c5?.[_0x48a41a(0x12c)]});});});}#handleReadStream(){const _0x51baae=a0_0x395e06;try{const _0x13ae5b=new TextDecoderStream();this.#READABLE_STREAM_CLOSED=this.#PORT[_0x51baae(0x125)][_0x51baae(0x110)](_0x13ae5b[_0x51baae(0x129)]),this.#READER=_0x13ae5b[_0x51baae(0x125)]['getReader']();}catch(_0x27f7f3){this['onError']({'status':this.#READ_STREAM_ERROR,'message':_0x27f7f3?.[_0x51baae(0x12c)]});}}#handleGenerateMD5(_0x2371ed){const _0x35f5d3=a0_0x395e06,_0x28358b=JSON[_0x35f5d3(0x127)](_0x2371ed),_0x4fbefe=_0x28358b+this.#KEY;return this.#MD5_ENCRYPTION=a0_0x56d3ae[_0x35f5d3(0xfb)](_0x4fbefe)[_0x35f5d3(0x106)]()[_0x35f5d3(0xfa)](),'@'+this.#MD5_ENCRYPTION+_0x28358b;}async #listenToTerminal(){const _0x4fe00e=a0_0x395e06;try{const _0x2ae477=[];let _0x1fcdb2='',_0x474bc5=0x0;while(!![]){const {value:_0x5df304,done:_0x39e29b}=await this.#READER[_0x4fe00e(0x112)]();if(_0x39e29b){this.#READER[_0x4fe00e(0x12e)]();break;}if(this.#TIMER)clearTimeout(this.#TIMER);_0x1fcdb2+=_0x5df304,_0x474bc5+=0x1;const _0x2ae3ce=setTimeout(async()=>{this.#handlePrintResult(_0x1fcdb2),await this.#handleReleasePort();},0x64);_0x2ae477['push'](_0x2ae3ce),clearTimeout(_0x2ae477[_0x474bc5-0x2]);}}catch(_0x43cf8c){this['onError']({'status':this.#READ_STREAM_ERROR,'message':_0x43cf8c?.[_0x4fe00e(0x12c)]});}}#handleSetTimeout(){this.#TIMER=setTimeout(async()=>{const _0x35d78a=a0_0x48d3,_0x2f173c='@'+this.#MD5_ENCRYPTION+JSON[_0x35d78a(0x127)]({...this.#DATA,'APV':'','PAN':'','PAYER':'','MESSAGE':'','TRXN_ID':'','TRACE':'','STATUS':_0x35d78a(0x123)});this.#handlePrintResult(_0x2f173c),await this.#handleReleasePort();},this.#TIMEOUT);}#handlePrintResult(_0x3a35c2){const _0x361ef9=a0_0x395e06;if(!_0x3a35c2)return;this[_0x361ef9(0x116)]({'key':this.#KEY,'value':JSON[_0x361ef9(0x11b)](_0x3a35c2[_0x361ef9(0x121)](0x21))});}async #handleReleasePort(){const _0x218468=a0_0x395e06;this.#READER[_0x218468(0x130)](),await this.#READABLE_STREAM_CLOSED[_0x218468(0x12f)](()=>{}),this.#WRITER[_0x218468(0x104)](),await this.#WRITABLE_STREAM_CLOSED['catch'](()=>{}),await this.#PORT[_0x218468(0x104)]();}#isSupportedBrowser(){const _0x596b0f=a0_0x395e06;return _0x596b0f(0x128)in navigator;}async[a0_0x395e06(0x114)](_0x132d3c){const _0x1abbb1=a0_0x395e06;try{if(!this.#isSupportedBrowser()){console[_0x1abbb1(0x122)](_0x1abbb1(0x11a)),this[_0x1abbb1(0x12a)]({'status':this.#SUPPORTED_BROWSER,'message':'Your\x20browser\x20is\x20not\x20supported.'});return;}if(!this.#KEY){this[_0x1abbb1(0x12a)]({'status':this.#VALIDATE_KEY,'message':'Not\x20provide\x20key.'});return;}const _0x43ef81=await navigator[_0x1abbb1(0x128)][_0x1abbb1(0xf9)]();!this.#PORT&&!_0x43ef81['length']?(this.#PORT=await this.#handleRequestSerialPort(),await this.#handleOpenSerialPort(),this[_0x1abbb1(0x116)]({'status':this.#SUPPORTED_BROWSER,'message':_0x1abbb1(0x126)})):(this.#PORT=_0x43ef81[0x0],await this.#handleOpenSerialPort());const _0x3be2e0={..._0x132d3c,'TIMESTAMP':this.#DATE_FORMAT};this.#DATA=Object[_0x1abbb1(0x124)](_0x3be2e0)[_0x1abbb1(0x109)]((_0x549a95,_0x2d1975)=>{const _0x41bf75=_0x1abbb1;return _0x549a95[_0x2d1975[_0x41bf75(0xfa)]()]=_0x3be2e0[_0x2d1975],_0x549a95;},{});const _0x1cf06d=this.#handleGenerateMD5(this.#DATA);await this.#handleWriteStream(_0x1cf06d);if(_0x132d3c[_0x1abbb1(0x11c)]==='SALE')this.#handleSetTimeout();this.#handleReadStream(),await this.#listenToTerminal();}catch(_0xb4ca37){this['onError'](_0xb4ca37);}}async['onCancel'](){const _0x5c5ce2=a0_0x395e06;try{await this.#handleReleasePort(),await this['onSale']({'cmd':_0x5c5ce2(0x10b)});}catch(_0x18af6e){this['onError']({'status':this.#CANCEL_TRANSACTION,'message':_0x18af6e?.[_0x5c5ce2(0x12c)]});}}async[a0_0x395e06(0x10f)](){const _0x90bd7=a0_0x395e06;try{if(!this.#PORT)return;await this.#PORT[_0x90bd7(0x101)](),this.#PORT=null,this[_0x90bd7(0x116)]({'status':this.#FORGET_PORT,'message':_0x90bd7(0x11f)});}catch(_0x2c398f){this[_0x90bd7(0x12a)]({'status':this.#FORGET_PORT,'message':_0x2c398f?.[_0x90bd7(0x12c)]});}}}export default Terminal;
1
+ function a0_0x44f2(){const _0x54849f=['Timeout','1494830GWuBzq','serial','cancel','onSale','1182976EQhKdy','5892808aKOfCl','SALE_CANCEL','VOID','handleReleasePort','232159izaAVn','error','addEventListener','7hZZnbo','onErrors','69GBNdjt','requestPort','then','Your\x20browser\x20is\x20not\x20supported.','Key\x20is\x20not\x20empty.','stringify','Device\x20lost\x20connection','connect','length','Device\x20has\x20connected.','pipeTo','toString','4183490mrYiCK','message','close','getWriter','getReader','onSuccess','releaseLock','readable','catch','9mmbYWv','You\x20do\x20not\x20provide\x20me\x20your\x20key.\x20Please\x20help\x20provide\x20me\x20your\x20key.','getTesting','push','Connected','writable','read','replace','disconnect','getPorts','write','slice','7858CfisSO','2358576xyLWVJ','open','onVoid','none','toUpperCase','split','onCancel','MEMENQ','SALE','onEnquiry'];a0_0x44f2=function(){return _0x54849f;};return a0_0x44f2();}const a0_0x252ee6=a0_0x2d22;(function(_0x55e08b,_0x4f27f9){const _0x4c2424=a0_0x2d22,_0x2188a0=_0x55e08b();while(!![]){try{const _0x3426da=parseInt(_0x4c2424(0xcb))/0x1+parseInt(_0x4c2424(0xb6))/0x2*(parseInt(_0x4c2424(0x95))/0x3)+-parseInt(_0x4c2424(0xc6))/0x4+-parseInt(_0x4c2424(0xc2))/0x5+parseInt(_0x4c2424(0xb7))/0x6+-parseInt(_0x4c2424(0xce))/0x7*(-parseInt(_0x4c2424(0xc7))/0x8)+-parseInt(_0x4c2424(0xaa))/0x9*(parseInt(_0x4c2424(0xa1))/0xa);if(_0x3426da===_0x4f27f9)break;else _0x2188a0['push'](_0x2188a0['shift']());}catch(_0x53be2d){_0x2188a0['push'](_0x2188a0['shift']());}}}(a0_0x44f2,0x6b37c));function a0_0x2d22(_0x2b8426,_0x721bdb){const _0x44f201=a0_0x44f2();return a0_0x2d22=function(_0x2d2251,_0x557375){_0x2d2251=_0x2d2251-0x94;let _0x139258=_0x44f201[_0x2d2251];return _0x139258;},a0_0x2d22(_0x2b8426,_0x721bdb);}import a0_0x341cf0,{enc}from'crypto-js';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=a0_0x252ee6(0xba);#BUFFER_SIZE=0x400;#MD5_ENCRYPTION=null;#WRITABLE_STREAM_CLOSED=null;#READABLE_STREAM_CLOSED=null;#DATE_FORMAT=new Date()['toISOString']()['replace']('T','\x20')[a0_0x252ee6(0xb1)]('Z','')[a0_0x252ee6(0xbc)]('.')[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:_0x6997da,timeout:_0x254f49,onConnected:_0x8dc339,onSuccess:_0x10cd38,onErrors:_0x3a0ad8}){const _0x10f6e9=a0_0x252ee6;if(!_0x6997da)console[_0x10f6e9(0xcc)](_0x10f6e9(0xab));this.#KEY=_0x6997da,this.#TIMEOUT=_0x254f49||0xea60,this[_0x10f6e9(0xa6)]=_0x10cd38||function(){},this[_0x10f6e9(0x94)]=_0x3a0ad8||function(){},this['onConnected']=_0x8dc339||function(){},!this.#isSupportedBrowser()&&(console['error'](_0x10f6e9(0x98)),this[_0x10f6e9(0x94)]({'status':this.#SUPPORTED_BROWSER,'message':'Your\x20browser\x20is\x20not\x20supported.'})),navigator[_0x10f6e9(0xc3)][_0x10f6e9(0xcd)](_0x10f6e9(0x9c),_0x487485=>{const _0x512879=_0x10f6e9;this[_0x512879(0xa6)]({'status':this.#CONNECTED_SERIAL_PORT,'message':_0x512879(0x9e)});if(this.#TIMER)clearTimeout(this.#TIMER);}),navigator[_0x10f6e9(0xc3)][_0x10f6e9(0xcd)](_0x10f6e9(0xb2),async _0x718132=>{const _0x18f704=_0x10f6e9;this[_0x18f704(0xa6)]({'status':this.#DISCONNECTED_SERIAL_PORT,'message':_0x18f704(0x9b)});if(this.#TIMER)clearTimeout(this.#TIMER);});}#handleRequestSerialPort(){return new Promise((_0x453048,_0x4b7d52)=>{const _0xbcc22c=a0_0x2d22;return navigator[_0xbcc22c(0xc3)][_0xbcc22c(0x96)]({'filters':this.#FILTERS})['then'](_0x5e77d0=>{_0x453048(_0x5e77d0);})['catch'](_0x492473=>{_0x4b7d52({'status':this.#OPEN_SERIAL_PORT_ERROR,'message':_0x492473?.['message']});});});}#handleOpenSerialPort(){return new Promise((_0x57f8e5,_0x5af292)=>{const _0x54cae7=a0_0x2d22;return this.#PORT[_0x54cae7(0xb8)]({'baudRate':this.#BAUD_RATE,'dataBits':this.#DATE_BITS,'stopBits':this.#STOP_BITS,'parity':this.#PARITY,'bufferSize':this.#BUFFER_SIZE})[_0x54cae7(0x97)](_0x7559e9=>_0x57f8e5(_0x7559e9))[_0x54cae7(0xa9)](_0x4de97b=>{const _0x3adbb1=_0x54cae7;_0x5af292({'status':this.#OPEN_SERIAL_PORT_PAIR_ERROR,'message':_0x4de97b?.[_0x3adbb1(0xa2)]});});});}async[a0_0x252ee6(0xc5)]({amount:_0x4538d9,type:_0x4362b9,currency:_0x5bbf6e,invoice:_0x3e5824}){const _0xc51a77=a0_0x252ee6;try{if(!this.#isSupportedBrowser()){console[_0xc51a77(0xcc)](_0xc51a77(0x98)),this[_0xc51a77(0x94)]({'status':this.#SUPPORTED_BROWSER,'message':_0xc51a77(0x98)});return;}if(!this.#KEY){this['onErrors']({'status':this.#VALIDATE_KEY,'message':_0xc51a77(0x99)});return;}const _0x141dd6=await navigator['serial'][_0xc51a77(0xb3)]();!this.#PORT&&!_0x141dd6[_0xc51a77(0x9d)]?(this.#PORT=await this.#handleRequestSerialPort(),await this.#handleOpenSerialPort(),this['onSuccess']({'status':this.#SUPPORTED_BROWSER,'message':_0xc51a77(0xae)})):(this.#PORT=_0x141dd6[0x0],await this.#handleOpenSerialPort());this.#DATA=this.#handleGenerateJSONObject({'CMD':_0xc51a77(0xbf),'type':_0x4362b9,'amount':_0x4538d9,'currency':_0x5bbf6e,'invoice':_0x3e5824});const _0x12fc47=this.#handleGenerateMD5(this.#DATA);await this.#handleWriteStream(_0x12fc47),this.#handleSetTimeout(),this.#handleReadStream(),await this.#listenToTerminal();}catch(_0x479a00){this[_0xc51a77(0x94)](_0x479a00);}}async[a0_0x252ee6(0xb9)]({traceId:_0xce6623}){const _0x57e748=a0_0x252ee6;try{if(!this.#isSupportedBrowser()){console['error']('Your\x20browser\x20is\x20not\x20supported.'),this[_0x57e748(0x94)]({'status':this.#SUPPORTED_BROWSER,'message':_0x57e748(0x98)});return;}if(!this.#KEY){this[_0x57e748(0x94)]({'status':this.#VALIDATE_KEY,'message':_0x57e748(0x99)});return;}if(!this.#PORT&&!ports[_0x57e748(0x9d)])this.#PORT=await this.#handleRequestSerialPort(),await this.#handleOpenSerialPort(),this[_0x57e748(0xa6)]({'status':this.#SUPPORTED_BROWSER,'message':_0x57e748(0xae)});else{const _0x5b5cc0=await navigator[_0x57e748(0xc3)][_0x57e748(0xb3)]();this.#PORT=_0x5b5cc0[0x0],await this.#handleOpenSerialPort();}const _0x8f9a99=this.#handleGenerateJSONObject({'CMD':'VOID','traceId':_0xce6623}),_0x216bb0=this.#handleGenerateMD5(_0x8f9a99);await this.#handleWriteStream(_0x216bb0),this.#handleReadStream(),await this.#listenToTerminal();}catch(_0x577a48){this[_0x57e748(0x94)](_0x577a48);}}async[a0_0x252ee6(0xc0)]({invoice:_0x585ae9}){const _0x2c645a=a0_0x252ee6;try{if(!this.#isSupportedBrowser()){console[_0x2c645a(0xcc)](_0x2c645a(0x98)),this[_0x2c645a(0x94)]({'status':this.#SUPPORTED_BROWSER,'message':_0x2c645a(0x98)});return;}if(!this.#KEY){this[_0x2c645a(0x94)]({'status':this.#VALIDATE_KEY,'message':'Key\x20is\x20not\x20empty.'});return;}if(!this.#PORT&&!ports[_0x2c645a(0x9d)])this.#PORT=await this.#handleRequestSerialPort(),await this.#handleOpenSerialPort(),this[_0x2c645a(0xa6)]({'status':this.#SUPPORTED_BROWSER,'message':'Connected'});else{const _0x547e7f=await navigator[_0x2c645a(0xc3)]['getPorts']();this.#PORT=_0x547e7f[0x0],await this.#handleOpenSerialPort();}const _0x33c175=this.#handleGenerateJSONObject({'CMD':_0x2c645a(0xbe),'invoice':_0x585ae9}),_0x275a5c=this.#handleGenerateMD5(_0x33c175);await this.#handleWriteStream(_0x275a5c),this.#handleReadStream(),await this.#listenToTerminal();}catch(_0xf01657){this[_0x2c645a(0x94)](_0xf01657);}}async[a0_0x252ee6(0xbd)](){const _0x187ef5=a0_0x252ee6;try{if(!this.#isSupportedBrowser()){console['error'](_0x187ef5(0x98)),this[_0x187ef5(0x94)]({'status':this.#SUPPORTED_BROWSER,'message':_0x187ef5(0x98)});return;}if(!this.#KEY){this['onErrors']({'status':this.#VALIDATE_KEY,'message':_0x187ef5(0x99)});return;}this[_0x187ef5(0xca)]();const _0x35a772=await navigator[_0x187ef5(0xc3)][_0x187ef5(0xb3)]();this.#PORT=_0x35a772[0x0],await this.#handleOpenSerialPort();const _0x1addf0=this.#handleGenerateJSONObject({'CMD':_0x187ef5(0xc8)}),_0x75137f=this.#handleGenerateMD5(_0x1addf0);await this.#handleWriteStream(_0x75137f),this.#handleReadStream(),await this.#listenToTerminal();}catch(_0x3c3d3b){this[_0x187ef5(0x94)](_0x3c3d3b);}}#handleWriteStream(_0x939160){return new Promise((_0x8816d7,_0x136434)=>{const _0x45b10f=a0_0x2d22,_0x562fd6=new TextEncoderStream();return this.#WRITABLE_STREAM_CLOSED=_0x562fd6[_0x45b10f(0xa8)][_0x45b10f(0x9f)](this.#PORT[_0x45b10f(0xaf)]),this.#WRITER=_0x562fd6[_0x45b10f(0xaf)][_0x45b10f(0xa4)](),this.#WRITER[_0x45b10f(0xb4)](_0x939160)[_0x45b10f(0x97)](_0xbea4b2=>{_0x8816d7(_0xbea4b2);})[_0x45b10f(0xa9)](_0x5617fb=>{const _0x1b2a5e=_0x45b10f;_0x136434({'status':this.#WRITE_STREAM_ERROR,'message':_0x5617fb?.[_0x1b2a5e(0xa2)]});});});}#handleReadStream(){const _0x12b4e0=a0_0x252ee6;try{const _0x80b998=new TextDecoderStream();this.#READABLE_STREAM_CLOSED=this.#PORT[_0x12b4e0(0xa8)][_0x12b4e0(0x9f)](_0x80b998[_0x12b4e0(0xaf)]),this.#READER=_0x80b998[_0x12b4e0(0xa8)][_0x12b4e0(0xa5)]();}catch(_0x2e08a6){this[_0x12b4e0(0x94)]({'status':this.#READ_STREAM_ERROR,'message':_0x2e08a6?.[_0x12b4e0(0xa2)]});}}#handleGenerateJSONObject({CMD:_0x5e3f30,type:_0x365df3,amount:_0x3f424e,currency:_0xd64c6f,invoice:_0x947587,traceId:_0x760547}){const _0x5b2794=a0_0x252ee6;let _0x5c483f={};switch(_0x5e3f30){case'SALE':_0x5c483f={'CMD':'SALE','TYPE':_0x365df3[_0x5b2794(0xa0)](),'AMT':_0x3f424e[_0x5b2794(0xa0)](),'CURRCODE':_0xd64c6f[_0x5b2794(0xa0)](),'TIMESTAMP':this.#DATE_FORMAT,'ECRREF':_0x947587[_0x5b2794(0xa0)]()};break;case _0x5b2794(0xc9):_0x5c483f={'CMD':_0x5b2794(0xc9),'TIMESTAMP':this.#DATE_FORMAT,'TRACE':_0x760547[_0x5b2794(0xa0)]()};break;case'MEMENQ':_0x5c483f={'CMD':_0x5b2794(0xbe),'TIMESTAMP':this.#DATE_FORMAT,'ECRREF':_0x947587[_0x5b2794(0xa0)]()};break;case _0x5b2794(0xc8):_0x5c483f={'CMD':_0x5b2794(0xc8),'TIMESTAMP':this.#DATE_FORMAT};break;}return _0x5c483f;}#handleGenerateMD5(_0x19c4fd){const _0xa29aa6=a0_0x252ee6,_0x5599be=JSON[_0xa29aa6(0x9a)](_0x19c4fd)+this.#KEY;return this.#MD5_ENCRYPTION=a0_0x341cf0['MD5'](_0x5599be)[_0xa29aa6(0xa0)]()[_0xa29aa6(0xbb)](),'@'+this.#MD5_ENCRYPTION+JSON[_0xa29aa6(0x9a)](_0x19c4fd);}async #listenToTerminal(){const _0x2f7319=a0_0x252ee6;try{const _0x51376b=[];let _0x39eb62='',_0x27c817=0x0;while(!![]){const {value:_0x17ce92,done:_0x46d4b1}=await this.#READER[_0x2f7319(0xb0)]();if(_0x46d4b1){this.#READER[_0x2f7319(0xa7)]();break;}if(this.#TIMER)clearTimeout(this.#TIMER);_0x39eb62+=_0x17ce92,_0x27c817+=0x1;const _0x4292f8=setTimeout(async()=>{this.#handlePrintResult(_0x39eb62),this.#handleReleasePort();},0x64);_0x51376b[_0x2f7319(0xad)](_0x4292f8),clearTimeout(_0x51376b[_0x27c817-0x2]);}}catch(_0x5d0aee){this[_0x2f7319(0x94)]({'status':this.#READ_STREAM_ERROR,'message':_0x5d0aee?.['message']});}}#handleSetTimeout(){this.#TIMER=setTimeout(async()=>{const _0x50abd3=a0_0x2d22,_0x5d5328='@'+this.#MD5_ENCRYPTION+JSON[_0x50abd3(0x9a)]({...this.#DATA,'APV':'','PAN':'','PAYER':'','MESSAGE':'','TRXN_ID':'','TRACE':'','STATUS':_0x50abd3(0xc1)});this.#handlePrintResult(_0x5d5328),this.#handleReleasePort();},this.#TIMEOUT);}#handlePrintResult(_0x3808d3){const _0x4a41e4=a0_0x252ee6;if(!_0x3808d3)return;this[_0x4a41e4(0xa6)]({'key':this.#KEY,'value':JSON['parse'](_0x3808d3[_0x4a41e4(0xb5)](0x21))});}async #handleReleasePort(){const _0x58a64e=a0_0x252ee6;this.#READER[_0x58a64e(0xc4)](),await this.#READABLE_STREAM_CLOSED[_0x58a64e(0xa9)](()=>{}),this.#WRITER[_0x58a64e(0xa3)](),await this.#WRITABLE_STREAM_CLOSED[_0x58a64e(0xa9)](()=>{}),await this.#PORT[_0x58a64e(0xa3)]();}#isSupportedBrowser(){const _0x42e0fd=a0_0x252ee6;return _0x42e0fd(0xc3)in navigator;}[a0_0x252ee6(0xac)](){return'your\x20testing\x20it\x20ok';}}export default Terminal;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "terminal-gateway",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
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": "",