public PayService(IClient client, ApiOption option)
 {
     _client    = client;
     _appId     = option.AppId;
     _mchId     = option.MerchantId;
     _secretKey = option.MerchantSecret;
     _path      = option.CertPath;
     _password  = option.CertPassword;
 }
Exemple #2
0
 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();
 }
Exemple #3
0
 /// <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();
 }
Exemple #4
0
        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);
            }
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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));
        }
Exemple #8
0
        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);
        }
Exemple #9
0
        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)));
 }
Exemple #12
0
        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;
 }
Exemple #14
0
 public static string GetUrl(ApiOption option)
 {
     return($"{Domain}{dic[option]}");
 }