发送短信验证码过程

1:创建一个项目用来调用第三方的类,右键Nuget添加第三方的引用类库 qcloudsms_csharp
2:把第三方的公共类放入到我们的项目里


using qcloudsms_csharp;
using qcloudsms_csharp.httpclient;
using qcloudsms_csharp.json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MiShop.Remote
{
    /// <summary>
    /// 
    /// </summary>
    public class TenXunYunSMS
    {
        //appId
        public int appId;
        //appKey
        public string appKey = "";
        //短信模板ID
        private int tmplateId = 379257;
        //签名内容
        private string smsSign = "7hhhcn";
        /// <summary>
        /// 验证码
        /// </summary>
        public int Code { get; set; }
        /// <summary>
        /// 发送验证码
        /// </summary>
        /// <param name="phone"></param>
        /// <returns></returns>
        public void SetSMS(string phone)
        {
            Random random = new Random();
            int code = random.Next(100000, 999999);
            try
            {
                SmsSingleSender ssender = new SmsSingleSender(appId, appKey);
                var result = ssender.sendWithParam("86", phone,
                    tmplateId, new[] { code.ToString() }, smsSign, "", "");  // 签名参数未提供或者为空时,会使用默认签名发送短信
            }
            catch (JSONException ex)
            {
                Console.WriteLine(ex.Message);
            }
            catch (HTTPException ex)
            {
                Console.WriteLine(ex.Message);

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);

            }
            Code = code;
        }
    }
}

3:创建一张短信发送记录表

Create table CordInfo(
Id INT identity primary key ,
Cord INT,
TelPhone BIGINT,
CreateDate DATETIME,
USefulTime DATETIME
)

4:数据访问层写插入短信信息表方法

  /// <summary>
        /// 添加数据
        /// </summary>
        /// <param name="CordInfo"></param>
        /// <returns></returns>
        public int AddCordInfo(CordInfo CordInfo)
        {
            string sql = @"INSERT INTO [MiShop].[dbo].[CordInfo]
           ([Cord]
           ,[TelPhone]
           ,[CreateDate]
           ,[USefulTime])
     VALUES
           (@Cord
           ,@TelPhone
           ,@CreateDate
           ,@USefulTime)";


            SqlParameter[] parameters = {
            new SqlParameter(){
                DbType = DbType.Int32,
                ParameterName="@Cord",
                Value = CordInfo.Cord
            },
            new SqlParameter(){
                DbType = DbType.Int64,
                ParameterName="@TelPhone",
                Value = CordInfo.TelPhone
            },
            new SqlParameter(){
                DbType = DbType.DateTime,
                ParameterName="@CreateDate",
               // Value =null
               Value =DateTime.Now
            },

               new SqlParameter(){
                DbType = DbType.DateTime,
                ParameterName="@USefulTime",
                  //Value =null
               Value = DateTime.Now.AddMinutes(1)
            }
            };
            sqlHelper sqlHelp = new sqlHelper();
            return sqlHelp.ExcuteNoQuery(sql, parameters);

        }

4:业务层:先引用第三方项目,先调用第三方类,发送验证码,然后将验证码存储到短信信息对象,最后调用数据访问层的插入短信的方法。

   public bool CordInfo(string Tel)
        {
            TenXunYunSMS tenXunYunSMS = new TenXunYunSMS();
            try
            {
                //值

                tenXunYunSMS.appKey = "####";//key值
                tenXunYunSMS.appId = ####;//ID值
                tenXunYunSMS.SetSMS(Tel);
                //插入
                CordInfo cordInfo = new CordInfo();
                cordInfo.TelPhone = Convert.ToInt64(Tel);
                cordInfo.Cord = Convert.ToInt32(tenXunYunSMS.Code);
                CordInfoRepository cordInfoRepository = new CordInfoRepository();
                cordInfoRepository.AddCordInfo(cordInfo);


            }
            catch (Exception)
            {
                return false;

            }
           
            return true;
        }


