private async void AsyncFEPBillPost(FEPBillPostRequestInfo contractInfo, ConfigData configData) { FEPBillPostResponseResult result = new FEPBillPostResponseResult() { Data = new FEPBillPostResponseData() }; var parameters = new NameValueCollection(); parameters.Add("method", "Invoice.FEPBillPost"); parameters.Add("data", JsonSerializer.Serialize(contractInfo)); parameters.Add("format", "json"); parameters.Add("version", "1.0"); parameters.Add("nonce", new Random().NextDouble().ToString()); parameters.Add("appid", configData.AppId); parameters.Add("timestamp", DateTime.Now.ToString("yyyyMMddhhmmss")); string sign = SignatureUtil.Build(parameters, configData.SecretKey); StringBuilder httpContentStringBuilder = new StringBuilder(); foreach (string key in parameters.AllKeys) { httpContentStringBuilder.AppendFormat("&{0}={1}", key, SignatureUtil.UrlEncode(parameters[key])); } httpContentStringBuilder.AppendFormat("&{0}={1}", "sign", sign); var content = httpContentStringBuilder.ToString().TrimStart('&'); var httpContent = new StringContent(content); httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); var httpClient = new HttpClient(); try { var task = await httpClient.PostAsync(new Uri(configData.OpenApiUrl), httpContent); var responseData = await task.Content.ReadAsStringAsync(); result = JsonSerializer.Deserialize <FEPBillPostResponseResult>(responseData); if (result.Data == null) { result.Data = new FEPBillPostResponseData(); } } catch (AggregateException aex) { result.Code = -10; var egex = (AggregateException)aex; Exception innerExp = null; if (egex.InnerExceptions != null && egex.InnerExceptions.Count > 0) { innerExp = egex.InnerExceptions[0]; } if (innerExp == null) { result.Desc = egex.Message; } else { Exception tempExp; GetInnerException(innerExp, out tempExp); if (tempExp != null) { result.Desc = tempExp.Message; } else { result.Desc = innerExp.Message; } } } catch (Exception ex) { result.Code = -10; result.Desc = ex.Message; } OnPostComplate(this, result); }
private void ImportOrder(SOCreateRequestInfo contractInfo, ConfigData configData) { OrderCreateResponseResult result = new OrderCreateResponseResult() { Data = new OrderCreateResponseData() { MerchantOrderID = contractInfo.MerchantOrderID } }; var parameters = new NameValueCollection(); parameters.Add("method", "Order.SOCreate"); parameters.Add("data", JsonSerializer.Serialize(contractInfo)); parameters.Add("format", "json"); parameters.Add("version", "1.0"); parameters.Add("nonce", new Random().NextDouble().ToString()); parameters.Add("appid", configData.AppId); parameters.Add("timestamp", DateTime.Now.ToString("yyyyMMddhhmmss")); string sign = SignatureUtil.Build(parameters, configData.SecretKey); StringBuilder httpContentStringBuilder = new StringBuilder(); foreach (string key in parameters.AllKeys) { httpContentStringBuilder.AppendFormat("&{0}={1}", key, SignatureUtil.UrlEncode(parameters[key])); } httpContentStringBuilder.AppendFormat("&{0}={1}", "sign", sign); var content = httpContentStringBuilder.ToString().TrimStart('&'); WebRequest request = WebRequest.Create(configData.OpenApiUrl); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; using (Stream requestStream = request.GetRequestStream()) { byte[] postData = Encoding.UTF8.GetBytes(content); requestStream.Write(postData, 0, postData.Length); } try { string responseData = ""; WebResponse response = request.GetResponse(); using (Stream responseStream = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(responseStream)) { responseData = reader.ReadToEnd(); } } result = JsonSerializer.Deserialize <OrderCreateResponseResult>(responseData); if (result.Data == null) { result.Data = new OrderCreateResponseData() { MerchantOrderID = contractInfo.MerchantOrderID }; } } catch (AggregateException aex) { result.Code = -10; var egex = (AggregateException)aex; Exception innerExp = null; if (egex.InnerExceptions != null && egex.InnerExceptions.Count > 0) { innerExp = egex.InnerExceptions[0]; } if (innerExp == null) { result.Desc = egex.Message; } else { Exception tempExp; GetInnerException(innerExp, out tempExp); if (tempExp != null) { result.Desc = tempExp.Message; } else { result.Desc = innerExp.Message; } } } catch (Exception ex) { result.Code = -10; result.Desc = ex.Message; } OnOrderImportComplate(this, result); }