public override bool Send(string data = "") { if (data == "") { return(false); } try { if (Status) { // Begin sending the data to the remote device. TCPClientStream.WriteString(data); } else { Console.WriteLine("The TCP link is not connected."); } return(true); } catch (Exception e) { Console.Error.WriteLine("TCP Client Exception on Send: " + e.Message); Status = false; // setting the status to false return(false); } }
public static byte[] SendTransaction(TCPClientStream stream, byte[] txBytes) { try { byte[] rxBuffer = Receive(stream); //wait for ENQ if (rxBuffer[0] != 0x05) { throw new TCPIPManagerException("Could not send Transaction: ENQ char not received"); } Transmit(stream, txBytes); byte[] received = Receive(stream); SendACK(stream); return(received); } catch (Exception ex) { try { SendNACK(stream); } catch { } throw ex; } }
public void Init(ICardInterfaceManger contactCardInterfaceManger, string contactDeviceId, ICardInterfaceManger contactlessCardInterfaceManger, string contactlessDeviceId, QRCodeMode qrCodeMode, string accountNumberInUse, IConfigurationProvider configProvider, IOnlineApprover onlineContactEMVApprover, TCPClientStream tcpClientStream, TransactionRequest tr = null) { qrCodeScanned = false; this.contactDeviceId = contactDeviceId; this.contactlessDeviceId = contactlessDeviceId; this.qrCodeMode = qrCodeMode; this.contactCardInterfaceManger = contactCardInterfaceManger; this.contactlessCardInterfaceManger = contactlessCardInterfaceManger; this.configProvider = configProvider; this.onlineContactEMVApprover = onlineContactEMVApprover; this.tcpClientStream = tcpClientStream; this.accountNumberInUse = accountNumberInUse; if (tr != null) { this.tr = tr; totalAmount.Total = Convert.ToString(tr.GetAmountAuthorized_9F02()); Start(); } else { UpdateView(ViewState.Step1TransactDetails); } }
public static byte[] SendTransaction(TCPClientStream stream, byte[] txBytes) { try { Transmit(stream, txBytes); return(Receive(stream)); } catch (Exception ex) { throw ex; } }
private static void Transmit(TCPClientStream stream, byte[] txBytes) { short length = (short)(txBytes.Length); byte[] lengthBytes = new byte[] { (byte)(length / 256), (byte)(length % 256) }; byte[] txBytesTCP = Formatting.ConcatArrays(lengthBytes, txBytes); Logger.Log("Sending: [" + Formatting.ConvertToInt16(lengthBytes) + "]" + "[" + Formatting.ByteArrayToHexString(txBytes) + "]"); stream.Write(txBytesTCP); }
private static byte[] Receive(TCPClientStream stream) { byte chrSTX = 0x02; // Start of Text byte chrETX = 0x03; // End of Text byte[] rxBuffer = new Byte[4096]; int countBytesRead = stream.Read(rxBuffer); byte[] lengthBytesReceived = new byte[2]; Array.Copy(rxBuffer, 0, lengthBytesReceived, 0, lengthBytesReceived.Length); int bytesInRxPacket = Formatting.ConvertToInt16(lengthBytesReceived); if (bytesInRxPacket + 2 != countBytesRead) { throw new TCPIPManagerException("Did not receive all expected bytes"); } byte[] result = new byte[bytesInRxPacket]; Array.Copy(rxBuffer, 2, result, 0, result.Length); bool hasSTX = false; bool hasETX = false; if (result.First() == chrSTX) { byte[] strippedSTX = new byte[result.Length - 1]; Array.Copy(result, 1, strippedSTX, 0, strippedSTX.Length); result = strippedSTX; hasSTX = true; } int lastPos = Array.FindIndex(result, 0, (x) => x == chrETX); if (lastPos != -1) { int lengthToCopy = result.Length - (result.Length - lastPos); byte[] strippedETX = new byte[lengthToCopy]; Array.Copy(result, 0, strippedETX, 0, strippedETX.Length); result = strippedETX; hasETX = true; } Logger.Log("Received:[" + countBytesRead + "]" + (hasSTX == true? "[" + Formatting.ByteArrayToHexString(new byte[] { chrSTX }) + "]": "[No STX]") + "[" + Formatting.ByteArrayToASCIIString(result) + "]" + (hasETX == true ? "[" + Formatting.ByteArrayToHexString(new byte[] { chrETX }) + "]": "[No ETX]")); return(result); }
public EMVMain(ICardInterfaceManger cardInterfaceManger, IOnlineApprover onlineApprover, IConfigurationProvider configProvider, TCPClientStream tcpClientStream) { InitializeComponent(); dlgPin.IsVisible = false; this.cardInterfaceManger = cardInterfaceManger; this.onlineApprover = onlineApprover; this.tcpClientStream = tcpClientStream; this.configProvider = configProvider; transactionVM = new TransactionVM { Amount = 1000 }; gridMain.BindingContext = transactionVM; cmbTransactionType.SelectedItem = transactionVM.TransactionTypes.First(); }
public CardAdminView(ICardInterfaceManger contactCardInterfaceManger, ICardInterfaceManger contactlessCardInterfaceManger, IConfigurationProvider configProvider, IOnlineApprover onlineApprover, TCPClientStream tcpClientStream) { InitializeComponent(); this.contactCardInterfaceManger = contactCardInterfaceManger; this.contactlessCardInterfaceManger = contactlessCardInterfaceManger; this.configProvider = configProvider; this.onlineApprover = onlineApprover; this.tcpClientStream = tcpClientStream; emvTxCtl.TxCompleted += EmvTxCtl_TxCompleted; gridProgress.IsVisible = false; viewCardList.ItemsSource = SessionSingleton.Account.Cards; UpdateView(CardAdminViewState.CardList); }
public POSView(ICardInterfaceManger contactCardInterfaceManger, ICardInterfaceManger contactlessCardInterfaceManger, IConfigurationProvider configProvider, IOnlineApprover onlineApprover, TCPClientStream tcpClientStream) { InitializeComponent(); this.contactCardInterfaceManger = contactCardInterfaceManger; this.contactlessCardInterfaceManger = contactlessCardInterfaceManger; this.configProvider = configProvider; this.onlineApprover = onlineApprover; this.tcpClientStream = tcpClientStream; emvTxCtl.TxCompleted += EmvTxCtl_TxCompleted; UpdateView(POSViewState.POS); basketItems = new ObservableCollection <POSTransactionLineItem>(); totalAmount = new TotalAmountViewModel(); lblTotal.BindingContext = totalAmount; try { Task.Run(async() => { groups = await CacheProvider.Instance.GetInventoryGroups(); items = await CacheProvider.Instance.GetinventoryItems(); }) .ContinueWith((x) => { UpdataItemNavigator(); Device.BeginInvokeOnMainThread(() => { if (lstBasketItems.ItemsSource == null) { lstBasketItems.ItemsSource = basketItems; } gridProgress.IsVisible = false; }); }, TaskContinuationOptions.OnlyOnRanToCompletion); } catch (Exception ex) { Task.Run(async() => { await App.Current.MainPage.DisplayAlert("Error", ex.Message, "OK"); }); } }
private static void Transmit(TCPClientStream stream, byte[] txBytes) { byte chrSTX = 0x02; // Start of Text byte chrETX = 0x03; // End of Text //byte[] LRC; short length = (short)(txBytes.Length + 2); byte[] lengthBytes = new byte[] { (byte)(length / 256), (byte)(length % 256) }; byte[] txBytesTCP = Formatting.ConcatArrays(lengthBytes, new byte[] { chrSTX }, txBytes, new byte[] { chrETX }); Logger.Log("Sending: [" + Formatting.ConvertToInt16(lengthBytes) + "]" + "[" + Formatting.ByteArrayToHexString(new byte[] { chrSTX }) + "]" + "[" + Formatting.ByteArrayToASCIIString(txBytes) + "]" + "[" + Formatting.ByteArrayToHexString(new byte[] { chrETX }) + "]"); stream.Write(txBytesTCP); }
public EMVQRCodeView(ICardInterfaceManger contactCardInterfaceManger, ICardInterfaceManger contactlessCardInterfaceManger, IConfigurationProvider configProvider, IOnlineApprover onlineApprover, TCPClientStream tcpClientStream) { InitializeComponent(); this.contactCardInterfaceManger = contactCardInterfaceManger; this.contactlessCardInterfaceManger = contactlessCardInterfaceManger; this.configProvider = configProvider; this.onlineApprover = onlineApprover; this.tcpClientStream = tcpClientStream; emvTxCtl.TxCompleted += EmvTxCtl_TxCompleted; emvTxCtl.Init(contactCardInterfaceManger, SessionSingleton.ContactDeviceId, contactlessCardInterfaceManger, SessionSingleton.ContactlessDeviceId, QRCodeMode.PresentAndPoll, "5906374433f04eb5b67d25c3e50487dc", configProvider, onlineApprover, tcpClientStream); }
public HomeMasterDetailView(ICardInterfaceManger contactCardInterfaceManger, ICardInterfaceManger contactlessCardInterfaceManger, IOnlineApprover onlineApprover, IConfigurationProvider configProvider, TCPClientStream tcpClientStream) { InitializeComponent(); this.contactlessCardInterfaceManger = contactlessCardInterfaceManger; this.contactCardInterfaceManger = contactCardInterfaceManger; this.onlineApprover = onlineApprover; this.configProvider = configProvider; this.tcpClientStream = tcpClientStream; masterPage.ListViewTransact.ItemSelected += OnItemSelected; masterPage.ListViewOthers.ItemSelected += OnItemSelected; //if (Device.RuntimePlatform == Device.UWP) //{ MasterBehavior = MasterBehavior.Popover; //} (masterPage as HomeMasterView).SetWait(false); }
private static byte[] Receive(TCPClientStream stream) { byte[] rxBuffer = new Byte[4096]; int countBytesRead = stream.Read(rxBuffer); byte[] lengthBytesReceived = new byte[2]; Array.Copy(rxBuffer, 0, lengthBytesReceived, 0, lengthBytesReceived.Length); int bytesInRxPacket = Formatting.ConvertToInt16(lengthBytesReceived); if (bytesInRxPacket + 2 != countBytesRead) { throw new TCPIPManagerException("Did not receive all expected bytes"); } byte[] result = new byte[bytesInRxPacket]; Array.Copy(rxBuffer, 2, result, 0, result.Length); Logger.Log("Received:[" + bytesInRxPacket + "]" + "[" + Formatting.ByteArrayToHexString(result) + "]"); return(result); }
public TerminalMain(ICardInterfaceManger cardInterfaceManger, IOnlineApprover onlineApprover, IConfigurationProvider configProvider, TCPClientStream tcpClientStream) { InitializeComponent(); Children.Add(new EMVMain(cardInterfaceManger, onlineApprover, configProvider, tcpClientStream)); Children.Add(new DesFireMain(cardInterfaceManger)); }
public EMVTx(ICardInterfaceManger contactCardInterfaceManger, ICardInterfaceManger contactlessCardInterfaceManger, IConfigurationProvider configProvider, IOnlineApprover onlineApprover, TCPClientStream tcpClientStream) { InitializeComponent(); gridProgress.IsVisible = false; this.onlineApprover = onlineApprover; emvTxCtl.Init(contactCardInterfaceManger, SessionSingleton.ContactDeviceId, contactlessCardInterfaceManger, SessionSingleton.ContactlessDeviceId, QRCodeMode.ScanAndProcess, "", configProvider, onlineApprover, tcpClientStream); emvTxCtl.TxCompleted += EmvTxCtl_TxCompleted; UpdateView(ViewState.StepTxCtl); }
private static void SendACK(TCPClientStream stream) { byte chrACK = 0x06; Transmit(stream, new byte[] { chrACK }); }
public TopUpView(ICardInterfaceManger contactCardInterfaceManger, ICardInterfaceManger contactlessCardInterfaceManger, IConfigurationProvider configProvider, IOnlineApprover onlineApprover, TCPClientStream tcpClientStream) { InitializeComponent(); this.onlineApprover = onlineApprover; gridProgress.IsVisible = false; emvTxCtl.Init(contactCardInterfaceManger, SessionSingleton.ContactDeviceId, contactlessCardInterfaceManger, SessionSingleton.ContactlessDeviceId, QRCodeMode.None, SessionSingleton.Account.AccountNumberId, configProvider, onlineApprover, tcpClientStream); emvTxCtl.TxCompleted += EmvTxCtl_TxCompleted; emvTxCtl.SetASkAmountInstruction("Enter the amount below that you wish to top up with."); emvTxCtl.SetTxStartLabel("Please Tap the Visa or MasterCard card you wish to make the TopUp payment with."); UpdateView(ViewState.StepTxCtl); }
public App(ICardInterfaceManger contactCardInterfaceManger, ICardInterfaceManger contactlessCardInterfaceManger, IOnlineApprover onlineApprover, IConfigurationProvider configProvider, TCPClientStream tcpClientStream) { InitializeComponent(); MainPage = new HomeMasterDetailView(contactCardInterfaceManger, contactlessCardInterfaceManger, onlineApprover, configProvider, tcpClientStream); }
public TransactView(FlowType flowType, ICardInterfaceManger contactCardInterfaceManger, ICardInterfaceManger contactlessCardInterfaceManger, IConfigurationProvider configProvider, IOnlineApprover onlineApprover, TCPClientStream tcpClientStream) { InitializeComponent(); this.onlineApprover = onlineApprover; this.flowType = flowType; QRCodeMode mode = QRCodeMode.None; switch (flowType) { case FlowType.SendMoneyFromCardToApp: mode = QRCodeMode.PresentAndPoll; emvTxCtl.SetHeaderInstruction("Send money from their card to your account"); emvTxCtl.SetTxStartLabel("Send money from their card to your account"); this.Title = "Receive Money"; break; case FlowType.SendMoneyFromAppToCard: mode = QRCodeMode.ScanAndProcess; emvTxCtl.SetHeaderInstruction("Send money from your account to their card"); emvTxCtl.SetTxStartLabel("Send money from your account to their card"); this.Title = "Send Money"; break; } emvTxCtl.Init(contactCardInterfaceManger, SessionSingleton.ContactDeviceId, contactlessCardInterfaceManger, SessionSingleton.ContactlessDeviceId, mode, SessionSingleton.Account.AccountNumberId, configProvider, onlineApprover, tcpClientStream); emvTxCtl.TxCompleted += EmvTxCtl_TxCompleted; gridProgress.IsVisible = false; UpdateView(ViewState.StepTxCtl); }
public Win10CardProxy(string ip, int port) { tcpClientStream = new TCPClientStreamUWP(); this.ip = ip; this.port = port; }