/// <summary> /// Cancels all pending operations. /// </summary> /// <returns>A task that can be awaited until operations are cancelled.</returns> public async Task CancelOperation() { await this.protocol.ResetTerminalStateAsync(); var signatureArgs = new SignatureEventArgs { IsCanceled = true }; this.SignatureEvent(null, signatureArgs); var inputValueArgs = new InputValueEventArgs { IsCanceled = true }; this.InputValueEvent(null, inputValueArgs); var creditCardArgs = new CardSwipeEventArgs { IsCanceled = true }; this.CardSwipeEvent(null, creditCardArgs); var pinDataArgs = new PinDataEventArgs { IsCanceled = true }; this.PinDataEvent(null, pinDataArgs); var buttonPressArgs = new ButtonPressEventArgs { IsCanceled = true }; this.ButtonPressEvent(null, buttonPressArgs); }
/// <summary> /// Handles signature data received. /// </summary> /// <param name="responseMessage">Event message.</param> private void HandleSignatureEvent(ResponseMessage responseMessage) { const int SignatureDataHeaderLength = 9; // Check for invalid signature event message. if (responseMessage.ResponseValues == null || responseMessage.ResponseValues.Count < 2) { return; } int length = int.Parse(responseMessage.ResponseValues[1], CultureInfo.InvariantCulture.NumberFormat); this.signatureData.AddRange(responseMessage.RawData.Skip(SignatureDataHeaderLength).Take(length)); // No more data to receive. if (string.Equals(responseMessage.ResponseValues[0], "N")) { if (this.SignatureEvent != null) { var args = new SignatureEventArgs() { SignatureData = this.ConvertSignatureToUpos(this.signatureData) }; this.SignatureEvent(this, args); } } }
private void FPE_ReceivedSigCapDataEvent(object signatureData) { string signature = string.Empty; HydraSignatureEnhanced sig = new HydraSignatureEnhanced((byte[])signatureData); signature = Convert.ToBase64String(sig.ToByteArray()); SignatureEventArgs args = new SignatureEventArgs() { SignatureData = signature }; this.SignatureEvent(this, args); }
/// <summary> /// Handles signature data started. /// </summary> /// <param name="responseMessage">Event message.</param> private void HandleSignatureStartEvent(ResponseMessage responseMessage) { this.signatureData.Clear(); // If no signature data. if (string.Equals(responseMessage.ResponseValues[0], "00000")) { if (this.SignatureEvent != null) { var args = new SignatureEventArgs() { IsCanceled = true }; this.SignatureEvent(this, args); } } }
private void InternalCancelOperation() { try { this.ClearData(); var signatureArgs = new SignatureEventArgs { IsCanceled = true }; this.SignatureEvent(null, signatureArgs); var inputValueArgs = new InputValueEventArgs { IsCanceled = true }; this.InputValueEvent(null, inputValueArgs); var creditCardArgs = new CardSwipeEventArgs { IsCanceled = true }; this.CardSwipeEvent(null, creditCardArgs); var pinDataArgs = new PinDataEventArgs { IsCanceled = true }; this.PinDataEvent(null, pinDataArgs); var buttonPressArgs = new ButtonPressEventArgs { IsCanceled = true }; this.ButtonPressEvent(null, buttonPressArgs); } catch (COMException ex) { NetTracer.Warning(ex, "L5300Terminal - FPE COM exception"); } }
private void FPE_ReceivedVariableValue(string strVariableName, string strVariableValue) { // NOTE: Can not read or set variables in this event handler. Device API does not support switch (strVariableName) { case "cnum": // This is for Credit Card Number - as we don't need value disregard result. break; case "Track1Data": this.track1 = strVariableValue; break; case "Track2Data": // Get previous event data sent and then clear them out var swipeArgs = new CardSwipeEventArgs { Track1 = this.track1, Track2 = strVariableValue, Track3 = string.Empty }; this.CardSwipeEvent(this, swipeArgs); break; case "RetailCardType": var typeArgs = new ButtonPressEventArgs(); typeArgs.ButtonName = strVariableValue; typeArgs.IsCanceled = false; this.ButtonPressEvent(this, typeArgs); break; case "CashBackAmt": case "AmountOk": var cashBackArgs = new ButtonPressEventArgs(); cashBackArgs.ButtonName = strVariableValue; cashBackArgs.IsCanceled = false; this.ButtonPressEvent(this, cashBackArgs); break; case "AdditionalSecurityInformation": this.additionalSecInfo = strVariableValue; break; case "EncryptedPIN": PinDataEventArgs pinArg = new PinDataEventArgs(); pinArg.IsCanceled = false; pinArg.EncryptedPin = strVariableValue; pinArg.AdditionalSecurity = this.additionalSecInfo; this.PinDataEvent(this, pinArg); this.additionalSecInfo = string.Empty; break; case "PinPadEntry": // PIN entry "Cancel" or "TMO" // PIN entry "Request" is set upon form entry (but no fire event) PinDataEventArgs pinPadArg = new PinDataEventArgs(); pinPadArg.IsCanceled = true; pinPadArg.EncryptedPin = string.Empty; pinPadArg.AdditionalSecurity = string.Empty; this.PinDataEvent(this, pinPadArg); break; case "sig": string signature = string.Empty; HydraSignatureEnhanced sig = new HydraSignatureEnhanced(Convert.FromBase64String(strVariableValue)); signature = Convert.ToBase64String(sig.ToByteArray()); SignatureEventArgs sigArgs = new SignatureEventArgs() { SignatureData = signature }; this.SignatureEvent(this, sigArgs); break; default: NetTracer.Information("L5300Terminal variable {0} not set to {1}", strVariableName, strVariableValue); break; } }