asp.net mvc 短信验证实例

九诺短信平台c#sdk

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.IO;
using System.Xml;
using System.Net;
using System.Security.Cryptography;

namespace Common
{
   public  class PhoneMessageCheck
    {

        string _userName = "***";//用户名
        string _userPwd = "***";//经过md5加密后的密码。

        string _urlSendSms = @"http://admin.9nuo.com/Interface_http/SendSms.aspx?userName={0}&pwd={1}&phone={2}&note={3}";
        string _urlGetBalance = @"http://admin.9nuo.com/Interface_http/GetBalance.aspx?userName={0}&pwd={1}";
        string _urlGetReportDetail = @"http://admin.9nuo.com/Interface_http/GetReportDetail.aspx?userName={0}&pwd={1}&startDate={2}&endDate={3}";
        string _urlGetReportTotalByDay = @"http://admin.9nuo.com/Interface_http/GetReportTotalByDay.aspx?userName={0}&pwd={1}&startDate={2}&endDate={3}";

        //测试用
        private string Md5Example()
        {
            string toCheckMd5Str = "***";//123456加密后的结果
            toCheckMd5Str = EncryptByMd5(toCheckMd5Str).Replace("-", "").ToLower();
            string md5Str = "***";

            if (toCheckMd5Str != md5Str)
            {
                return "加密方法不正确";
            }
            else
            {
                return "加密方法正确";
            }
        }

        //MD5加密
        string EncryptByMd5(string toMd5Str)
        {
            MD5 m = new MD5CryptoServiceProvider();
            byte[] s = m.ComputeHash(UnicodeEncoding.UTF8.GetBytes(toMd5Str));
            return BitConverter.ToString(s);

        }

        //获取账户余额
        public  string GetBalance()
        {
            int result = 0;
            try
            {
                string url = string.Format(_urlGetBalance, _userName, _userPwd);
                string postResult = PostData(url, Encoding.UTF8);
                int balance = Convert.ToInt32(DealWebSvcResultNoXml(postResult));
                return "余额:" + balance;
            }
            catch (Exception ex)
            {
                throw ex;
                //return ex.ToString();
            }
        }

        //发送短信
        public DataSet SendSms(string phone,string message)
        {
            try
            {
                //string note = "测试http接口:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "[卓大师]";
                string url = string.Format(_urlSendSms, _userName, _userPwd, phone, message);
                string postResult = PostData(url, Encoding.UTF8);
                DataSet dataResult = DealWebSvcResult(postResult);
                return dataResult;
            }
            catch (Exception ex)
            {
                return null;
            }
        }

        //获得详细报表 
        public DataSet ReportDetail(string startTime, string endTime)
        {
            try
            {

                string url = string.Format(_urlGetReportDetail, _userName, _userPwd, startTime, endTime);
                string postResult = PostData(url, Encoding.UTF8);
                DataSet dataResult = DealWebSvcResult(postResult);
                return dataResult;
            }
            catch (Exception ex)
            {
                DataSet ds = new DataSet();
                return ds;
            }
        }

        //获得每天详细报表
        public DataSet ReportTotalByDay(string startTime, string endTime)
        {
            try
            {
                string url = string.Format(_urlGetReportTotalByDay, _userName, _userPwd, startTime, endTime);
                string postResult = PostData(url, Encoding.UTF8);
                DataSet dataResult = DealWebSvcResult(postResult);
                return dataResult;
            }
            catch (Exception ex)
            {
                DataSet ds = new DataSet();
                return ds;
            }
        }

        //get方法获得数据
        public string PostData(string url, Encoding returnEncoding)
        {
            string result = string.Empty;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "GET";
            // request.ContentType = "text/html;encoding=gb2312";
            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            {
                StreamReader sr = null;
                try
                {
                    sr = new StreamReader(response.GetResponseStream(), returnEncoding);
                    result = sr.ReadToEnd().Trim();
                }
                finally
                {
                    try
                    {
                        sr.Close();
                        sr.Dispose();
                    }
                    catch
                    {
                        sr = null;
                    }
                }
            }
            return result;
        }

        //将获得的xml转化为dataset
        private DataSet DealWebSvcResult(string resultXml)
        {
            DataSet dataResult = new DataSet();
            if (resultXml.Length > 5)
            {
                string result = resultXml.Substring(0, 5).ToLower();
                if (result == "error")
                {
                    throw new Exception(resultXml.Substring(6));
                }
                else
                {
                    dataResult = ConvertXMLToDataSet(resultXml);
                }
            }
            else
            {
                throw new Exception("系统异常,请联系九诺客服人员");
            }
            return dataResult;
        }

        //处理返回的xml
        private string DealWebSvcResultNoXml(string resultXml)
        {
            if (resultXml.IndexOf("error") == 0)
            {
                throw new Exception(resultXml.Substring(6));
            }
            return resultXml;
        }

        //将xml转化为dateset
        private DataSet ConvertXMLToDataSet(string xmlData)
        {
            StringReader stream = null;
            XmlTextReader reader = null;
            try
            {
                DataSet xmlDS = new DataSet();
                stream = new StringReader(xmlData);
                //从stream装载到XmlTextReader
                reader = new XmlTextReader(stream);
                xmlDS.ReadXml(reader);
                return xmlDS;
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (reader != null)
                    reader.Close();
            }
        }

    }
}
View Code

 

