public void OnFailure(TransactionFailureResult result)
        {
            // Get information about the rejected transaction
            TransactionType  transType        = result.TransactionType;
            TransactionId    ecrTransId       = result.EcrTransactionId;
            TransactionId    terminalTransId  = result.TerminalTransactionId;
            FailureErrorType errorType        = result.Error;
            string           additionalReason = result.AdditionalReason;
            List <Receipt>   receipts         = result.Receipts;

            foreach (Receipt receipt in receipts)
            {
                DocumentType   documentType      = receipt.DocumentType;
                bool?          signatureRequired = receipt.SignatureRequired;
                ReceiptContent receiptContent    = receipt.Content;
                if (receiptContent.Format == ReceiptFormatType.Text)
                {
                    ContentText contentText      = receiptContent.Text;
                    string      plainTextReceipt = contentText.PlainText;
                }
            }
            List <Token> tokens = result.Tokens;

            foreach (Token token in tokens)
            {
                TokenType           tokenType           = token.Type;
                string              tokenValue          = token.Value;
                DateTime?           tokenExpiry         = token.Expiry;
                string              tokenSchemeId       = token.SchemeId;
                EnrolmentStatusType?enrolmentStatusType = token.EnrolmentStatus;
            }
            // TokenResponses give info about the result of token lookups and
            // provides an alternative way to get the token when the lookup was successful.
            List <TokenResponse> tokenResponses = result.TokenResponses;

            foreach (TokenResponse tokenResponse in tokenResponses)
            {
                TokenRequest tokenRequest  = tokenResponse.TokenRequest;
                string       tokenSchemeId = tokenRequest.SchemeId;
                if (tokenResponse.Result == TokenResultType.Success)
                {
                    Token token = tokenResponse.Token;
                }
                else
                {
                    TokenFailureErrorType?tokenErrorType = tokenResponse.Error;
                    string tokenErrorDescription         = tokenResponse.AdditionalReason;
                }
            }
        }
        public void OnSuccess(TransactionResult result)
        {
            // Get information about the approved transaction
            TransactionType       transType       = result.TransactionType;
            decimal               transAmount     = result.AuthorizedAmount;
            decimal               cashbackAmount  = result.CashbackAmount;
            decimal               tipAmount       = result.TipAmount;
            TransactionId         ecrTransId      = result.EcrTransactionId;
            TransactionId         terminalTransId = result.TerminalTransactionId;
            string                approvalCode    = result.ApprovalCode;
            PaymentInstrumentData instrumentData  = result.PaymentInstrumentData;
            PaymentInstrumentType?instrumentType  = instrumentData?.PaymentInstrumentType;

            if (instrumentType == PaymentInstrumentType.Card)
            {
                CardData      cardData     = instrumentData.CardData;
                EntryModeType entryMode    = cardData.EntryMode;
                string        paymentBrand = cardData.PaymentBrand;
                string        maskedPan    = cardData.MaskedPan;
            }
            else if (instrumentType == PaymentInstrumentType.AlternativePayment)
            {
                AlternativePaymentData alternativePaymentData = instrumentData.AlternativePaymentData;
                string        alternativePaymentBrand         = alternativePaymentData.AlternativePaymentBrand;
                EntryModeType entryMode             = alternativePaymentData.EntryMode;
                TransactionId providerTransactionId = alternativePaymentData.ProviderTransactionId;
            }
            List <Receipt> receipts = result.Receipts;

            foreach (Receipt receipt in receipts)
            {
                DocumentType   documentType      = receipt.DocumentType;
                bool?          signatureRequired = receipt.SignatureRequired;
                ReceiptContent receiptContent    = receipt.Content;
                if (receiptContent.Format == ReceiptFormatType.Text)
                {
                    ContentText contentText      = receiptContent.Text;
                    string      plainTextReceipt = contentText.PlainText;
                }
            }
            List <Token> tokens = result.Tokens;

            foreach (Token token in tokens)
            {
                TokenType           tokenType           = token.Type;
                string              tokenValue          = token.Value;
                DateTime?           tokenExpiry         = token.Expiry;
                string              tokenSchemeId       = token.SchemeId;
                EnrolmentStatusType?enrolmentStatusType = token.EnrolmentStatus;
            }
            // TokenResponses give info about the result of token lookups and
            // provides an alternative way to get the token when the lookup was successful.
            List <TokenResponse> tokenResponses = result.TokenResponses;

            foreach (TokenResponse tokenResponse in tokenResponses)
            {
                TokenRequest tokenRequest  = tokenResponse.TokenRequest;
                string       tokenSchemeId = tokenRequest.SchemeId;
                if (tokenResponse.Result == TokenResultType.Success)
                {
                    Token token = tokenResponse.Token;
                }
                else
                {
                    TokenFailureErrorType?tokenErrorType = tokenResponse.Error;
                    string tokenErrorDescription         = tokenResponse.AdditionalReason;
                }
            }
        }