.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

注:此文章是用于秒滴的手机短信验证

猜你喜欢

转载自blog.csdn.net/qq_39585172/article/details/80022204
今日推荐