1. 程式人生 > >.NET 實現手機簡訊驗證介面

.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

注:此文章是用於秒滴的手機簡訊驗證