/// <summary> /// Connect to the specified Clover device /// </summary> public bool Connect(string connectionString) { CloverDeviceConfiguration config = null; Address = connectionString; if (connectionString.Trim().ToUpper() == "USB") { // USB connected Clover Devices are directly connected to the machine and so don't need any extra identification or Pairing information config = new USBCloverDeviceConfiguration(RemoteAppId, true); Address = "USB"; } else { // Network connections require a pairing information and send extra identification to the device config = new WebSocketCloverDeviceConfiguration(connectionString, RemoteAppId, true, 1, PosName, SerialNumber, LoadPairingAuthToken(connectionString, RemoteAppId, PosName), OnPairingCode, OnPairingSuccess, OnPairingState); } if (config != null) { cloverConnector = CloverConnectorFactory.createICloverConnector(config); listener = new SimpleCloverConnectorListener(cloverConnector); listener.DeviceConnected += Listener_DeviceConnected; listener.DeviceReady += Listener_DeviceReady; listener.DeviceDisconnected += Listener_DeviceDisconnected; listener.DeviceError += Listener_DeviceError; listener.SaleResponse += Listener_SaleResponse; cloverConnector.AddCloverConnectorListener(listener); cloverConnector.InitializeConnection(); } return(config != null); }
static void Main(string[] args) { CloverDeviceConfiguration config = new USBCloverDeviceConfiguration("__deviceID__", "com.clover.TestTransport", true, 1); CloverConnector cloverConnector = new CloverConnector(config); cloverConnector.InitializeConnection(); TestConnectorListener connListener = new TestConnectorListener(cloverConnector); while (!connListener.ready) { System.Console.WriteLine("Connected:" + connListener.connected); System.Console.WriteLine("Ready:" + connListener.ready); System.Threading.Thread.Sleep(3 * 1000); } System.Console.WriteLine("Connected:" + connListener.connected); System.Console.WriteLine("Ready:" + connListener.ready); //TEST DisplayOrder testDisplayOrder(cloverConnector, connListener); //TEST Payment and Void of that Payment testPaymentAndVoid(cloverConnector, connListener); //TEST Manual Refund (Naked Credit) testManualRefund(cloverConnector, connListener); }
private void InitializeConnector(Dictionary <string, string> parameters) { string protocol; string port; bool testConfig = false; //string lanConfig = null; string testConfigString; if (!parameters.TryGetValue("/P", out port)) { port = "8889";// default } string certPath = null; if (!parameters.TryGetValue("/C", out certPath)) { protocol = "ws";// default } else { protocol = "wss"; } if (!parameters.TryGetValue("/T", out testConfigString)) { testConfig = false; } else { testConfig = true; // } //parameters.TryGetValue("/L", out lanConfig); server = new WebSocketServer(protocol + "://127.0.0.1:" + port); if (certPath != null) { server.Certificate = new System.Security.Cryptography.X509Certificates.X509Certificate2(certPath); } CloverDeviceConfiguration config = null; if (testConfig) { //config = new TestCloverDeviceConfiguration(); } else { config = new USBCloverDeviceConfiguration(null, getPOSNameAndVersion(), Debug, Timer); } cloverConnector = CloverConnectorFactory.createICloverConnector(config); cloverConnector.AddCloverConnectorListener(connectorListener); cloverConnector.InitializeConnection(); }
private void InitializeConnector(Dictionary <string, string> parameters) { string protocol; string port; bool testConfig = false; string lanConfig = null; string testConfigString; if (!parameters.TryGetValue("/P", out port)) { port = "8889";// default } string certPath = null; if (!parameters.TryGetValue("/C", out certPath)) { protocol = "ws";// default } else { protocol = "wss"; } if (!parameters.TryGetValue("/T", out testConfigString)) { testConfig = false; } else { testConfig = true; // } parameters.TryGetValue("/L", out lanConfig); server = new WebSocketServer(protocol + "://127.0.0.1:" + port); if (certPath != null) { server.Certificate = new System.Security.Cryptography.X509Certificates.X509Certificate2(certPath); } CloverDeviceConfiguration config = null; if (testConfig) { config = new TestCloverDeviceConfiguration(); } else if (lanConfig != null) { int loc = lanConfig.IndexOf(':'); if (loc == -1) { throw new InvalidDataException("invalid lan host. arguments must be '/L <hostname>:<port>'"); } try { string lanHostname = lanConfig.Substring(0, loc); string lanPortStr = lanConfig.Substring(loc + 1); int lanPort = int.Parse(lanPortStr); if (lanPort < 0 || lanPort > 65535) { throw new InvalidDataException("Invalid port. must be between 1 and 65535"); } config = new WebSocketCloverDeviceConfiguration(lanHostname, lanPort, getPOSNameAndVersion(), Debug, Timer); } catch (FormatException fe) { throw new InvalidDataException("invalid port: " + lanConfig.Substring(loc + 1)); } } else { config = new USBCloverDeviceConfiguration(null, getPOSNameAndVersion(), Debug, Timer); } cloverConnector = new CloverConnector(config); cloverConnector.InitializeConnection(); cloverConnector.AddCloverConnectorListener(connectorListener); }
static void Main(string[] args) { string startFilePath = "c:/clover/SaleRequest.txt"; //testFile //string startFilePath = "c:/users/bryanc/Desktop/test.txt"; ICloverConnector cloverConnector; CloverDeviceConfiguration USBConfig = new USBCloverDeviceConfiguration("__deviceID__", "com.Fromuth.BC.tech", false, 1); cloverConnector = new CloverConnector(USBConfig); cloverConnector.AddCloverConnectorListener(new YourListener(cloverConnector)); cloverConnector.InitializeConnection(); Logging log = new Logging("CloverLog"); log.WriteMessage("Clover Program Started"); DateTime timeStamp = DateTime.Now; Thread.Sleep(5000); do { if (cloverConnector.IsReady && !isBusy) { try { //output a clover isConnected file if (File.Exists("c:/clover/isConnected.txt")) { File.WriteAllText("c:/clover/isConnected.txt", DateTime.Now.ToString()); } else { File.Create("c:/clover/isConnected.txt"); File.WriteAllText("c:/clover/isConnected.txt", DateTime.Now.ToString()); } //If the SaleRequest is made, proceed, else keep repeatig loop. if (File.Exists(startFilePath) && !isBusy) { isBusy = true; string startFileText = File.ReadAllText(startFilePath); //File.Delete(startFilePath); //File.Move(startFilePath, "c:/clover/clover-request-sale-file.txt"); string[] startFileContent = startFileText.Split('\t'); switch (startFileContent[0].ToLower()) { case "SALE": case "Sale": case "sale": { //StartOrder(cloverConnector); StartSale(cloverConnector, startFileContent[1], Int32.Parse(startFileContent[2])); break; } case "mrefund": case "MREFUND": case "MRefund": case "refund": { StartRefund(cloverConnector, startFileContent[1], Int32.Parse(startFileContent[2])); break; } case "fdrefund": case "FDREFUND": case "FDRefund": { StartDirectRefund(cloverConnector, startFileContent[1], startFileContent[2]); break; } case "pdrefund": case "PDREFUND": case "PDRefund": { StartDirectRefund(cloverConnector, startFileContent[1], startFileContent[2], Int32.Parse(startFileContent[3])); break; } case "cancel": case "CANCEL": case "Cancel": { cloverConnector.ShowMessage("Transaction Canceled by the cashier."); Thread.Sleep(1500); cloverConnector.ShowWelcomeScreen(); break; } default: { cloverConnector.ShowMessage("Invalid Response"); Thread.Sleep(3000); cloverConnector.ShowWelcomeScreen(); break; } } //File.Delete(startFilePath); } Thread.Sleep(5000); }catch (Exception ex) { Console.WriteLine(ex.Message); log.WriteError(ex.Message); isBusy = false; Thread.Sleep(5000); } } } while (true); }
/// <summary> /// Create a USB configured connection CloverConnector to a Clover Device running USB Pay Display (UsbPD) /// Convenience wrapper around creating a USBCloverDeviceConfiguration object and calling CloverConnectorFactory.createICloverConnector /// </summary> /// <param name="remoteApplicationId">Application ID for server reporting</param> /// <param name="posName">Point of Sale name for server reporting</param> /// <param name="serialNumber">Station ID / serial number for server reporting</param> /// <param name="enableLogging">Turn logging on or off</param> /// <returns></returns> public static ICloverConnector CreateUsbConnector(string remoteApplicationId, string posName, string serialNumber, bool enableLogging = false) { USBCloverDeviceConfiguration config = new USBCloverDeviceConfiguration("", remoteApplicationId, posName, serialNumber, enableLogging); return(createICloverConnector(config)); }