
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
nets-service-sdk
Advanced tools
A utility library for integrating with NETS payment terminals and handling related operations. This SDK provides tools for serial communication, message parsing, configuration management, transaction storage, and common utility functions.
npm install nets-service-sdk
const netsSdk = require('nets-service-sdk');
// OR destructure specific modules
const { communication, manageConfig, logger } = require('nets-service-sdk');
Manage your application configuration using manageConfig. It reads/writes to a config.json file in your project root.
const { manageConfig } = require('nets-service-sdk');
// Get entire configuration
const config = manageConfig.getConfig();
// Get specific config value
const port = manageConfig.getConfigByKey('com');
// Update configuration
manageConfig.updateConfig({ com: '/dev/ttyUSB0' });
Handle communication with the NETS terminal.
const { communication } = require('nets-service-sdk');
// Initialize WITHOUT socket (messages logged only)
communication.initialize();
// OR Initialize WITH socket (messages emitted via socket)
const io = require('socket.io-client');
const socket = io('http://localhost:3000');
communication.initialize(socket);
// Send a request to the terminal
// Types: 'STATUS_CHECK', 'LOGON', 'PAYMENT', 'CREDIT_PAYMENT'
communication.sentToTerminal('STATUS_CHECK', {});
// For Payment
communication.sentToTerminal('PAYMENT', {
amount: 1000, // Amount in cents
reference: 'ORDER123',
ecn: '040126003000'
});
The SDK supports optional Socket.IO integration for real-time event broadcasting.
const io = require('socket.io-client');
const sdk = require('nets-service-sdk');
// Connect to Socket.IO server
const socket = io('http://localhost:3000');
// Initialize with socket connection
sdk.communication.initialize(socket);
// Listen for events on client side
socket.on('PAYMENT_MESSAGE', (data) => {
console.log('Payment event:', data);
});
socket.on('LOGON_MESSAGE', (data) => {
console.log('Logon event:', data);
});
Socket Events Emitted:
STATUS_MESSAGE - Terminal status updatesLOGON_MESSAGE - Terminal logon resultsPAYMENT_MESSAGE - Payment transaction updatesNote: Socket connection is optional. Without it, events are logged only.
See Socket Integration Guide for detailed usage.
All terminal requests and responses are automatically stored in a SQLite database.
const sdk = require('nets-service-sdk');
// Query specific transaction by ECN
const transaction = sdk.getTransactionByEcn('040126003000');
console.log(transaction);
// {
// ecn: '040126003000',
// request_type: 'PAYMENT',
// request_payload: { amount: 10.50, reference: 'ORDER123' },
// response_data: { status: 'APPROVED', ... },
// status: 'APPROVED',
// ...
// }
// Get recent transactions
const recent = sdk.getRecentTransactions(50);
// Query by status
const approved = sdk.getTransactionsByStatus('APPROVED', 100);
const pending = sdk.getTransactionsByStatus('PENDING', 100);
// Manual cleanup (delete old transactions)
const deleted = sdk.cleanupOldTransactions(90); // Keep last 90 days
The SDK automatically purges old transaction data weekly.
const sdk = require('nets-service-sdk');
// Auto-purge is enabled by default
// Default: Every Sunday at 2 AM, keeps last 7 days
// Start with custom settings
sdk.startAutoPurge(14, '0 3 * * *'); // Keep 14 days, run daily at 3 AM
// Stop auto-purge
sdk.stopAutoPurge();
// Check if auto-purge is running
const isRunning = sdk.isAutoPurgeRunning();
Cron Schedule Examples:
'0 2 * * 0' - Every Sunday at 2 AM (default)'0 3 * * *' - Every day at 3 AM'0 */6 * * *' - Every 6 hours'0 0 1 * *' - First day of every monthThe SDK exports various utility functions directly.
const { padWithLeadingZeros, xorCalculation, generateServiceKey } = require('nets-service-sdk');
// Pad numbers
console.log(padWithLeadingZeros(5, 3)); // Output: "005"
// XOR Calculation for checksums
const checksum = xorCalculation("02313030");
// Generate Service Key
const key = generateServiceKey({ some: "payload" });
Use the built-in Winston logger.
const { logger } = require('nets-service-sdk');
const myLogger = logger(module);
myLogger.info('This is an info message');
myLogger.error('This is an error message');
config.json.The SDK creates a transactions.db SQLite database in your project root to store all terminal transactions. This provides:
ISC
FAQs
Utility functions for Nets Service
The npm package nets-service-sdk receives a total of 315 weekly downloads. As such, nets-service-sdk popularity was classified as not popular.
We found that nets-service-sdk demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.