My first blog
注:此文章是用于秒滴的手机短信验证
先声明一个类AccontToken ,里面添加4个字段:
开发者主账号ID:accountSid,
开发者密匙:AUTH_TOKEN,
短信接收端手机号码:phonenumber,
手机验证码:Verify
不明白的多看哈:http://www.miaodiyun.com/doc/https_sms.html
一、首先判断手机是否格式正确
//用正则表达式验证手机号码
Regex regPhoneNumber = new Regex(@"^1[34578]\d{9}$");
if (!regPhoneNumber.IsMatch(phone))
{
Response.Write("PhoneNumber_No");
Response.End();
return;
}
二、随机生成数字验证码
Random rd = new Random();
string rd_str = rd.Next(100000, 1000000).ToString();
ViewBag.rd_str = rd_str;
三、向AccontToken类 字段赋值,并调用CreatePostHttpResponse()
AccontToken acss = new AccontToken(.....................);
string response = CreatePostHttpResponse(acss);
四、写好MD5加密方法。后面sig要调用
public static string GetMD5(string str)
{
//字符串转换成字节数组
byte[] jmq = System.Text.Encoding.Default.GetBytes(str);
MD5 md5 = new MD5CryptoServiceProvider();
//通过字节数组转换成加密后的字节数组(hash编码值)
byte[] jmbehind = md5.ComputeHash(jmq);
//加密后的字节数组转换成字符串,中间不带任何符号,需替换成“”
string strhebind = BitConverter.ToString(jmbehind).Replace("-", "");
return strhebind;
}
五、秒滴短信验证接口
public static string CreatePostHttpResponse(AccontToken gcn)
{
string timestamp = DateTime.Now.ToString("yyyyMMddHHmmss");
HttpClient hc = new HttpClient();
List<KeyValuePair<string, string>> kvlist = new List<KeyValuePair<string, string>>();
kvlist.Add(new KeyValuePair<string, string>("accountSid", gcn.accountSid));
//发给谁?(短信接收端手机号码集合。用英文逗号分开,每批发送的手机号数量不得超过100个。)
kvlist.Add(new KeyValuePair<string, string>("to", gcn.phonenumber));
//时间戳。当前系统时间(24小时制),格式"yyyyMMddHHmmss"。时间戳有效时间为5分钟。
kvlist.Add(new KeyValuePair<string, string>("timestamp", timestamp));
//签名。MD5(ACCOUNT SID + AUTH TOKEN + timestamp)。共32位(小写)。注意:MD5中的内容不包含”+”号。
kvlist.Add(new KeyValuePair<string, string>("sig", GetMD5(gcn.accountSid + gcn.AUTH_TOKEN + timestamp).ToLower()));
//发送并返回信息HttpContent content = new FormUrlEncodedContent(kvlist);
HttpResponseMessage hrm = hc.PostAsync("https://api.miaodiyun.com/20150822/industrySMS/sendSMS", content).Result;
string result = hrm.Content.ReadAsStringAsync().Result;
return result;
}
六、最后根据 三、调用返回的结果判断短信验证是否发送成功
if (response.Contains("00000"))
{
//验证码发送成功后,记录用户获取验证码的手机号和生成的验证码
Session["rd_str"] = rd_str;
Session["phonenumber"] = phone;
//设置Session失效时间,即手机号和验证码过期时间
Session.Timeout = 5;
Response.Write("SendMessage_Success");
Response.End();
return;
}
else //发送失败
{
Response.Write("SendMessage_Error");
Response.End();
return;
}
My first blog
注:此文章是用于秒滴的手机短信验证