private async Task <HttpRequestResult> MakePostRequestAsync(IDictionary <string, string> requestParameters, TbcBankEcommerceClientOptions options)
        {
            if (requestParameters is null)
            {
                throw new ArgumentNullException(nameof(requestParameters));
            }

            StringBuilder queryBuilder = new StringBuilder();

            foreach (var requestParameter in requestParameters)
            {
                if (requestParameter.Value == null)
                {
                    continue;
                }

                queryBuilder.Append($"{requestParameter.Key}={Uri.EscapeDataString(requestParameter.Value)}&");
            }

            if (queryBuilder.Length > 1)
            {
                queryBuilder.Remove(queryBuilder.Length - 1, 1);
            }


            HttpRequestResult result = new HttpRequestResult()
            {
                RequestUrl   = ServiceUrlBuilderHelper.GetMerchantHandlerUrl(options.Environment),
                RequestQuery = queryBuilder.ToString()
            };

            try
            {
                using var handler = GetHttpClientHandler(options);

                handler.ServerCertificateCustomValidationCallback = (message, certificate, chain, sslPolicyErrors) => true;

                using var certificate = CreateCertificate(options);

                handler.ClientCertificates.Add(certificate);

                using var client = new HttpClient(handler);

                using var content = new StringContent(result.RequestQuery, Encoding.UTF8, "application/x-www-form-urlencoded");

                var responseMessage = await client.PostAsync(result.RequestUrl, content);

                result.HttpStatsCode = responseMessage.StatusCode;
                result.Success       = responseMessage.IsSuccessStatusCode;
                result.RawResponse   = await responseMessage.Content.ReadAsStringAsync();
            }
            catch (Exception ex)
            {
                result.Success   = false;
                result.Exception = ex;
            }

            return(result);
        }
        /// <summary>
        /// Gets redirect URL where the client should be navigated to enter card details
        /// </summary>
        /// <param name="transactionId"></param>
        /// <returns></returns>
        public string GetClientRedirectUrl(string transactionId)
        {
            var options = GetActiveOptions();

            var url = ServiceUrlBuilderHelper.GetClientHandlerUrl(options.Environment);

            return($"{url}?trans_id={System.Web.HttpUtility.UrlEncode(transactionId)}");
        }