tp5绑定银行卡、注册、图片验证码、短信验证

绑定银行卡我们需要先去阿里云进行注册:注册流程如下

在这里插入图片描述

点击立即购买首次会获得五次免费试用的计会

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

实现代码如下:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
</head>
<body>

<div class="qupiao">
    <h1>验证个人信息</h1>
    <form class="layui-form" action="{:url('sign')}">

        <div class="form-group">
            <label class="qupiao-ipt-1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;姓名:</label>
            <input id="name" type="text" name="name">
            <span class="checkExistRong" id="checkExistname"></span>
        </div>

        <div class="form-group">
            <label class="qupiao-ipt-2">身份证号码:</label>
            <input id="identity" type="text" name="idcard" maxlength="18">
            <span class="checkExistRong" id="checkExistID"></span>

        </div>

        <div class="form-group">
            <label class="qupiao-ipt-3">手机号号码:</label>
            <input id="telephone" type="tel" name="phone" min="11">
            <span class="checkExistRong" id="checkExistPhone"></span>
        </div>
        <div>
            <input type="text" name="getcode" placeholder="请输入验证码">
            <input type="button" id="getcode" value="免费获取验证码" onclick="settime(this)" />
        </div>

        <div>
            <label>验证码:</label> <input type="text" class="textBox" placeholder="看不清 请点击图片更换"
                                       name="code" id="yzm" placeholder="验证码" />
            <img src="{:captcha_src()}" alt=""  class="passcode" style="height:43px;cursor:pointer;width: 130px;height: 40px;margin-left: 75px;" onclick="this.src=this.src+'?'">
        </div>

        <div>
            <label class="qupiao-ipt-4">银行卡:</label>
            <input type="text" id="t_bankno" name="bank"/>
            <input type="button" id="btnCheck" value="check" onclick="CheckBankNo($('#t_bankno'));" />
            <span id="banknoInfo"></span>
        </div>

        银行卡类型
        <div>
            <input type="text" name="type">
        </div>

        可用金额
        <div>
            <input type="text" name="money">
        </div>

        <button type="submit">提交</button>
    </form>
</div>

</body>
</html>

<script>
    /*姓名身份证,手机号提交*/
    function isChinaName(name) {
        var pattern = /^[\u4E00-\u9FA5]{1,6}$/;
        return pattern.test(name);
    }


    // 验证身份证
    function isCardNo(card) {
        var pattern = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
        return pattern.test(card);
    }

    // 验证手机号
    function isPhoneNo(phone) {
        var pattern = /^1[34578]\d{9}$/;
        return pattern.test(phone);
    }

    /*用户名判断*/
    function userName(inputid, spanid) {
        $(inputid).blur(function() {
            if ($.trim($(inputid).val()).length == 0) {
                $(spanid).html("× 名称没有输入");
            } else {
                if (isChinaName($.trim($(inputid).val())) == false) {
                    $(spanid).html("× 名称不合法");
                }
            }
        });
        $(inputid).focus(function() {
            $(spanid).html("");
        });

    };
    userName('#name', "#checkExistname");
    /*身份证判断*/
    function userID(inputid, spanid) {
        $(inputid).blur(function() {
            if ($.trim($(inputid).val()).length == 0) {
                $(spanid).html("× 身份证号码没有输入");
            } else {
                if (isCardNo($.trim($(inputid).val())) == false) {
                    $(spanid).html("× 身份证号不正确");
                }
            }
        });
        $(inputid).focus(function() {
            $(spanid).html("");
        });
    };
    userID('#identity', "#checkExistID");

    /*手机号判断*/
    function userTel(inputid, spanid) {
        $(inputid).blur(function() {
            if ($.trim($(inputid).val()).length == 0) {
                $(spanid).html("× 手机号没有输入");
            } else {
                if (isPhoneNo($.trim($(inputid).val())) == false) {
                    $(spanid).html("× 手机号码不正确");
                }
            }
            $(inputid).focus(function() {
                $(spanid).html("");
            });
        });
    };
    userTel('#telephone', "#checkExistPhone");

    //验证银行卡
    function CheckBankNo(t_bankno) {
        var bankno = $.trim(t_bankno.val());
        if(bankno == "") {
            $("#banknoInfo").html("请填写银行卡号");
            return false;
        }
        if(bankno.length < 16 || bankno.length > 19) {
            $("#banknoInfo").html("银行卡号长度必须在16到19之间");
            return false;
        }
        var num = /^\d*$/; //全数字
        if(!num.exec(bankno)) {
            $("#banknoInfo").html("银行卡号必须全为数字");
            return false;
        }
        //开头6位
        var strBin = "10,18,30,35,37,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,58,60,62,65,68,69,84,87,88,94,95,98,99";
        if(strBin.indexOf(bankno.substring(0, 2)) == -1) {
            $("#banknoInfo").html("银行卡号开头6位不符合规范");
            return false;
        }
        //Luhm校验(新)
        if(!luhmCheck(bankno))
            return false;
        $("#banknoInfo").html("验证通过!");
        return true;
    }
    //倒计时
    var countdown=60;
    function settime(val) {
        if (countdown == 0) {
            val.removeAttribute("disabled");
            val.value="免费获取验证码";
            countdown = 60;
        } else {
            val.setAttribute("disabled", true);
            val.value="重新发送(" + countdown + ")";
            countdown--;
        }
        setTimeout(function() {
            settime(val)
        },1000)
    }
    //点击调用接口获取手机验证码
    $('#getcode').click(function () {
         var phone=$("#telephone").val();
         //console.log(phone)
        $.get('getCode',{phone:phone},function (res) {
            if (res.code==200){
                alert('短信发送成功');
            }
            if (res.code==500){
                alert(res.msg);
                return false;
            }
        })
    })

