protected override AbstractBankResponse ParseResult(VisitableNameValueCollection visitable, IPizzaConfiguration bankConfiguration)
        {
            var bankAuthResponse = new List <BankMessageField>
            {
                new BankMessageField {
                    OrderNr = 1, FieldName = "VK_SERVICE", MaxLength = 4
                },
                new BankMessageField {
                    OrderNr = 2, FieldName = "VK_VERSION", MaxLength = 3
                },
                new BankMessageField {
                    OrderNr = 3, FieldName = "VK_DATETIME", MaxLength = 24
                },
                new BankMessageField {
                    OrderNr = 4, FieldName = "VK_SND_ID", MaxLength = 15
                },
                new BankMessageField {
                    OrderNr = 5, FieldName = "VK_REC_ID", MaxLength = 15,
                },
                new BankMessageField {
                    OrderNr = 6, FieldName = "VK_NONCE", MaxLength = 50
                },
                new BankMessageField {
                    OrderNr = 7, FieldName = "VK_USER_NAME", MaxLength = 140
                },
                new BankMessageField {
                    OrderNr = 8, FieldName = "VK_USER_ID", MaxLength = 20
                },
                new BankMessageField {
                    OrderNr = 9, FieldName = "VK_COUNTRY", MaxLength = 2
                },
                new BankMessageField {
                    OrderNr = 10, FieldName = "VK_OTHER", MaxLength = 150
                },
                new BankMessageField {
                    OrderNr = 11, FieldName = "VK_TOKEN", MaxLength = 2
                },
                new BankMessageField {
                    OrderNr = 12, FieldName = "VK_RID", MaxLength = 30
                },
                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
                },
            };

            var ipizzaAuthResponse = new IPizzaAuthResponse(bankConfiguration.BankId, bankAuthResponse);

            _bankMessageMapper.SetAuthResponseProperties(visitable, bankConfiguration, ipizzaAuthResponse);

            return(ipizzaAuthResponse);
        }
예제 #2
0
        public void SetAuthResponseProperties(VisitableNameValueCollection responseParameters, IPizzaConfiguration bankConfiguration, IPizzaAuthResponse bankAuthResponse)
        {
            List <BankMessageField> messageFields = bankAuthResponse.PostParameters.ToList();

            _basicMessageFieldFinder.MapResponseParamsToMessageFields(responseParameters, messageFields);

            VerifyResponseMac(bankConfiguration, messageFields);

            bankAuthResponse.IdCode   = _basicMessageFieldFinder.FindOrDefault("VK_USER_ID", messageFields);
            bankAuthResponse.User     = _basicMessageFieldFinder.FindOrDefault("VK_USER", messageFields);
            bankAuthResponse.Nonce    = _basicMessageFieldFinder.FindOrDefault("VK_NONCE", messageFields);
            bankAuthResponse.UserName = _basicMessageFieldFinder.FindOrDefault("VK_USER_NAME", messageFields);
            bankAuthResponse.Country  = _basicMessageFieldFinder.FindOrDefault("VK_COUNTRY", messageFields);
            bankAuthResponse.Language = _basicMessageFieldFinder.FindOrDefault("VK_LANG", messageFields);
            bankAuthResponse.Other    = _basicMessageFieldFinder.FindOrDefault("VK_OTHER", messageFields);

            // ReSharper disable once PossibleInvalidOperationException
            // Request datetime always exists for auth responses
            DateTime requestGeneratedAt = _basicMessageFieldFinder.FindOrDefaultDateTime("VK_DATETIME", bankConfiguration.DateTimeFormat, messageFields).Value;

            bankAuthResponse.RequestDateTime        = requestGeneratedAt;
            bankAuthResponse.IsRequestDateTimeValid = IsRequestDateTimeValid(requestGeneratedAt, _timeProvider.Now);

            bankAuthResponse.RequestEncoding = _basicMessageFieldFinder.FindOrDefault("VK_ENCODING", messageFields);
            bankAuthResponse.RequestId       = _basicMessageFieldFinder.FindOrDefault("VK_RID", messageFields);
            bankAuthResponse.Token           = _basicMessageFieldFinder.FindOrDefault("VK_TOKEN", messageFields);
        }