5:控制器写一个JsonResult的发送验证码方法需要接收手机号

 /// <summary>
        /// 查询Cord
        /// </summary>
        /// <param name="cordInfo"></param>
        /// <returns></returns>
        public JsonResult ExuctCord(CordInfo cordInfo)
        {
            Operate operate = new Operate();

            CordInfoService cordInfoService = new CordInfoService();
            operate.Success = cordInfoService.ExuctCord(cordInfo)>0;
            return Json(operate);

        }

6:控制器写一个JsonResult的校验验证码方法需要接收短信信息对象

  /// <summary>
        /// 查询Cord
        /// </summary>
        /// <param name="cordInfo"></param>
        /// <returns></returns>
        public JsonResult ExuctCord(CordInfo cordInfo)
        {
            Operate operate = new Operate();

            CordInfoService cordInfoService = new CordInfoService();
            operate.Success = cordInfoService.ExuctCord(cordInfo)>0;
            return Json(operate);

        }
        /// <summary>
        /// 查询有效时间
        /// </summary>
        /// <param name="cordInfo"></param>
        /// <returns></returns>
        public JsonResult ExuctUseFulTime(CordInfo cordInfo)
        {
            Operate operate = new Operate();

            CordInfoService cordInfoService = new CordInfoService();
            operate.Success = cordInfoService.ExuctUseFulTime(cordInfo);
            return Json(operate);

        }

7:页面点击获取验证码按钮:先禁用按钮,然后ajax post提交到控制器对应的发送验证码方法,传入手机号,然后success处理返回的结果。

   //发验证码及倒计时插入数据到Cord表
            $("#btnzc").click(function () {
                var Tel = $("#UserTel").val();

                $.ajax({
                    url: "/Cord/CordValue/?Tel=" + Tel,

                    type: "post",

                    success: function (operate) {
                        if (operate.Success) {
                            alert("插入成功")





                            //倒计时
                            $("#btnzc").attr("disabled", "disabled");
                            var time = 60;

                            $("#btnzc").val(time + "s");
                            var timer = setInterval(function () {
                                if (time > 0) {
                                    time--;

                                    $("#btnzc").val(time + "s");
                                } else {
                                    $("#btnzc").removeAttr("disabled");
                                    clearInterval(timer);
                                }

                            }, 1000)
                        }

                    }
                })
            })

8:点击注册按钮,写一个校验验证码的方法,校验通过之后才能注册。

//矫正验证码
   //1.查询cordInfo表内验证码输入是否正确
            $("#Cord").blur(function () {

                var data = {};
                data.Cord = $("#Cord").val();

                $.ajax({
                    url: "/Cord/ExuctCord",
                    data: data,
                    type: "post",
                    success: function (result) {
                        if (result.Success) {
                            CordCheak = true;

                        } else {
                               $("#sms").css("color","red")
                            $("#sms").val("验证码错误")
                            CordCheak = false;
                          
                        }
                    }

                })
            })
            //2.查询验证码是否是有效时间
            $("#Cord").blur(function () {

                var data = {};
                data.Cord = $("#Cord").val();
                data.TelPhone = $("#UserTel").val();

                $.ajax({
                    url: "/Cord/ExuctUseFulTime",
                    data: data,
                    type: "post",
                    success: function (result) {
                        if (result.Success) {
                              $("#sms").css("color","green")
                         
                            UseFulTime = true;

                        } else {
                              $("#sms").css("color","red")
                            $("#sms").val("验证码有效时间过期")
                            UseFulTime = false;
                        }



                    }


                })

                //2.如果正确CordCheak等于true否则等于false




            })

//判断注册是否成功
  var CordCheak = false;
            var UseFulTime = false;
            //注册
            $("#submit").click(function () {
                if (UserNameCheak && UserPwdCheak && UserRePwdCheak && UserTelCheak && CordCheak && UseFulTime) {
                    var userInfo = {};
                    userInfo.userName = $("#UserName").val();
                    userInfo.userpwd = $("#UserPwd").val();
                    userInfo.userTel = $("#UserTel").val();
                    $.ajax({
                        url: "/Register/SaveUserInfo",
                        data: userInfo,
                        type: "post",
                        success: function (operate) {
                            if (operate.Success) {
                                alert("注册成功");
                            }
                            else {
                                alert("注册失败");
                            }
                        }
                    })
                } else {
                    alert("请认真填写你的信息!")
                }
            });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值