/// <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)); }
/// <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); } } }