示例#1
0
            /// <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_ReceivedTrackDataEvent(object varTrack1Data, object varTrack2Data, object varTrack3Data)
            {
                var swipeArgs = new CardSwipeEventArgs {
                    Track1 = varTrack1Data.ToString(), Track2 = varTrack2Data.ToString(), Track3 = varTrack3Data.ToString()
                };

                this.CardSwipeEvent(this, swipeArgs);
            }
            /// <summary>
            ///  Handles the credit card data received event.
            /// </summary>
            /// <param name="responseMessage">Event message.</param>
            private void HandleCreditCardEvent(ResponseMessage responseMessage)
            {
                // Check for invalid credit card event message.
                if (responseMessage.ResponseValues == null || responseMessage.ResponseValues.Count < 4)
                {
                    return;
                }

                if (this.CardSwipeEvent != null)
                {
                    var args = new CardSwipeEventArgs {
                        Track1 = responseMessage.ResponseValues[0], Track2 = responseMessage.ResponseValues[1], Track3 = responseMessage.ResponseValues[2]
                    };
                    this.CardSwipeEvent(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;
                }
            }