public void SetPaymentResponseProperties(VisitableNameValueCollection responseParameters,
                                                 IPizzaConfiguration bankConfiguration,
                                                 IPizzaPaymentResponse bankPaymentResponse)
        {
            List <BankMessageField> messageFields = bankPaymentResponse.PostParameters.ToList();

            _basicMessageFieldFinder.MapResponseParamsToMessageFields(responseParameters, messageFields);

            VerifyResponseMac(bankConfiguration, messageFields);
            bankPaymentResponse.IsAutomaticResponse = _basicMessageFieldFinder.FindOrDefault("VK_AUTO", messageFields) == "Y";

            bankPaymentResponse.Amount = _basicMessageFieldFinder.FindOrDefaultDecimal("VK_AMOUNT", bankConfiguration.DecimalFormat, messageFields);
            bankPaymentResponse.RequestStartDateTime = _basicMessageFieldFinder.FindOrDefaultDateTime("VK_T_DATETIME", bankConfiguration.DateTimeFormat, messageFields);

            string serviceCode = _basicMessageFieldFinder.FindOrDefault("VK_SERVICE", messageFields);

            bankPaymentResponse.IsPaymentSuccessful = serviceCode == "1111";

            bankPaymentResponse.Stamp                       = _basicMessageFieldFinder.FindOrDefault("VK_STAMP", messageFields);
            bankPaymentResponse.Currency                    = _basicMessageFieldFinder.FindOrDefault("VK_CURR", messageFields);
            bankPaymentResponse.Language                    = _basicMessageFieldFinder.FindOrDefault("VK_LANG", messageFields);
            bankPaymentResponse.PaymentMessage              = _basicMessageFieldFinder.FindOrDefault("VK_MSG", messageFields);
            bankPaymentResponse.PaymentOrderNumber          = _basicMessageFieldFinder.FindOrDefault("VK_T_NO", messageFields);
            bankPaymentResponse.PaymentOrderReferenceNumber = _basicMessageFieldFinder.FindOrDefault("VK_REF", messageFields);
            bankPaymentResponse.PaymentReceiverAccount      = _basicMessageFieldFinder.FindOrDefault("VK_REC_ACC", messageFields);
            bankPaymentResponse.PaymentReceiverName         = _basicMessageFieldFinder.FindOrDefault("VK_REC_NAME", messageFields);
            bankPaymentResponse.PaymentSenderAccount        = _basicMessageFieldFinder.FindOrDefault("VK_SND_ACC", messageFields);
            bankPaymentResponse.PaymentSenderName           = _basicMessageFieldFinder.FindOrDefault("VK_SND_NAME", messageFields);
            bankPaymentResponse.RequestEncoding             = _basicMessageFieldFinder.FindOrDefault("VK_ENCODING", messageFields);
        }
        protected override AbstractBankResponse ParseResult(VisitableNameValueCollection visitable, IPizzaConfiguration bankConfiguration)
        {
            var bankPaymentResponse = new List <BankMessageField>
            {
                new BankMessageField {
                    OrderNr = 1, FieldName = "VK_SERVICE", MaxLength = 4, Value = "1911"
                },
                new BankMessageField {
                    OrderNr = 2, FieldName = "VK_VERSION", MaxLength = 3, Value = "008"
                },
                new BankMessageField {
                    OrderNr = 3, FieldName = "VK_SND_ID", MaxLength = 15
                },
                new BankMessageField {
                    OrderNr = 4, FieldName = "VK_REC_ID", MaxLength = 15,
                },
                new BankMessageField {
                    OrderNr = 5, FieldName = "VK_STAMP", MaxLength = 20
                },
                new BankMessageField {
                    OrderNr = 6, FieldName = "VK_REF", MaxLength = 35
                },
                new BankMessageField {
                    OrderNr = 7, FieldName = "VK_MSG", MaxLength = 95
                },
                new BankMessageField {
                    OrderNr = null, FieldName = "VK_MAC", MaxLength = 700
                },
                new BankMessageField {
                    OrderNr = null, FieldName = "VK_ENCODING", MaxLength = 12
                },
                new BankMessageField {
                    OrderNr = null, FieldName = "VK_LANG", MaxLength = 3
                },
                new BankMessageField {
                    OrderNr = null, FieldName = "VK_AUTO", MaxLength = 1
                },
            };

            var ipizzaPaymentResponse = new IPizzaPaymentResponse(bankConfiguration.BankId, bankPaymentResponse);

            _bankMessageMapper.SetPaymentResponseProperties(visitable, bankConfiguration, ipizzaPaymentResponse);

            return(ipizzaPaymentResponse);
        }