前台html

<div class="editor-label">
                请输入手机号码:
            </div>
            <div class="editor-field">
             <input type="text" id="MobilePhoneNumber" name="phoneCheckNum" style="width:180px"/>
                <input type="button" id="Button1" onclick="CheckNum()"  value="获取验证码" style="background:url(../images/phonemessage.jpg);height:26px; width:95px; border:none; cursor:pointer;"/>
                <span id="Span1"></span>
            </div>  

           <div class="editor-label">
                请输入手机验证码:
            </div>
            <div class="editor-field">
                 <input type="text" id="Text1" name="phoneCheckNum" style="width:180px"/><span id="Span2" ></span>
            </div>  
View Code

js

 var i = 0;
        var int;
        function CheckNum() {
            var message = document.getElementById("successMessage");
            message.innerHTML = "";
            var phonenum = document.getElementById("MobilePhoneNumber");
            if (phonenum.value == "") {
                $.messager.alert('操作提示', "手机号码为空!", 'warning');
            }
            else {
                re = new RegExp("^[1][3-8]\\d{9}$");
                if (re.test(phonenum.value)) {
                    i = 0;
                    var btn_checknum = document.getElementById("btn_checknum");
                    btn_checknum.disabled = true;
                    SendMessage(phonenum.value);
                    int = self.setInterval("xilou()", 1000);
                }
                else {
                    //alert("手机号码格式不正确");
                }
            }
        }

        function SendMessage(phonenum) {
            var message = document.getElementById("successMessage");
            message.innerHTML = "<img src='../../Images/phonewait.gif' />";
            $.post("../Organization/GetPhoneCheckNum", { phonenum: phonenum }, function (data) {
                if (data == "OK") {
                    message.innerHTML = "<span style='color:Green'>验证码已成功发送</span>";
                } else if (data == "exitphonenum") {
                    btn_checknum.disabled = false;
                    btn_checknum.value = "获取验证码";
                    int = window.clearInterval(int);
                    message.innerHTML = "<span style='color:Red'>手机号码存在</span>";
                }

            });
        }

        function xilou() {
            var btn_checknum = document.getElementById("btn_checknum");
            btn_checknum.value = "重新获取(" + i + ")";
            if (i <= 60) {
                i++;
            }
            if (i > 60) {
                btn_checknum.disabled = false;
                btn_checknum.value = "获取验证码";
                int = window.clearInterval(int);
            }
        }


        $(function () {

            $("#MobilePhoneNumber").keydown(function () {
                var message = document.getElementById("successMessage");
                message.innerHTML = "";
            });

            $("#phoneCheckNum").blur(function () {
                var message = document.getElementById("checkSucess");
                var checknum = document.getElementById("phoneCheckNum");

                $.post("../Organization/CheckNum", { checknum: checknum.value }, function (data) {
                    if (data == "OK") {
                        message.innerHTML = "<img src='../../Images/tick-circle.png'/>";
                    }
                    else {
                        message.innerHTML = "<img src='../../Images/tick-close.png' height='16' width='16'/>";
                    }
                });
            });
View Code

后台处理:

/// <summary>
        /// 获得手机验证码
        /// </summary>
        /// <param name="phonenum"></param>
        /// <returns></returns>
        [HttpPost]
        [SupportFilter]
        public ActionResult GetPhoneCheckNum(string phonenum)
        {
            SysPersonBLL bll_sysperson = new SysPersonBLL();
            if (!bll_sysperson.CheckPhoneNum(phonenum))
            {
                PhoneMessageCheck phoneMessageCheck = new PhoneMessageCheck();
                string message = "";
                Random random = new Random();
                for (int i = 0; i < 6; i++)
                {
                    message += random.Next(0, 9);
                }
                Session["numm"] = message;
                Session["phonenum"] = phonenum;
                message += "(手验证码),如非本人操作,请忽略本短信。【验证码】";
                DataSet ds = phoneMessageCheck.SendSms(phonenum, message);
                DataTable table = ds.Tables[0];
                string value = table.Rows[0]["FResult"].ToString();
                if (value == "发送成功")
                {
                    return Content("OK");
                }
            }
            else
            {
                return Content("exitphonenum");
            }
            return View();
        }

        /// <summary>
        /// 检测验证码
        /// </summary>
        /// <param name="checknum"></param>
        /// <returns></returns>
        [HttpPost]
        [SupportFilter]
        public ActionResult CheckNum(string checknum)
        {
            if (Session["numm"] != null)
            {
                if (checknum == Session["numm"].ToString())
                {
                    return Content("OK");
                }
                else
                {
                    return Content("Faile");
                }
            }
            else
            {
                return Content("Faile");
            }
        }
View Code

 

注:在插入数据时要判断:

                if (phoneCheckNum == Session["numm"].ToString().Trim() && entity.MobilePhoneNumber.ToString().Trim() == Session["phonenum"].ToString().Trim())

 

 

 

 

posted @ 2013-08-22 15:29  zhushang  阅读(669)  评论(0编辑  收藏  举报