/// <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); }
public static CloverDevice Get(CloverDeviceConfiguration configuration) { string cloverDevicetypeName = configuration.getCloverDeviceTypeName(); return((CloverDevice) Activator.CreateInstance(Type.GetType(cloverDevicetypeName), configuration)); }
public static CloverDevice Get(CloverDeviceConfiguration configuration) { string cloverDevicetypeName = configuration.getCloverDeviceTypeName(); return (CloverDevice) Activator.CreateInstance(Type.GetType(cloverDevicetypeName), configuration); }
public override void Initialize(CloverDeviceConfiguration configuration) { base.Initialize(configuration); transport.Subscribe(this); maxMessageSizeInChars = Math.Max(maxMessageSizeInChars, configuration.getMaxMessageCharacters()); }
public RemoteRESTCloverConnector(CloverDeviceConfiguration config) { System.Reflection.Assembly assembly = System.Reflection.Assembly.Load("CloverConnector"); _SDKInfo = AssemblyUtils.GetAssemblyAttribute <System.Reflection.AssemblyDescriptionAttribute>(assembly).Description + ":" + (AssemblyUtils.GetAssemblyAttribute <System.Reflection.AssemblyFileVersionAttribute>(assembly)).Version + (AssemblyUtils.GetAssemblyAttribute <System.Reflection.AssemblyInformationalVersionAttribute>(assembly)).InformationalVersion; Config = config; }
public RemoteWebSocketCloverConnector(CloverDeviceConfiguration config) { this.config = config; port = ((RemoteWebSocketCloverConfiguration)config).port; hostname = "localhost";// force this for now.. //cloverConnectorListener = new RemoteWebSocketCloverConnectorListener(); init(); }
public RemoteRESTCloverConnector(CloverDeviceConfiguration config) { System.Reflection.Assembly assembly = System.Reflection.Assembly.Load("CloverConnector"); _SDKInfo = AssemblyUtils.GetAssemblyAttribute<System.Reflection.AssemblyDescriptionAttribute>(assembly).Description + ":" + (AssemblyUtils.GetAssemblyAttribute<System.Reflection.AssemblyFileVersionAttribute>(assembly)).Version + (AssemblyUtils.GetAssemblyAttribute<System.Reflection.AssemblyInformationalVersionAttribute>(assembly)).InformationalVersion; Config = config; }
public RemoteWebSocketCloverConnector(CloverDeviceConfiguration config) { System.Reflection.Assembly assembly = System.Reflection.Assembly.Load("CloverConnector"); _SDKInfo = assembly.GetAssemblyAttribute <System.Reflection.AssemblyDescriptionAttribute>().Description + ":" + (assembly.GetAssemblyAttribute <System.Reflection.AssemblyFileVersionAttribute>()).Version + (assembly.GetAssemblyAttribute <System.Reflection.AssemblyInformationalVersionAttribute>()).InformationalVersion; this.config = config; endpoint = ((RemoteWebSocketCloverConfiguration)config).endpoint; }
public RemoteWebSocketCloverConnector(CloverDeviceConfiguration config) { System.Reflection.Assembly assembly = System.Reflection.Assembly.Load("CloverConnector"); _SDKInfo = AssemblyUtils.GetAssemblyAttribute<System.Reflection.AssemblyDescriptionAttribute>(assembly).Description + ":" + (AssemblyUtils.GetAssemblyAttribute<System.Reflection.AssemblyFileVersionAttribute>(assembly)).Version + (AssemblyUtils.GetAssemblyAttribute<System.Reflection.AssemblyInformationalVersionAttribute>(assembly)).InformationalVersion; this.config = config; port = ((RemoteWebSocketCloverConfiguration)config).port; hostname = "localhost";// force this for now.. }
public RemoteWebSocketCloverConnector(CloverDeviceConfiguration config) { System.Reflection.Assembly assembly = System.Reflection.Assembly.Load("CloverConnector"); _SDKInfo = AssemblyUtils.GetAssemblyAttribute <System.Reflection.AssemblyDescriptionAttribute>(assembly).Description + ":" + (AssemblyUtils.GetAssemblyAttribute <System.Reflection.AssemblyFileVersionAttribute>(assembly)).Version + (AssemblyUtils.GetAssemblyAttribute <System.Reflection.AssemblyInformationalVersionAttribute>(assembly)).InformationalVersion; this.config = config; port = ((RemoteWebSocketCloverConfiguration)config).port; hostname = "localhost";// force this for now.. }
/// <summary> /// Create WebSocketCloverTransport with the endpoing, custom pairing config, POS name, serial #, stored auth token if available /// </summary> /// <param name="hostname">The hostname or IP of the Clover device to which you are connecting</param> /// <param name="port">The port of the Clover device to which you are connecting</param> public WebSocketCloverTransport(string endpoint, PairingDeviceConfiguration pairingConfig, CloverDeviceConfiguration cloverConfig, string posName, string serialNumber, string pairingAuthToken) { this.endpoint = endpoint; this.pairingDeviceConfiguration = pairingConfig; this.cloverDeviceConfiguration = cloverConfig; this.posName = posName; this.serialNumber = serialNumber; this.pairingAuthToken = pairingAuthToken; connect(endpoint); }
private void WSRemoteForm_Closed(object sender, EventArgs e) { if (((InputForm)sender).Status == DialogResult.OK) { string val = ((InputForm)sender).Value; selectedConfig = new RemoteWebSocketCloverConfiguration(val, APPLICATION_ID); ((CloverExamplePOSForm)this.Owner).InitializeConnector(selectedConfig); this.Close(); } }
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(); }
public RemoteRESTCloverConnector(CloverDeviceConfiguration config) { Thread workerThread = new Thread(DoWork); workerThread.IsBackground = true; callbackService = new CallbackController(this); workerThread.Start(); CardEntryMethod = CloverConnector.CARD_ENTRY_METHOD_ICC_CONTACT | CloverConnector.CARD_ENTRY_METHOD_MAG_STRIPE | CloverConnector.CARD_ENTRY_METHOD_NFC_CONTACTLESS; }
public static CloverDevice Get(CloverDeviceConfiguration configuration) { string name = configuration.getCloverDeviceTypeName(); Type deviceType = Type.GetType(name); if (deviceType == null) { throw new ArgumentException($"Cannot locate type \"{name}\" specified in Configuration."); } return((CloverDevice)Activator.CreateInstance(deviceType, configuration)); }
private void okButton_Click(object sender, EventArgs e) { selectedConfig = ((CloverDeviceConfiguration)ConnectionType.SelectedValue); if (selectedConfig is WebSocketCloverDeviceConfiguration) { InitWebSocket(); } else { ((CloverExamplePOSForm)this.Owner).InitializeConnector(selectedConfig); Close(); } }
private void WSRemoteForm_Closed(object sender, EventArgs e) { if (((InputForm)sender).Status == DialogResult.OK) { string val = ((InputForm)sender).Value; string[] tokens = val.Split(' '); if (tokens.Length == 1) { int port = Int32.Parse(tokens[0]); selectedConfig = new RemoteWebSocketCloverConfiguration("localhost", port, APPLICATION_ID); } ((CloverExamplePOSForm)this.Owner).InitializeConnector(selectedConfig); this.Close(); } }
public void InitializeConnector(CloverDeviceConfiguration config) { if (cloverConnector != null) { cloverConnector.RemoveCloverConnectorListener(this); OnDeviceDisconnected(); // for any disabling, messaging, etc. //SaleButton.Enabled = false; // everything can work except Pay cloverConnector.Dispose(); } cloverConnector = new CloverConnector(config); cloverConnector.InitializeConnection(); cloverConnector.AddCloverConnectorListener(this); }
private void WSForm_Closed(object sender, EventArgs e) { if (((InputForm)sender).Status == DialogResult.OK) { string val = ((InputForm)sender).Value; string[] tokens = val.Split(':'); if (tokens.Length == 2) { string ip = tokens[0]; int port = Int32.Parse(tokens[1]); selectedConfig = new WebSocketCloverDeviceConfiguration(ip, port, APPLICATION_ID, false, 1); } ((CloverExamplePOSForm)this.Owner).InitializeConnector(selectedConfig); this.Close(); } }
private void WSForm_Closed(object sender, EventArgs e) { if (((InputForm)sender).Status == DialogResult.OK) { string val = ((InputForm)sender).Value; string[] tokens = val.Split(':'); if (tokens.Length == 2) { //TODO: validate IP and port string ip = tokens[0]; int port = Int32.Parse(tokens[1]); WebSocketConfig = new WebSocketCloverDeviceConfiguration(ip, port); InitializeConnector(WebSocketConfig); } } }
private void WSForm_Closed(object sender, EventArgs e) { if (((InputForm)sender).Status == DialogResult.OK) { string endpoint = ((InputForm)sender).Value; if (endpoint.Length > 0) { Properties.Settings.Default.lastWSEndpoint = endpoint; Properties.Settings.Default.Save(); selectedConfig = new WebSocketCloverDeviceConfiguration(endpoint, APPLICATION_ID, "Clover Windows Example POS", "AISLE_3", Properties.Settings.Default.pairingAuthToken); ((WebSocketCloverDeviceConfiguration)selectedConfig).OnPairingCode = pairingCodeHandler; ((WebSocketCloverDeviceConfiguration)selectedConfig).OnPairingSuccess = pairingSuccessHandler; } ((CloverExamplePOSForm)this.Owner).InitializeConnector(selectedConfig); this.Close(); } }
private void okButton_Click(object sender, EventArgs e) { selectedConfig = ((CloverDeviceConfiguration)ConnectionType.SelectedValue); if (selectedConfig is RemoteWebSocketCloverConfiguration) { InitLocalWebSocket(); } else if (selectedConfig is WebSocketCloverDeviceConfiguration) { InitWebSocket(); } else { ((CloverExamplePOSForm)this.Owner).InitializeConnector(selectedConfig); this.Close(); } //new CloverExamplePOSForm(selectedConfig).Show(); }
internal static string getRemoteSdk(this CloverDeviceConfiguration config, CloverTransport transport) { string REG_KEY = "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\CloverSDK"; string receiver = "DLL"; try { object rReceiver = Registry.GetValue(REG_KEY, "DisplayName", "unset"); if (rReceiver != null && !rReceiver.ToString().Equals("unset")) { receiver = rReceiver.ToString(); } } catch (Exception e) { using (EventLog eventLog = new EventLog("Application")) { eventLog.Source = "Application"; eventLog.WriteEntry($"{config.getMessagePackageName().GetType()}->{e.Message}"); } } string shortTitle = transport.ShortTitle(); string shortTransportType = String.IsNullOrWhiteSpace(shortTitle) ? "UNKNOWN" : shortTitle; // Build SdkInfo string System.Reflection.Assembly assembly = System.Reflection.Assembly.Load("CloverConnector"); string sdkInfoString = AssemblyUtils.GetAssemblyAttribute <System.Reflection.AssemblyDescriptionAttribute>(assembly).Description + "_" + receiver + "|" + shortTransportType + ":" + (assembly.GetAssemblyAttribute <System.Reflection.AssemblyFileVersionAttribute>()).Version + (assembly.GetAssemblyAttribute <System.Reflection.AssemblyInformationalVersionAttribute>()).InformationalVersion; using (EventLog eventLog = new EventLog("Application")) { eventLog.Source = "Application"; eventLog.WriteEntry($"{config.getMessagePackageName().GetType()}->SDKInfo from assembly and registry = {sdkInfoString}"); } return(sdkInfoString); }
/// <summary> /// Initialize the Clover Device for use /// </summary> /// <param name="configuration"></param> public virtual void Initialize(CloverDeviceConfiguration configuration) { string logSource = "_TransportEventLog"; if (!EventLog.SourceExists(logSource)) { EventLog.CreateEventSource(logSource, logSource); } // Add the event log trace listener to the collection. EventLogTraceListener myTraceListener = new EventLogTraceListener(logSource); Trace.Listeners.Add(myTraceListener); transport = configuration.getCloverTransport(); shortTransportType = !string.IsNullOrWhiteSpace(transport.ShortTitle()) ? transport.ShortTitle() : shortTransportType; packageName = configuration.getMessagePackageName(); remoteSourceSDK = getSDKInfoString(); deviceInfo = new DeviceInfo(); }
/// <summary> /// Initialize the Clover Device for use /// </summary> /// <param name="configuration"></param> public virtual void Initialize(CloverDeviceConfiguration configuration) { string logSource = "_TransportEventLog"; try { // If this EventLog code crashes, you don't have the Windows Event Log Source setup, and this code isn't running with sufficient credentials to create it. // See https://github.com/clover/remote-pay-windows/wiki/ "Setting up the Windows Event Log" article for details. // // Quickfixs: run this app _once_ as admin so this code can perform setup, or just run this in an admin PowerShell> New-EventLog -LogName "Application" -Source "_TransportEventLog" // Other fixes available in the project's wiki article. // // When this app is deployed into production, the installer or deploy script should ensure the EventLog is created. if (!EventLog.SourceExists(logSource)) { EventLog.CreateEventSource(logSource, logSource); } // Add the event log trace listener to the collection. EventLogTraceListener eventlog = new EventLogTraceListener(logSource); Trace.Listeners.Add(eventlog); } catch (Exception exception) { // If this has crashed, see the comment just above at the top of the EventLog try for details and quick fixes. throw new CloverException($"Aborting Clover Connector SDK because the Windows Event Log Source \"{logSource}\" does not exist or cannot be accessed.\nSee the https://github.com/clover/remote-pay-windows/wiki article for more information.\n\nref# CLOVER-W230\nDetail Message: {exception.Message}", "CLOVER-W230", exception); } Log(MessageLevel.Detailed, $"CloverDevice.{nameof(Initialize)} {configuration.getName()}, raid: {configuration.getRemoteApplicationID()}"); transport = configuration.getCloverTransport(); transport?.SetLogLevel(logLevel); shortTransportType = !string.IsNullOrWhiteSpace(transport.ShortTitle()) ? transport.ShortTitle() : shortTransportType; packageName = configuration.getMessagePackageName(); remoteSourceSDK = getSDKInfoString(); deviceInfo = new DeviceInfo(); }
private void InitializeConnector(CloverDeviceConfiguration config) { if (cloverConnector != null) { cloverConnector -= (this); OnDeviceDisconnected(); // for any disabling, messaging, etc. PayButton.Enabled = false; // everything can work except Pay } cloverConnector = new CloverConnector(config); cloverConnector += this; //ui cleanup this.Text = OriginalFormTitle + " - " + config.getName(); if (config is TestCloverDeviceConfiguration) { TestDeviceMenuItem.Checked = true; CloverMiniUSBMenuItem.Checked = false; WebSocketMenuItem.Checked = false; } else if (config is USBCloverDeviceConfiguration) { TestDeviceMenuItem.Checked = false; CloverMiniUSBMenuItem.Checked = true; WebSocketMenuItem.Checked = false; } else if (config is WebSocketCloverDeviceConfiguration) { TestDeviceMenuItem.Checked = false; CloverMiniUSBMenuItem.Checked = false; WebSocketMenuItem.Checked = true; } }
/// <summary> /// Create a Clover Device from a configuration /// </summary> /// <param name="configuration"></param> protected CloverDevice(CloverDeviceConfiguration configuration = null) { remoteApplicationID = configuration?.getRemoteApplicationID() ?? ""; }
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); }
private void WSForm_Closed(object sender, EventArgs e) { if (((InputForm)sender).Status == DialogResult.OK) { string val = ((InputForm)sender).Value; string[] tokens = val.Split(':'); if (tokens.Length == 2) { //TODO: validate IP and port string ip = tokens[0]; int port = Int32.Parse(tokens[1]); WebSocketConfig = new WebSocketCloverDeviceConfiguration(ip, port); InitializeConnector(WebSocketConfig); } } }
private void WSRemoteForm_Closed(object sender, EventArgs e) { if (((InputForm)sender).Status == DialogResult.OK) { string val = ((InputForm)sender).Value; string[] tokens = val.Split(' '); if (tokens.Length == 1) { int port = Int32.Parse(tokens[0]); selectedConfig = new RemoteWebSocketCloverConfiguration("localhost", port); } ((CloverExamplePOSForm)this.Owner).InitializeConnector(selectedConfig); this.Close(); } }
private void InitializeConnector(CloverDeviceConfiguration config) { if(cloverConnector != null) { cloverConnector -= (this); OnDeviceDisconnected(); // for any disabling, messaging, etc. PayButton.Enabled = false; // everything can work except Pay } cloverConnector = new CloverConnector(config); cloverConnector += this; //ui cleanup this.Text = OriginalFormTitle + " - " + config.getName(); if (config is TestCloverDeviceConfiguration) { TestDeviceMenuItem.Checked = true; CloverMiniUSBMenuItem.Checked = false; WebSocketMenuItem.Checked = false; } else if (config is USBCloverDeviceConfiguration) { TestDeviceMenuItem.Checked = false; CloverMiniUSBMenuItem.Checked = true; WebSocketMenuItem.Checked = false; } else if (config is WebSocketCloverDeviceConfiguration) { TestDeviceMenuItem.Checked = false; CloverMiniUSBMenuItem.Checked = false; WebSocketMenuItem.Checked = true; } }
public ConfigWrapper(string description, CloverDeviceConfiguration config) { Description = description; Config = config; }
public DefaultCloverDevice(CloverDeviceConfiguration configuration) : this(configuration.getMessagePackageName(), configuration.getCloverTransport(), configuration.getRemoteApplicationID()) { }
public DefaultCloverDevice(CloverDeviceConfiguration configuration) : this(configuration.getMessagePackageName(), configuration.getCloverTransport(), configuration.getRemoteApplicationID()) { }
/// <summary> /// Factory to create an instance of the CloverConnector /// </summary> /// <param name="config">Object that conveys the required information used by the connector. /// Usually a USBCloverDeviceConfiguration (USB connection) or WebSocketCloverDeviceConfiguration (Network/SNPD connection)</param> /// <returns>Initialized instance conforming to the ICloverConnector</returns> public static ICloverConnector createICloverConnector(CloverDeviceConfiguration config) { return(new CloverConnector(config)); }
public WSCloverConnector(CloverDeviceConfiguration config) : base(config) { //Initialize(config); }
public WSCloverConnector(CloverDeviceConfiguration config) : base(config) { //Initialize(config); }
public ConfigWrapper(string description, CloverDeviceConfiguration config) { Description = description; Config = config; }
public DefaultCloverDevice(CloverDeviceConfiguration configuration) : base(configuration) { }
private void WSForm_Closed(object sender, EventArgs e) { if (((InputForm)sender).Status == DialogResult.OK) { string val = ((InputForm)sender).Value; string[] tokens = val.Split(':'); if (tokens.Length == 2) { string ip = tokens[0]; int port = Int32.Parse(tokens[1]); selectedConfig = new WebSocketCloverDeviceConfiguration(ip, port, "CloverExamplePOS", false, 1); } ((CloverExamplePOSForm)this.Owner).InitializeConnector(selectedConfig); this.Close(); } }
public void InitializeConnector(CloverDeviceConfiguration config) { if (cloverConnector != null) { cloverConnector.RemoveCloverConnectorListener(this); OnDeviceDisconnected(); // for any disabling, messaging, etc. SaleButton.Enabled = false; // everything can work except Pay cloverConnector.Dispose(); } if (config is RemoteRESTCloverConfiguration) { cloverConnector = new RemoteRESTCloverConnector(config); cloverConnector.InitializeConnection(); } else if (config is RemoteWebSocketCloverConfiguration) { cloverConnector = new RemoteWebSocketCloverConnector(config); cloverConnector.InitializeConnection(); } else { cloverConnector = new CloverConnector(config); cloverConnector.InitializeConnection(); } cloverConnector.AddCloverConnectorListener(this); //UI cleanup this.Text = OriginalFormTitle + " - " + config.getName(); CardEntryMethod = 34567; ManualEntryCheckbox.Checked = (CardEntryMethod & CloverConnector.CARD_ENTRY_METHOD_MANUAL) == CloverConnector.CARD_ENTRY_METHOD_MANUAL; MagStripeCheckbox.Checked = (CardEntryMethod & CloverConnector.CARD_ENTRY_METHOD_MAG_STRIPE) == CloverConnector.CARD_ENTRY_METHOD_MAG_STRIPE; ChipCheckbox.Checked = (CardEntryMethod & CloverConnector.CARD_ENTRY_METHOD_ICC_CONTACT) == CloverConnector.CARD_ENTRY_METHOD_ICC_CONTACT; ContactlessCheckbox.Checked = (CardEntryMethod & CloverConnector.CARD_ENTRY_METHOD_NFC_CONTACTLESS) == CloverConnector.CARD_ENTRY_METHOD_NFC_CONTACTLESS; }