/// <summary>
        /// 建立请求,以模拟远程HTTP的POST请求方式构造并获取支付宝的处理结果
        /// </summary>
        /// <param name="sParaTemp">请求参数数组</param>
        /// <returns>支付宝处理结果</returns>
        public static string BuildRequestPost(SortedDictionary <string, string> sParaTemp, PayBaseInfo payBase)
        {
            //待请求参数数组
            Dictionary <string, string> dicPara = new Dictionary <string, string>();

            dicPara = BuildRequestPara(sParaTemp, payBase.SignType, payBase.InputCharset);

            //待请求参数数组字符串
            string        strRequestData = string.Empty;
            StringBuilder sbRequest      = new StringBuilder();

            foreach (KeyValuePair <string, string> temp in dicPara)
            {
                sbRequest.Append(temp.Key + "=" + temp.Value + "&");
            }
            if (sbRequest.Length > 0)
            {
                strRequestData = sbRequest.ToString().TrimEnd('&');
            }

            //构造请求地址
            string strUrl = PayConfigUtil.GATEWAY_NEW + "_input_charset=" + payBase.InputCharset;

            LogUtil.Debug(string.Format("请求地址:{0},参数:{1}", strUrl, strRequestData));

            //请求远程HTTP
            return(HttpRequestUtil.HttpPost(strUrl, strRequestData));
        }
Exemplo n.º 2
0
        /// <summary>
        /// 获取IP地址信息
        /// </summary>
        /// <param name="ip"></param>
        /// <returns></returns>
        public static string GetLocation(string ip)
        {
            string res = "";

            try
            {
                string url = "http://apis.juhe.cn/ip/ip2addr?ip=" + ip + "&dtype=json&key=b39857e36bee7a305d55cdb113a9d725";
                res = HttpRequestUtil.HttpGet(url);
                var resjson = res.ToObject <objex>();
                res = resjson.result.area + " " + resjson.result.location;
            }
            catch
            {
                res = "";
            }
            if (!string.IsNullOrEmpty(res))
            {
                return(res);
            }
            try
            {
                string url = "https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?query=" + ip + "&resource_id=6006&ie=utf8&oe=gbk&format=json";
                res = HttpRequestUtil.HttpGet(url, Encoding.GetEncoding("GBK"));
                var resjson = res.ToObject <obj>();
                res = resjson.data[0].location;
            }
            catch
            {
                res = "";
            }
            return(res);
        }
        /// <summary>
        /// 【电信】发送短信
        /// </summary>
        /// <param name="mobile"></param>
        /// <param name="templateParam"></param>
        /// <param name="tempateId"></param>
        private static void SendSmsByDx(string mobile, Dictionary <string, object> templateParam, int tempateId)
        {
            string token = GetDxSmsAccessToken(0);

            if (string.IsNullOrEmpty(token))
            {
                return;
            }
            Dictionary <string, string> paras = new Dictionary <string, string>();

            paras.Add("acceptor_tel", mobile);
            paras.Add("access_token", token);
            paras.Add("app_id", ConfigUtil.SmsAppId_dx);
            paras.Add("template_id", tempateId.ToString());
            paras.Add("template_param", JsonUtil.ToJson(templateParam));
            paras.Add("timestamp", DateTime.Now.ToString(Const.DATETIME_FORMAT));

            try
            {
                string res = HttpRequestUtil.SendPostRequest(SendDxSmsApi, paras);
                LogUtil.Debug(string.Format("发送手机短信:{0},{1}", mobile, JsonUtil.ToJson(templateParam)));
            }
            catch (Exception ex)
            {
                LogUtil.Error(ex.ToString());
            }
        }
        /// <summary>
        /// 发送验证码短信
        /// </summary>
        /// <param name="mobile">手机号码</param>
        /// <param name="verifyCode">验证码</param>
        /// <param name="validateCodeExpire">有效期</param>
        private static void SendCodeSms(string mobile, string verifyCode, decimal validateCodeExpire)
        {
            byte[] bytes = Encoding.GetEncoding("gb2312").GetBytes(string.Format(MsgTemplateUtil.MsgDict["SmsValidCode"], verifyCode, validateCodeExpire));
            string str   = Convert.ToBase64String(bytes);

            str = string.Format("&multixmt=*|{0}|{1}|*|*|*|*|*|100000001|*|*|*|1", mobile, str);
            string url = string.Format("{0}/MongateCsSpMultixMtSend?userid={1}&password={2}", mwUrlApi, mwSmsUserId, mwSmsPwd);
            Dictionary <string, string> para = new Dictionary <string, string>();

            HttpRequestUtil.HttpGet(url + str, "");
        }
        /// <summary>
        /// 发送短信通知
        /// </summary>
        /// <param name="mobile">手机号码(串)</param>
        /// <param name="content">短信内容</param>
        private static void SendSms(string mobile, string content)
        {
            string url = string.Format("{0}/MongateCsSpSendSmsNew", mwUrlApi);
            Dictionary <string, string> paras = new Dictionary <string, string>();

            paras.Add("userId", mwSmsUserId);
            paras.Add("password", mwSmsPwd);
            paras.Add("pszMobis", mobile);
            paras.Add("iMobiCount", mobile.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Length.ToString());
            paras.Add("pszMsg", content);
            HttpRequestUtil.SendGetRequest(url, paras);
        }
        /// <summary>
        /// 获取登录Token
        /// </summary>
        /// <param name="tryNum"></param>
        /// <returns></returns>
        private static string GetDxSmsAccessToken(int tryNum)
        {
            string key = "smstoken";

            if (_dXSmsToken.ContainsKey(key))
            {
                var kv = _dXSmsToken[key];
                if (kv.Item2 > DateTime.Now)
                {
                    return(kv.Item1);
                }
            }
            Dictionary <string, string> paras = new Dictionary <string, string>();

            paras.Add("grant_type", "client_credentials");
            paras.Add("app_id", ConfigUtil.SmsAppId_dx);
            paras.Add("app_secret", ConfigUtil.SmsAppSecret_dx);
            try
            {
                string res = HttpRequestUtil.SendPostRequest(GetDxSmsTokenApi, paras);
                Dictionary <string, string> resDic = JsonUtil.ToObject <Dictionary <string, string> >(res);
                if (resDic.ContainsKey("access_token"))
                {
                    _dXSmsToken.Clear();
                    _dXSmsToken.Add(key, new Tuple <string, DateTime>(resDic["access_token"], DateTime.Now.AddSeconds(resDic["expires_in"].ToInt(0))));
                    return(resDic["access_token"]);
                }
                else
                {
                    LogUtil.Debug(resDic["res_message"]);
                    return(string.Empty);
                }
            }
            catch (Exception ex)
            {
                LogUtil.Error(ex.ToString());
                System.Threading.Thread.Sleep(200);
                if (tryNum < 3)
                {
                    return(GetDxSmsAccessToken(++tryNum));
                }
                else
                {
                    return(string.Empty);
                }
            }
        }