public static string Request(string urlSuffix, string method, string type, Object args = null) { HttpWebRequest Request; string Url = string.Concat(TwoCheckoutConfig.BaseUrl, urlSuffix); string Params = null; string Result = null; string ContentType = null; HttpWebResponse Response = null; NetworkCredential Credential = null; if (type == "admin") { ContentType = (method == "POST") ? "application/x-www-form-urlencoded" : "*/*"; Params = (args != null) ? TwoCheckoutUtil.SerializeObjectToQueryString(args) : null; Url = (method == "GET") ? string.Concat(Url, "?", Params) : Url; Credential = new NetworkCredential(TwoCheckoutConfig.ApiUsername, TwoCheckoutConfig.ApiPassword); } else { ContentType = "application/json"; Params = TwoCheckoutUtil.ConvertToJson(args); } try { Request = WebRequest.Create(Url.ToString()) as HttpWebRequest; ServicePointManager.ServerCertificateValidationCallback += delegate { return(true); }; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11; Request.Credentials = Credential; Request.Method = method; Request.ContentType = ContentType; Request.Accept = "application/json"; Request.UserAgent = "2Checkout .NET/" + TwoCheckoutConfig.Version; if (method == "POST" && Params != "") { byte[] byteData = UTF8Encoding.UTF8.GetBytes(Params); Request.ContentLength = byteData.Length; using (Stream postStream = Request.GetRequestStream()) { postStream.Write(byteData, 0, byteData.Length); } } using (Response = Request.GetResponse() as HttpWebResponse) { StreamReader reader = new StreamReader(Response.GetResponseStream()); Result = reader.ReadToEnd(); return(Result); } } catch (WebException wex) { string ResultCode = null; if (wex.Response != null) { using (HttpWebResponse errorResponse = (HttpWebResponse)wex.Response) { StreamReader reader = new StreamReader(errorResponse.GetResponseStream()); Result = reader.ReadToEnd(); JObject RawError = JObject.Parse(Result); if (RawError["errors"] != null) { Result = RawError["errors"][0]["message"].ToString(); ResultCode = RawError["errors"][0]["code"].ToString(); } else if (RawError["exception"] != null) { Result = RawError["exception"]["errorMsg"].ToString(); ResultCode = RawError["exception"]["errorCode"].ToString(); } } } else { Result = wex.Message; ResultCode = "500"; } throw new TwoCheckoutException(Result) { Code = ResultCode }; } finally { if (Response != null) { Response.Close(); } } }