/// <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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#5
0
        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));
        }