using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using com.clover.remotepay.sdk; using com.clover.remotepay.transport; namespace ConsoleApp1 { class Program { const string REMOTE_APPLICATION_ID = "Your Remote Application ID"; const string POS_NAME = "Your Point of Sale name"; const string SERIAL_NUMBER = "Your Serial Number"; static void Main(string[] args) { using (var connector = CloverConnectorFactory.CreateUsbConnector(REMOTE_APPLICATION_ID, POS_NAME, SERIAL_NUMBER)) { var listener = new Listener(connector); connector.AddCloverConnectorListener(listener); connector.InitializeConnection(); // Wait for the device to connect Console.WriteLine("Connecting..."); while (!listener.IsReady) { Thread.Sleep(100); } Console.WriteLine("Connected"); listener.LastSaleResponse = null; connector.Sale(new SaleRequest { Amount = 123, ExternalId = ExternalIDUtil.GenerateRandomString(32), }); // Wait for the sale to finish while(listener.LastSaleResponse == null) { Thread.Sleep(100); } var sale = listener.LastSaleResponse; Console.WriteLine($"Sale complete:"); Console.WriteLine($" Amount: {sale.Payment.amount / 100f:C}"); Console.WriteLine($" ID: {sale.Payment.id}"); Console.WriteLine($" ExternalId: {sale.Payment.externalPaymentId}"); Console.ReadKey(); } } } public class Listener : ICloverConnectorListener { public ICloverConnector Connector { get; set; } public bool IsReady { get; set; } public SaleResponse LastSaleResponse { get; set; } public Listener(ICloverConnector connector) { Connector = connector; } public void OnAuthResponse(AuthResponse response) {} public void OnCapturePreAuthResponse(CapturePreAuthResponse response) {} public void OnCloseoutResponse(CloseoutResponse response) {} public void OnConfirmPaymentRequest(ConfirmPaymentRequest request) { throw new NotImplementedException(); // TODO: Either accept or reject this request by calling one of the following: // Connector.AcceptPayment(request.Payment); // Connector.RejectPayment(request.Payment, request.Challenges[0]); } public void OnCustomActivityResponse(CustomActivityResponse response) {} public void OnCustomerProvidedData(CustomerProvidedDataEvent response) {} public void OnDeviceActivityEnd(CloverDeviceEvent deviceEvent) {} public void OnDeviceActivityStart(CloverDeviceEvent deviceEvent) {} public void OnDeviceConnected() {} public void OnDeviceDisconnected() {} public void OnDeviceError(CloverDeviceErrorEvent deviceErrorEvent) {} public void OnDeviceReady(MerchantInfo merchantInfo) { IsReady = true; } public void OnDisplayReceiptOptionsResponse(DisplayReceiptOptionsResponse response) {} public void OnInvalidStateTransitionResponse(InvalidStateTransitionNotification message) {} public void OnManualRefundResponse(ManualRefundResponse response) {} public void OnMessageFromActivity(MessageFromActivity response) {} public void OnPreAuthResponse(PreAuthResponse response) {} public void OnPrintJobStatusRequest(PrintJobStatusRequest request) {} public void OnPrintJobStatusResponse(PrintJobStatusResponse response) {} public void OnPrintManualRefundDeclineReceipt(PrintManualRefundDeclineReceiptMessage message) {} public void OnPrintManualRefundReceipt(PrintManualRefundReceiptMessage message) {} public void OnPrintPaymentDeclineReceipt(PrintPaymentDeclineReceiptMessage message) {} public void OnPrintPaymentMerchantCopyReceipt(PrintPaymentMerchantCopyReceiptMessage message) {} public void OnPrintPaymentReceipt(PrintPaymentReceiptMessage message) {} public void OnPrintRefundPaymentReceipt(PrintRefundPaymentReceiptMessage message) {} public void OnReadCardDataResponse(ReadCardDataResponse response) {} public void OnRefundPaymentResponse(RefundPaymentResponse response) {} public void OnResetDeviceResponse(ResetDeviceResponse response) {} public void OnRetrieveDeviceStatusResponse(RetrieveDeviceStatusResponse response) {} public void OnRetrievePaymentResponse(RetrievePaymentResponse response) {} public void OnRetrievePendingPaymentsResponse(RetrievePendingPaymentsResponse response) {} public void OnRetrievePrintersResponse(RetrievePrintersResponse response) {} public void OnSaleResponse(SaleResponse response) { LastSaleResponse = response; } public void OnTipAdded(TipAddedMessage message) {} public void OnTipAdjustAuthResponse(TipAdjustAuthResponse response) {} public void OnVaultCardResponse(VaultCardResponse response) {} public void OnVerifySignatureRequest(VerifySignatureRequest request) { throw new NotImplementedException(); // TODO: Either accept or reject this request by calling one of the following: // Connector.AcceptSignature(request.Payment); // Connector.RejectSignature(request.Payment); } public void OnVoidPaymentRefundResponse(VoidPaymentRefundResponse response) {} public void OnVoidPaymentResponse(VoidPaymentResponse response) {} } }