/// <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); }
private void FPE_ReceivedPINBlockEvent(string strPINBlock, string strKSN) { PinDataEventArgs pinPadArg = new PinDataEventArgs(); pinPadArg.IsCanceled = false; pinPadArg.EncryptedPin = strPINBlock; pinPadArg.AdditionalSecurity = strKSN; this.PinDataEvent(this, pinPadArg); }
private void FPE_ReceivedErrorResponseEvent(FPEINTERFACELib.tagERRORRESPONSECODES strErrorResponseCode, string strErrorResponseText) { RetailLogger.Log.HardwareStationHydraPaymentDeviceError(strErrorResponseCode.ToString(), strErrorResponseText); if (strErrorResponseCode == FPEINTERFACELib.tagERRORRESPONSECODES.PIN_ENTRY_TIMEDOUT) { PinDataEventArgs pinArg = new PinDataEventArgs(); pinArg.IsCanceled = true; pinArg.EncryptedPin = string.Empty; pinArg.AdditionalSecurity = string.Empty; this.PinDataEvent(this, pinArg); } }
/// <summary> /// Handles the credit card data received event. /// </summary> /// <param name="responseMessage">Event message.</param> private void HandleEnterPinEvent(ResponseMessage responseMessage) { if (this.PinDataEvent != null) { var args = new PinDataEventArgs(); // If we didn't receive the expected number of arguments the data was canceled. if (responseMessage.ResponseValues.Count == 3) { args.AdditionalSecurity = responseMessage.ResponseValues[1]; args.EncryptedPin = responseMessage.ResponseValues[2]; } else { args.IsCanceled = true; } this.PinDataEvent(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; } }