.NET 實現手機簡訊驗證介面
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));
kvlist.Add(new KeyValuePair<string, string>("smsContent", "【####】尊敬的使用者,您的驗證碼為" +gcn.Verify));//發給誰?(簡訊接收端手機號碼集合。用英文逗號分開,每批發送的手機號數量不得超過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
注:此文章是用於秒滴的手機簡訊驗證