public PayService(IClient client, ApiOption option) { _client = client; _appId = option.AppId; _mchId = option.MerchantId; _secretKey = option.MerchantSecret; _path = option.CertPath; _password = option.CertPassword; }
public WeChatMessageHandler(ApiOption messageConfig, ICache cache) { _messageConfig = messageConfig; _registerMessageHandlers = new List <MessageHandlerMap>(); _messageBody = new Dictionary <MessageType, MessageRequest>(); _messageHandler = new Dictionary <MessageType, Type>(); _cache = cache; InitHandlerMap(); InitMessageRequest(); }
/// <summary> /// 创建Web接口 /// </summary> /// <param name="options">配置参数</param> /// <param name="client">HttpClient接口</param> /// <param name="cache">缓存接口</param> /// <param name="accessTokenManager">Token存储接口</param> public WeChatWeb(IOptions <ApiOption> options, IClient client, ICache cache, IAccessTokenManager accessTokenManager) { _config = options.Value; _client = client; _cache = cache; _accessTokenManager = accessTokenManager; InitializeWeChatService(); }
public async static Task <String> PostAsync(ApiOption option, params KeyValuePair <String, String>[] p) { var cts = new CancellationTokenSource(); cts.CancelAfter(TimeSpan.FromSeconds(10)); var httpClient = new HttpClient(); var requestMessage = new HttpRequestMessage(HttpMethod.Post, new Uri(GetUrl(option))); var responseMessage = await httpClient.PostAsync(new Uri(GetUrl(option)), new HttpFormUrlEncodedContent(p)); if (responseMessage.StatusCode == HttpStatusCode.Ok) { return(await responseMessage.Content.ReadAsStringAsync()); } else { return(null); } }
public async Task CleartextMessage() { var config = new ApiOption { AppId = "wxd2dc006bb81427b9", MessageEncryptModel = EncryptModel.Cleartext, Distinct = false, EncodingAesKey = "jWmYm7qr5nMoAUwZRjGtBxmz3KA1tkAj3ykkR6q2B2C" }; string input = @"<xml><ToUserName><![CDATA[oFQVa1aoCaRWMHh-y15eg32JXhmU]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>1348831860</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[888888]]></Content><MsgId>1234567890123456</MsgId></xml>"; var buffer = Encoding.UTF8.GetBytes(input); Stream stream = new MemoryStream(buffer); var result = await new WeChatMessageHandler(config, new MockCache()) .AddHandlerService(new MockTextMessageHandler()) .SetStreamMessage(stream) .ExecutedAsync(); Assert.True(string.IsNullOrEmpty(result) == false, "string.IsNullOrEmpty(result) == false"); _outputHelper.WriteLine(result); }
public static string RequestServer(ApiOption apiOption, Dictionary <string, object> paras, RequestType requestType = RequestType.Get) { string url = AppAttr.MDApiUrl + ApiUrlArr[(int)apiOption]; try { string paraStr = string.Empty; if (paras != null && paras.Count > 0) { foreach (string key in paras.Keys) { if (string.IsNullOrEmpty(paraStr)) { paraStr = key + "=" + paras[key]; } else { paraStr += "&" + key + "=" + paras[key]; } } paraStr += "&format=json"; } else { paraStr = "format=json"; } HttpWebRequest request; HttpWebResponse response; string strResult = string.Empty; if (requestType == RequestType.Get) { url += "?" + paraStr; request = (System.Net.HttpWebRequest)WebRequest.Create(url); request.Timeout = 10000; request.Method = "GET"; request.ContentType = "application/x-www-form-urlencoded"; response = (HttpWebResponse)request.GetResponse(); System.Text.Encoding encode = Encoding.ASCII; if (response.CharacterSet.Contains("utf-8")) { encode = Encoding.UTF8; } StreamReader reader = new StreamReader(response.GetResponseStream(), encode); strResult = reader.ReadToEnd(); reader.Close(); response.Close(); } else { byte[] bData = Encoding.UTF8.GetBytes(paraStr.ToString()); request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.Timeout = 5000; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = bData.Length; System.IO.Stream smWrite = request.GetRequestStream(); smWrite.Write(bData, 0, bData.Length); smWrite.Close(); response = (HttpWebResponse)request.GetResponse(); System.IO.Stream dataStream = response.GetResponseStream(); System.IO.StreamReader reader = new System.IO.StreamReader(dataStream, Encoding.UTF8); strResult = reader.ReadToEnd(); reader.Close(); dataStream.Close(); response.Close(); } return(strResult); } catch { } return(null); }
public static T RequestServer <T>(ApiOption apiOption, Dictionary <string, object> paras, RequestType requestType = RequestType.Post) { string urlPath = GetEnumDesc <ApiOption>(apiOption); string url = AppConfig.ApiUrl + urlPath; string paraStr = string.Empty; string userID = string.Empty; if (paras.ContainsKey("userID")) { userID = paras["userID"].ToString(); } else { userID = "BC6802E9-285C-471C-8172-3867C87803E2"; paras.Add("userID", userID); } if (paras != null && paras.Count > 0) { paraStr += CreateParameterStr(paras); } //签名认证 string signature = Signature.GetSignature(AppConfig.AppKey, AppConfig.AppSecret, userID); paraStr += "signature=" + signature; string strResult = string.Empty; try { if (requestType == RequestType.Get) { url += "?" + paraStr; Uri uri = new Uri(url); HttpWebRequest httpWebRequest = WebRequest.Create(uri) as HttpWebRequest; httpWebRequest.Method = "GET"; httpWebRequest.KeepAlive = false; httpWebRequest.AllowAutoRedirect = true; httpWebRequest.ContentType = "application/x-www-form-urlencoded"; httpWebRequest.UserAgent = "Ocean/NET-SDKClient"; HttpWebResponse response = httpWebRequest.GetResponse() as HttpWebResponse; Stream responseStream = response.GetResponseStream(); System.Text.Encoding encode = Encoding.UTF8; StreamReader reader = new StreamReader(response.GetResponseStream(), encode); strResult = reader.ReadToEnd(); reader.Close(); response.Close(); } else { byte[] postData = Encoding.UTF8.GetBytes(paraStr); Uri uri = new Uri(url); HttpWebRequest httpWebRequest = WebRequest.Create(uri) as HttpWebRequest; httpWebRequest.Method = "POST"; httpWebRequest.KeepAlive = false; httpWebRequest.AllowAutoRedirect = true; httpWebRequest.ContentType = "application/x-www-form-urlencoded"; httpWebRequest.UserAgent = "Ocean/NET-SDKClient"; httpWebRequest.ContentLength = postData.Length; System.IO.Stream outputStream = httpWebRequest.GetRequestStream(); outputStream.Write(postData, 0, postData.Length); outputStream.Close(); HttpWebResponse response = httpWebRequest.GetResponse() as HttpWebResponse; Stream responseStream = response.GetResponseStream(); System.Text.Encoding encode = Encoding.UTF8; StreamReader reader = new StreamReader(response.GetResponseStream(), encode); strResult = reader.ReadToEnd(); reader.Close(); response.Close(); } } catch (System.Net.WebException webException) { HttpWebResponse response = webException.Response as HttpWebResponse; Stream responseStream = response.GetResponseStream(); StreamReader reader = new StreamReader(responseStream, Encoding.UTF8); strResult = reader.ReadToEnd(); reader.Close(); response.Close(); } return(JsonConvert.DeserializeObject <T>(strResult)); }
public static string RequestServer(ApiOption apiOption, Dictionary <string, object> paras, RequestType requestType = RequestType.Get) { string urlPath = GetEnumDesc <ApiOption>(apiOption); string url = AppConfig.WeiXinApiUrl + urlPath; string paraStr = string.Empty; if (paras != null && paras.Count > 0) { foreach (var key in paras.Keys) { paraStr += key + "=" + paras[key] + "&"; } } string strResult = string.Empty; try { if (requestType == RequestType.Get) { url += "?" + paraStr; Uri uri = new Uri(url); HttpWebRequest httpWebRequest = WebRequest.Create(uri) as HttpWebRequest; httpWebRequest.Method = "GET"; httpWebRequest.KeepAlive = false; httpWebRequest.AllowAutoRedirect = true; httpWebRequest.ContentType = "application/x-www-form-urlencoded"; httpWebRequest.UserAgent = "Ocean/NET-SDKClient"; HttpWebResponse response = httpWebRequest.GetResponse() as HttpWebResponse; Stream responseStream = response.GetResponseStream(); System.Text.Encoding encode = Encoding.UTF8; StreamReader reader = new StreamReader(response.GetResponseStream(), encode); strResult = reader.ReadToEnd(); reader.Close(); response.Close(); } else { byte[] postData = Encoding.UTF8.GetBytes(paraStr); Uri uri = new Uri(url); HttpWebRequest httpWebRequest = WebRequest.Create(uri) as HttpWebRequest; httpWebRequest.Method = "POST"; httpWebRequest.KeepAlive = false; httpWebRequest.AllowAutoRedirect = true; httpWebRequest.ContentType = "application/x-www-form-urlencoded"; httpWebRequest.UserAgent = "Ocean/NET-SDKClient"; httpWebRequest.ContentLength = postData.Length; System.IO.Stream outputStream = httpWebRequest.GetRequestStream(); outputStream.Write(postData, 0, postData.Length); outputStream.Close(); HttpWebResponse response = httpWebRequest.GetResponse() as HttpWebResponse; Stream responseStream = response.GetResponseStream(); System.Text.Encoding encode = Encoding.UTF8; StreamReader reader = new StreamReader(response.GetResponseStream(), encode); strResult = reader.ReadToEnd(); reader.Close(); response.Close(); } } catch (System.Net.WebException webException) { HttpWebResponse response = webException.Response as HttpWebResponse; Stream responseStream = response.GetResponseStream(); StreamReader reader = new StreamReader(responseStream, Encoding.UTF8); strResult = reader.ReadToEnd(); reader.Close(); response.Close(); } return(strResult); }
public static string RequestServer(ApiOption apiOption, Dictionary<string, object> paras,RequestType requestType=RequestType.Get) { string url = MDApiUrl+ApiUrlArr[(int)apiOption]; try { string paraStr = string.Empty; if (paras != null && paras.Count > 0) { foreach (string key in paras.Keys) { if (string.IsNullOrEmpty(paraStr)) paraStr = key + "=" + paras[key]; else paraStr += "&" + key + "=" + paras[key]; } paraStr += "&format=json"; } else paraStr = "format=json"; HttpWebRequest request; HttpWebResponse response; string strResult = string.Empty; if (requestType == RequestType.Get) { url += "?" + paraStr; request = (System.Net.HttpWebRequest)WebRequest.Create(url); request.Timeout = 10000; request.Method = "GET"; request.ContentType = "application/x-www-form-urlencoded"; response = (HttpWebResponse)request.GetResponse(); System.Text.Encoding encode = Encoding.ASCII; if (response.CharacterSet.Contains("utf-8")) encode = Encoding.UTF8; StreamReader reader = new StreamReader(response.GetResponseStream(), encode); strResult = reader.ReadToEnd(); reader.Close(); response.Close(); } else { byte[] bData = Encoding.UTF8.GetBytes(paraStr.ToString()); request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.Timeout = 5000; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = bData.Length; System.IO.Stream smWrite = request.GetRequestStream(); smWrite.Write(bData, 0, bData.Length); smWrite.Close(); response = (HttpWebResponse)request.GetResponse(); System.IO.Stream dataStream = response.GetResponseStream(); System.IO.StreamReader reader = new System.IO.StreamReader(dataStream, Encoding.UTF8); strResult = reader.ReadToEnd(); reader.Close(); dataStream.Close(); response.Close(); } return strResult; } catch { } return null; }
public IOption <TResult> MapResult <TResult>(IBadDataError error) { return(ApiOption <TResult> .Left(new BadRequestObjectResult(error))); }
public IOption <TResult> MapResult <TResult>(INotFoundError error) { return(ApiOption <TResult> .Left(new NotFoundObjectResult(error))); }
public static string RequestServer(ApiOption apiOption, Dictionary <string, object> paras, RequestType requestType = RequestType.Get) { string urlPath = "param2/1/cn.alibaba.open/" + GetEnumDesc <ApiOption>(apiOption) + "/" + AppConfig.AppKey; string url = AppConfig.AlibabaApiUrl + "/openapi/" + urlPath; //string url = AppConfig.AlibabaApiUrl + "/api/" + urlPath; string paraStr = string.Empty; if (apiOption == ApiOption.getToken) { urlPath = "/openapi/http/1/system.oauth2/getToken/" + AppConfig.AppKey; url = AppConfig.AlibabaApiUrl + urlPath; } else { string signature = sign(urlPath, paras); paraStr = "_aop_signature=" + signature; } if (paras != null && paras.Count > 0) { paraStr += "&" + CreateParameterStr(paras); } string strResult = string.Empty; try { if (requestType == RequestType.Get) { url += "?" + paraStr; Uri uri = new Uri(url); HttpWebRequest httpWebRequest = WebRequest.Create(uri) as HttpWebRequest; httpWebRequest.Method = "GET"; httpWebRequest.KeepAlive = false; httpWebRequest.AllowAutoRedirect = true; httpWebRequest.ContentType = "application/x-www-form-urlencoded"; httpWebRequest.UserAgent = "Ocean/NET-SDKClient"; HttpWebResponse response = httpWebRequest.GetResponse() as HttpWebResponse; Stream responseStream = response.GetResponseStream(); System.Text.Encoding encode = Encoding.UTF8; StreamReader reader = new StreamReader(response.GetResponseStream(), encode); strResult = reader.ReadToEnd(); reader.Close(); response.Close(); } else { byte[] postData = Encoding.UTF8.GetBytes(paraStr); Uri uri = new Uri(url); HttpWebRequest httpWebRequest = WebRequest.Create(uri) as HttpWebRequest; httpWebRequest.Method = "POST"; httpWebRequest.KeepAlive = false; httpWebRequest.AllowAutoRedirect = true; httpWebRequest.ContentType = "application/x-www-form-urlencoded"; httpWebRequest.UserAgent = "Ocean/NET-SDKClient"; httpWebRequest.ContentLength = postData.Length; System.IO.Stream outputStream = httpWebRequest.GetRequestStream(); outputStream.Write(postData, 0, postData.Length); outputStream.Close(); HttpWebResponse response = httpWebRequest.GetResponse() as HttpWebResponse; Stream responseStream = response.GetResponseStream(); System.Text.Encoding encode = Encoding.UTF8; StreamReader reader = new StreamReader(response.GetResponseStream(), encode); strResult = reader.ReadToEnd(); reader.Close(); response.Close(); } } catch (System.Net.WebException webException) { HttpWebResponse response = webException.Response as HttpWebResponse; Stream responseStream = response.GetResponseStream(); StreamReader reader = new StreamReader(responseStream, Encoding.UTF8); strResult = reader.ReadToEnd(); reader.Close(); response.Close(); } return(strResult); }
/// <summary> /// 构造 /// </summary> /// <param name="option"></param> public ApiOptionAttribute(ApiOption option) { Option = option; }
public static string GetUrl(ApiOption option) { return($"{Domain}{dic[option]}"); }