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);
        }
Exemple #2
0
        public OperationResult(HttpRequestResult httpResult)
        {
            if (httpResult == null)
            {
                throw new ArgumentNullException(nameof(httpResult));
            }

            RawResponse  = httpResult.RawResponse;
            Exception    = httpResult.Exception;
            RequestUrl   = httpResult.RequestUrl;
            RequestQuery = httpResult.RequestQuery;

            if (Exception != null)
            {
                ErrorMessage = Exception.Message;
            }

            if (RawResponse != null)
            {
                ParseRawResponseKeyValues();
            }
        }
 public ExecuteCreditTransactionResult(HttpRequestResult httpResult)
     : base(httpResult)
 {
 }
Exemple #4
0
 public ReverseTransactionResult(HttpRequestResult httpResult)
     : base(httpResult)
 {
 }
Exemple #5
0
 public RefundTransactionResult(HttpRequestResult httpResult)
     : base(httpResult)
 {
 }
 public CheckTransactionResult(HttpRequestResult httpResult)
     : base(httpResult)
 {
 }
Exemple #7
0
 public ExecuteReoccurringTransactionResult(HttpRequestResult httpResult)
     : base(httpResult)
 {
 }
Exemple #8
0
 public ExecutePreAuthorizationResult(HttpRequestResult httpResult)
     : base(httpResult)
 {
 }
 public RegisterTransactionResult(HttpRequestResult httpResult)
     : base(httpResult)
 {
 }