UNPKG

sunmi-device-sdk

Version:

JavaScript SDK for Sunmi card readers and printers

93 lines (85 loc) 2.7 kB
/** * Sunmi Card Reader API * Provides methods to interact with Sunmi device card readers */ import { CardType, MifareKeyType, CardReadResult } from './types'; import { getNativeBridge } from './bridge'; export class SunmiCardReader { /** * Start reading a card * @param cardTypes Array of card types to detect (e.g., ['mifare', 'ic']) * @returns Promise resolving to card information */ static async startReadCard(cardTypes: string[]): Promise<CardReadResult> { const bridge = getNativeBridge(); return bridge.execute('SunmiCardReader', 'startReadCard', cardTypes); } /** * Authenticate a Mifare card block * @param blockKey The authentication key (hex string) * @param keyType Key type (A or B) * @param blockToRead Block number to authenticate * @returns Promise resolving when authentication succeeds */ static async authMifare( blockKey: string, keyType: MifareKeyType, blockToRead: number ): Promise<void> { const bridge = getNativeBridge(); return bridge.execute('SunmiCardReader', 'authMifare', [ blockKey, keyType, blockToRead ]); } /** * Read a block from an authenticated Mifare card * @param blockToRead Block number to read * @returns Promise resolving to the block data (hex string) */ static async readBlockMifare(blockToRead: number): Promise<string> { const bridge = getNativeBridge(); return bridge.execute('SunmiCardReader', 'readBlockMifare', [blockToRead]); } /** * Write data to a Mifare card block * @param blockToWrite Block number to write to * @param stringToWrite Data to write (hex string, must be 16 bytes) * @returns Promise resolving when write completes */ static async writeBlockMifare( blockToWrite: number, stringToWrite: string ): Promise<void> { const bridge = getNativeBridge(); return bridge.execute('SunmiCardReader', 'writeBlockMifare', [ blockToWrite, stringToWrite ]); } /** * Set PIN status * @param pinToEdit PIN identifier * @param statusResolved New status * @returns Promise resolving when PIN status is updated */ static async setPinStatus( pinToEdit: string, statusResolved: boolean ): Promise<void> { const bridge = getNativeBridge(); return bridge.execute('SunmiCardReader', 'setPinStatus', [ pinToEdit, statusResolved ]); } /** * Cancel an ongoing card reading operation * @returns Promise resolving when operation is cancelled */ static async cancelCheckCard(): Promise<void> { const bridge = getNativeBridge(); return bridge.execute('SunmiCardReader', 'cancelCheckCard', []); } }