{"_id":"@accurateitsolutionorg/zvt-client","_rev":"4-6d02f58e139b9f635c0f7f4d099a687e","name":"@accurateitsolutionorg/zvt-client","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@accurateitsolutionorg/zvt-client","version":"0.1.0","keywords":["zvt","verifone","clover","payment-terminal","ecr","pos"],"author":{"name":"AccurateItSolution"},"license":"MIT","_id":"@accurateitsolutionorg/zvt-client@0.1.0","maintainers":[{"name":"accurateitsolutionorg","email":"vatharsh@gmail.com"}],"dist":{"shasum":"d22cd7aa29767d6e4c6d6c64f2a117e045be23a8","tarball":"https://registry.npmjs.org/@accurateitsolutionorg/zvt-client/-/zvt-client-0.1.0.tgz","fileCount":9,"integrity":"sha512-4+hYjErWH/ADADYyENQu0qI6ZdANSlYJRo27H7ZK033fCEmH5kaLcoi8A3QFbba2+GtMvuAoHk8No3M2tFnxGg==","signatures":[{"sig":"MEQCICYSDS5Yb1dFHHY974dyzG7E1mzZRXP2+kccTjWisHRuAiBgI+v5eXk9CA9/T9q3tlL6aYzI5lxf0A0omvRm6lvKaQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96590},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc -p tsconfig.json","clean":"rm -rf dist","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"accurateitsolutionorg","email":"vatharsh@gmail.com"},"_npmVersion":"10.9.2","description":"Unified TypeScript ZVT client for Verifone and Clover terminals (AccurateItSolution)","directories":{},"_nodeVersion":"23.11.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.3","@types/node":"^22.7.5"},"_npmOperationalInternal":{"tmp":"tmp/zvt-client_0.1.0_1771240933579_0.5669287434418322","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@accurateitsolutionorg/zvt-client","version":"0.1.1","keywords":["zvt","verifone","clover","payment-terminal","ecr","pos"],"author":{"name":"AccurateItSolution"},"license":"MIT","_id":"@accurateitsolutionorg/zvt-client@0.1.1","maintainers":[{"name":"accurateitsolutionorg","email":"vatharsh@gmail.com"}],"dist":{"shasum":"c6af2b82e56c26da604a449459d1df23350896e9","tarball":"https://registry.npmjs.org/@accurateitsolutionorg/zvt-client/-/zvt-client-0.1.1.tgz","fileCount":9,"integrity":"sha512-OJS+00Tr1FVZQhyibxbqua3TMndV5nDsHbUpUqMD5emTNvsEIioVcz38SvxIm0g1i6A6LeoIX0zuT6KDZmBpkQ==","signatures":[{"sig":"MEYCIQCfJpJ7myeytOTCpyJJDOV1L/jPxzaH967h/3U6U1FeCwIhAMkrXXwoetSADFaNKtSgbh6W2Quctwp+PPM1zlR/SqqT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99105},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc -p tsconfig.json","clean":"rm -rf dist","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"accurateitsolutionorg","email":"vatharsh@gmail.com"},"_npmVersion":"10.9.2","description":"Unified TypeScript ZVT client for Verifone and Clover terminals (AccurateItSolution)","directories":{},"_nodeVersion":"23.11.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.3","@types/node":"^22.7.5"},"_npmOperationalInternal":{"tmp":"tmp/zvt-client_0.1.1_1771242918287_0.9983850127907477","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@accurateitsolutionorg/zvt-client","version":"0.1.2","keywords":["zvt","verifone","clover","payment-terminal","ecr","pos"],"author":{"name":"AccurateItSolution"},"license":"MIT","_id":"@accurateitsolutionorg/zvt-client@0.1.2","maintainers":[{"name":"accurateitsolutionorg","email":"vatharsh@gmail.com"}],"dist":{"shasum":"66d60ebd18a3336e05be9e53037370a45254d384","tarball":"https://registry.npmjs.org/@accurateitsolutionorg/zvt-client/-/zvt-client-0.1.2.tgz","fileCount":9,"integrity":"sha512-cSDrJBBGxTIWnFlYTB5hwToGa5rAvPtyHzxblXqKSLe+sbLH03xhEEbKNTkLSAy2CKiukw826aSfBrt4U1MVMA==","signatures":[{"sig":"MEUCIQDiDN2ivoGSWWiO2/pslNXr6jy3V0qxkMxqga/BwmdB7QIgcDlsM0fCutJekVxpe+e7/JqSjSNxTzfIkueS8eTNpnM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98920},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc -p tsconfig.json","clean":"rm -rf dist","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"accurateitsolutionorg","email":"vatharsh@gmail.com"},"_npmVersion":"10.9.2","description":"Unified TypeScript ZVT client for Verifone and Clover terminals (AccurateItSolution)","directories":{},"_nodeVersion":"23.11.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.3","@types/node":"^22.7.5"},"_npmOperationalInternal":{"tmp":"tmp/zvt-client_0.1.2_1771243976868_0.2750117385097428","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@accurateitsolutionorg/zvt-client","version":"0.2.0","description":"Unified TypeScript ZVT client for Verifone and Clover terminals (AccurateItSolution)","license":"MIT","author":{"name":"AccurateItSolution"},"type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc -p tsconfig.json","clean":"rm -rf dist","prepublishOnly":"npm run clean && npm run build"},"engines":{"node":">=18"},"devDependencies":{"@types/node":"^22.7.5","typescript":"^5.6.3"},"keywords":["zvt","verifone","clover","payment-terminal","ecr","pos"],"_id":"@accurateitsolutionorg/zvt-client@0.2.0","_nodeVersion":"23.11.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-UdiVSXCegbBJJxoWFS1/FhjASaKVADZldt8sPqefcttanBMJTCcAXAJov7zkn57dzA/FA4fWinOiVfssDPvbfg==","shasum":"4b5f8e92feacaf70607f6deec62a138fb8292470","tarball":"https://registry.npmjs.org/@accurateitsolutionorg/zvt-client/-/zvt-client-0.2.0.tgz","fileCount":9,"unpackedSize":107080,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICsZ7aSSrO8+XGdci+F8epMhvlw2O3I0NJ1rGypcmI2tAiEApC4HPMDB0MCnb33AxwKGba33tyQobBMOyklkPgS8dss="}]},"_npmUser":{"name":"accurateitsolutionorg","email":"vatharsh@gmail.com"},"directories":{},"maintainers":[{"name":"accurateitsolutionorg","email":"vatharsh@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/zvt-client_0.2.0_1783930235544_0.2706535459354207"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-16T11:22:13.491Z","modified":"2026-07-13T08:10:35.789Z","0.1.0":"2026-02-16T11:22:13.733Z","0.1.1":"2026-02-16T11:55:18.441Z","0.1.2":"2026-02-16T12:12:57.026Z","0.2.0":"2026-07-13T08:10:35.679Z"},"author":{"name":"AccurateItSolution"},"license":"MIT","keywords":["zvt","verifone","clover","payment-terminal","ecr","pos"],"description":"Unified TypeScript ZVT client for Verifone and Clover terminals (AccurateItSolution)","maintainers":[{"name":"accurateitsolutionorg","email":"vatharsh@gmail.com"}],"readme":"# @accurateitsolutionorg/zvt-client\n\nUnified TypeScript ZVT client for both Verifone and Clover terminals.\n\n## Install\n\n```bash\nnpm install @accurateitsolutionorg/zvt-client\n```\n\n## Quick Start\n\n```ts\nimport { ZvtClient } from \"@accurateitsolutionorg/zvt-client\";\n\nconst client = new ZvtClient(\n  {\n    terminal: \"clover\", // \"verifone\" | \"clover\"\n    host: \"192.168.178.132\",\n    port: 25690, // Clover default; Verifone usually 20007\n    password: \"000000\", // 6 digits if terminal requires password\n    orderNo: \"1234\", // used by Verifone legacy payload mode\n  },\n  (entry) => console.log(\"[ZVT]\", entry),\n);\n\nconst auth = await client.authorize(100); // 100 cents = 1.00\nconsole.log(auth);\n```\n\n## Constructor\n\n```ts\nnew ZvtClient({\n  terminal: \"verifone\" | \"clover\",\n  host: string,\n  port: number,\n  password?: string,\n  orderNo?: string | number,\n}, forwardLog?)\n```\n\n## Methods\n\n- `register(opts?)`\n- `status(opts?)`\n- `authorize(amountCents, opts?)`\n- `cancel()`\n- `raw(hex)`\n- `reconcileLast(opts?)`\n- `clearCooldown()`\n- `cooldownStatus()`\n\n## Notes\n\n- `password` validation: exactly 6 digits when required.\n- Verifone:\n  - supports `orderNo`/`reference` in legacy payload mode.\n- Clover:\n  - uses readiness probing + cooldown guard to avoid early retries after abort/cancel.\n\n## Changelog\n\n### 0.2.0\n\nFixes intermittent false \"success\" results on both Verifone and Clover paths -\ntransactions the terminal actually rejected or aborted could be silently\nreported as approved when using the POS integration (direct terminal payments\nwere unaffected, since they don't go through this classification logic):\n\n- The byte sequence `84 A0 00` was mislabeled as \"AUTH accepted, transaction\n  started\". Per the ZVT spec, any `84 <code> 00` frame is a **NACK** (the\n  terminal rejecting the request) - the opposite of what the code assumed.\n  Early socket closes following a NACK are no longer treated as evidence of\n  success.\n- `06 1E` (Abort from PT) was only recognized for one hardcoded reason code\n  (`061e019b`). Any other abort reason - including `0x6C` (\"card not\n  admitted\"/general decline, the most common one) - fell through\n  unclassified, producing an ambiguous \"unknown\" outcome instead of a\n  definitive decline/abort.\n- Terminal display text is CP437-encoded, not latin1 - German umlauts (ä ö ü\n  ß) decoded to the wrong characters, and the in-progress/declined/aborted\n  text matchers only recognized English phrases. A German-language terminal's\n  status messages (e.g. \"vorgang abgebrochen\", \"kundeneingabe bitte warten\")\n  were almost entirely invisible to the classifier, which is what let\n  aborted/rejected payments silently default to \"success\" after enough\n  unrecognized status polls.\n\nAll three fixes were verified against a real failure log (byte-for-byte\nreplay of the captured frames) before release.\n\n## Build\n\n```bash\nnpm run build\n```\n\n## Publish\n\n```bash\nnpm login\nnpm publish --access public\n```\n","readmeFilename":"README.md"}