public Dictionary <string, string> GetPostParametersFromDlRequest(DirectoryLookupRequest request)
        {
            var config = this.Client.Config;

            var postParameters = new Dictionary <string, string>
            {
                { Fields.CurrencyCode, request.CurrencyCode },
                { Fields.MerchantReference, request.MerchantReference },
                { Fields.SessionValidity, request.SessionValidity },
                { Fields.CountryCode, request.CountryCode }
            };

            if (!string.IsNullOrEmpty(request.MerchantAccount))
            {
                postParameters.Add(Fields.MerchantAccount, request.MerchantAccount);
            }
            else
            {
                postParameters.Add(Fields.MerchantAccount, config.MerchantAccount);
            }
            postParameters.Add(Fields.PaymentAmount, request.PaymentAmount);

            if (!string.IsNullOrEmpty(request.SkinCode))
            {
                postParameters.Add(Fields.SkinCode, request.SkinCode);
            }
            else
            {
                postParameters.Add(Fields.SkinCode, config.SkinCode);
            }



            var hmacValidator = new HmacValidator();

            var dataToSign = hmacValidator.BuildSigningString(postParameters);

            string hmacKey;

            if (!string.IsNullOrEmpty(request.HmacKey))
            {
                hmacKey = request.HmacKey;
            }
            else
            {
                hmacKey = config.HmacKey;
            }

            var merchantSig = hmacValidator.CalculateHmac(dataToSign, hmacKey);

            postParameters.Add(Fields.MerchantSig, merchantSig);

            return(postParameters);
        }
        private DirectoryLookupRequest CreateDirectoryLookupRequest()
        {
            DirectoryLookupRequest directoryLookupRequest = new DirectoryLookupRequest()
            {
                CountryCode       = "NL",
                MerchantReference = "test:\\'test",
                PaymentAmount     = "1000",
                CurrencyCode      = "EUR"
            };

            return(directoryLookupRequest);
        }
        public List <PaymentMethod> GetPaymentMethods(DirectoryLookupRequest request)
        {
            try
            {
                var postParameters        = GetPostParametersFromDlRequest(request);
                var jsonResult            = DirectoryLookup(postParameters);
                var directoryLookupResult = Util.JsonOperation.Deserialize <DirectoryLookupResult>(jsonResult);

                return(directoryLookupResult.PaymentMethods);
            }
            catch (Exception exception)
            {
                throw exception;
            }
        }