</script>

调用手机号第三方接口

 //获取手机验证码
    public function getCode(Request $request)
    {
        //当用户点击手机号时先去缓存中查询,当前时间-缓存时间如果大于60s,允许用户继续获取验证码,否则给出提示
        //获取手机号
        $phone=$request->param('phone');
        //设置当前时间戳
        $time=time();
        if (Session::has($phone)){
            if ($time - Session::get($phone) > 60){
                $content="【创信】你的验证码是:5873,3分钟有效!";
                $res=$this->sendmsg($phone,$content);
                if ($res){
                    //每次发送验证码成功之后都将当前时间存入缓存,方便下次发送验证码时的时间间隔的判断
                    Session::set($phone,time());
                    //将发送成功的手机验证码存入session,当用户进行提交信息入库的时候进最终的验证码验证
                    Session::set('code',5873);
                    return json(['code'=>200,'msg'=>'发送成功']);
                }else{
                    return json(['code'=>201,'msg'=>'发送失败']);
                }
            }else{
                return json(['code'=>500,'msg'=>'一分钟后点击发送']);
            }
        }else{
            $content="【创信】你的验证码是:5873,3分钟有效!";
            $res=$this->sendmsg($phone,$content);
            if ($res){
                //发送验证码成功后将当前时间存入缓存,以便下次再次点击的时候进行时间的判断
                Session::set($phone,time());
                return json(['code'=>200,'msg'=>'发送成功']);
            }else{
                return json(['code'=>201,'msg'=>'发送失败']);
            }
        }
    }

    //使用curl函数库发送请求
    public function curl_request($url, $post = true, $params = [], $https = true)
    {
        //初始化请求
        $ch = curl_init($url);
        //默认是get请求。如果是post请求 设置请求方式和请求参数
        if ($post) {
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
        }
        //如果是https协议,禁止从服务器验证本地证书
        if ($https) {
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        }
        //发送请求,获取返回结果
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $res = curl_exec($ch);
        //关闭请求
        curl_close($ch);
        return $res;
    }
    //使用curl_request函数调用短信接口发送短信
    public function sendmsg($phone, $content)
    {
        // 请求地址、appkey
        $gateway = 'https://way.jd.com/chuangxin/dxjk';
        $appkey = '56094ca4632daa86455f007d61e3b113';
        // https://way.jd.com/chuangxin/dxjk?mobile=*********&content=【创信】你的验证码是:5873,3分钟内有效!&appkey=您申请的APPKEY
        $url = $gateway . '?appkey=' . $appkey . "&content=" . $content . "&mobile=" . $phone ;

        $res = $this->curl_request($url, false, [], true);
        //处理结果
        if (!$res) {
            return '请求发送失败';
        }
        //解析结果
        $arr = json_decode($res, true);
        if (isset($arr['code']) && $arr['code'] == 10000) {
            //短信接口调用成功
            return true;
        } else {
            /*if(isset($arr['msg'])){
                return $arr['msg'];
            }*/
            return '短信发送失败';
        }
    }

银行卡注册

    //银行卡注册【添加】
    public function sign(Request $request)
    {
        //接收银行卡号、身份证号、手机号、姓名
        $bank=$request->param('bank');
        $idcard=$request->param('idcard');
        $phone=$request->param('phone');
        //进行银行卡注册的时候真实姓名name需要进行urlencode加密
        $name=urlencode($request->param('name'));
        $host = "https://highbankcard4.shumaidata.com";
        $path = "/bankcard4/check/high";
        $method = "GET";
        $appcode = "feb44067526849b394a06ca13f9c2ca0";
        $headers = array();
        array_push($headers, "Authorization:APPCODE " . $appcode);
        $querys = "bankcard=$bank&idcard=$idcard&mobile=$phone&name=$name";
        $bodys = "";
        $url = $host . $path . "?" . $querys;

        $curl = curl_init();
        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($curl, CURLOPT_FAILONERROR, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_HEADER, true);
        if (1 == strpos("$".$host, "https://"))
        {
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        }
        //var_dump(curl_exec($curl));
        //获取所有数据,进行验证
        $param=$request->param();
        $validate=$this->validate($param,[
            'name'=>'require',
            'bank'=>'require',
            'idcard'=>'require',
            'type'=>'require',
            'phone'=>'require',
            'money'=>'require',
            'code'=>'require|captcha'
        ]);
        if ($validate !==true){
            $this->error($validate);
        }
        //添加
        //从缓存中出去验证码进行验证码匹对
        $phoneCode=Session::get('code');
        //验证码验证
        if ($param['getcode'] != $phoneCode){
            return json(['code'=>501,'data'=>'','msg'=>'验证码有误']);
        }else{
            //判断数据表是否有当前手机号
            $res=\app\day64\model\Bank::where('bank',$param['bank'])->find();
            if ($res){
                //将用户当前手机号存入session,便于后期展示当前用户手机号注册过的银行卡列表
                Session::set('phone',$res['phone']);
                $this->success('当前银行卡已经注册过了','day64/cash/index');
            }else{
                $obj=new \app\day64\model\Bank();
                $obj->allowField(true)->save($param);
                //将用户当前手机号存入session,便于后期展示当前用户手机号注册过的银行卡列表
                Session::set('phone',$obj['phone']);
                $this->success('注册成功','day64/cash/index');
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值