1、登录后若用户未设置支付密码,且该用户零钱余额大于0,则进入app首页时进行设置支付密码提醒;

2、支付密码的设置与错误提醒同之前支付密码设置流程;

3、点击下方不在提醒,则不在弹出此弹窗;

4、点击取消,则在点击取消按钮第二天00:00开始计算,7天后的第一次登录则重新在用户进入app首页时出现此弹窗(无论此时用户零钱余额是否大于0都要提醒);

5、用户设置支付密码成功,吐司提示“设置成功”;

设置支付密码规则:

1、不要和登录密码一致(提示文案:不要和登录密码一致);

2、连续数字,重复数字不可设置(提示文案:支付密码过于简单);

3、用户设置支付密码,点击确定判断是否属于上面两种情况,若属于则进行拦截,并在“再次输入支付密码”文案后显示相应提示;

连续数字定义:

密码中数字连续递增或递减,如:012345,987654;

重复数字定义:

密码六位数字完全相同,如:111111;

1、输入支付密码的弹窗,如果第一次输入错误则弹出“重试/忘记密码”弹窗,点击重试返回输入支付密码弹窗,点击忘记密码进入验证码输入弹窗;

2、验证码5分钟有效,若验证码弹窗中验证码输入错误,则提示输入错误,并清空输入框;

3、若重试超过五次,则将重试按钮换成返回,提示文案如原型,点击返回关闭输入支付密码弹窗,并在五分钟内用户再次有付款的动作,拦截用户并做出同样的弹窗提示,五分中后点击用户再次有支付动作时可输入支付密码;

4、若五分钟后第六次输入错误,则弹窗中已错误次数变为“6”次,重试时间变为“10”分钟。以此类推,“7”次——“30”分钟,“8”次——“1小时”,“9”次——“24”小时,此后每次输入错误加“24小时”;

5、该试错拦截流程同样适用于登录流程,若密码错误5次以上,吐司提示“密码已输错5次,请5分钟后重试”五分钟内用户再次点击登录,做出相同的提示,五分钟后可正常登录,若用户再次输入错误,则参考Note4中的规则对用户予以提示;

6、用户如果成功登录一次,则再次登录时,试错流程刷新,重新开始记录输入错误次数;

 /*** @title 判断是否可以设置支付密码--弹出设置支付密码弹窗* @return {"status":"0","errorCode":"0","msg":"成功","result":true}* @example PaySet.isSetPayPasswd? 调用参数:{"method":"PaySet.isSetPayPasswd","username":"17721355111","check_code":"123456"}* @return_param_explain result:true弹出、false不弹出* @method POST* @author 邹柯*/public function isSetPayPasswd(){/** 1、登录后若用户未设置支付密码,且该用户零钱余额大于0,则进入app首页时进行设置支付密码提醒;* 2、点击取消,则在点击取消按钮第二天00:00开始计算,7天后的第一次登录则重新在用户进入app首页时出现此弹窗(无论此时用户零钱余额是否大于0都要提醒)*/$user_id=session('user.user_id');if(empty($user_id)){return false;}$customer = M('customer');$c_where['user_id']=$user_id;$c_info = $customer->where($c_where)->field('balance,securitycode')->find();$pps_info=$this->isLoginTime($user_id);if(empty($c_info['securitycode']) && $c_info['balance']> 0 && $pps_info==true){return true;}return false;}//判断登录时间public function isLoginTime($user_id){$pay_passwd_set=M('pay_passwd_set');$pps_where['user_id']=$user_id;$pps_where['type']=1;$pps_info=$pay_passwd_set->field('status,update_time')->where($pps_where)->find();if(empty($pps_info)){return true;}$dat=$pps_info['update_time'];$date=date("Y-m-d 00:00:00",strtotime("$dat +1day"));$time=date("Y-m-d H:i:s",strtotime( "$date +8day"));$now_time=date("Y-m-d H:i:s",time());if($pps_info['status']==1 && ($now_time > $time)){return true;}return false;}/*** @title 设置支付密码--不再提醒* @param status 是 int 是否再次提醒(1取消、2不在提醒)* @return {"status":"0","errorCode":"0","msg":"成功","result":true}* @example PaySet.setNotice? 调用参数:{"method":"PaySet.setNotice","username":"17721355111","check_code":"123456","status":"1"}* @method POST* @author 邹柯*/public function setNotice($res){$user_id=session('user.user_id');if(empty($user_id)){return true;}$status=$res['status'];$time=date("Y-m-d H:i:s",time());$pay_passwd_set=M('pay_passwd_set');$pps_where['user_id']=$user_id;$pps_where['type']=1;$pps_info=$pay_passwd_set->field('status,update_time')->where($pps_where)->find();if(empty($pps_info)){$pps_data=['user_id'=>$user_id,'status'=>$status,'update_time'=>$time,'type'=>1,];$res=$pay_passwd_set->data($pps_data)->add();}else{$pps_data=['status'=>$status,'update_time'=>$time];$pps_where['user_id']=$user_id;$pps_where['type']=1;$res=$pay_passwd_set->data($pps_data)->where($pps_where)->save();}if(!$res){E("10001","设置失败");}return true;}//密码设置规则//1、不要和登录密码一致;//2、连续数字,重复数字不可设置;public function setPasswdRule($user_id,$securitycode){//先判断是否和登录密码一致$user=M('user');$u_where['user_id']=$user_id;$user_info=$user->field('password')->where($u_where)->find();if(md5($securitycode)==$user_info['password']){return array("status"=>1,"msg"=>"不要和登录密码一致","result"=>null);}//判断是否是重复数字$securitycode_array=str_split($securitycode);if (1 == count(array_unique($securitycode_array))) {return array("status"=>1,"msg"=>"支付密码过于简单","result"=>null);}//判断是否是连续数字$res=$this->getconsecutive($securitycode_array,6);if($res==false){return array("status"=>1,"msg"=>"支付密码过于简单","result"=>null);}return true;}//判断是否是连续数字public function getconsecutive($arr,$n){$temp = array();foreach($arr as $k =>$v){while($k<$n){$temp[$k] = $v+$k; $k++;}$arr_str=implode(",",$arr);$temp_str=implode(",",$temp);if($arr_str===$temp_str){return false;}return true;}}   //支付时输入支付密码错误的处理//$type 1支付密码 2登录密码public function tipByPayPasswdError($user_id,$type){//更新输入错误的次数$pay_passwd_set=M('pay_passwd_set');if($type==2){$user=M('user');$u_where['username']=$user_id;$user_info=$user->field('user_id')->where($u_where)->find();$user_id=$user_info['user_id'];}$pps_where['user_id']=$user_id;$pps_where['type']=$type;$count=$pay_passwd_set->where($pps_where)->count();if($count <= 0){$time=date("Y-m-d H:i:s",time());$pps_data=['user_id'=>$user_id,'status'=>1,'update_time'=>$time,'type'=>$type];$pay_passwd_set->data($pps_data)->add();}$pay_passwd_set->where($pps_where)->setInc("pay_passwd_nums",1);//查询总共输错的次数$pps_info=$pay_passwd_set->where($pps_where)->getField("pay_passwd_nums");/** 若五分钟后第六次输入错误,则弹窗中已错误次数变为“6”次,重试时间变为“10”分钟。* 以此类推,“7”次——“30”分钟,“8”次——“1小时”,“9”次——“24”小时,此后每次输入错误加“24小时”;*/if($pps_info>=5){switch($pps_info){case 5:$time="5分钟";$repay_time=date("Y-m-d H:i:s",strtotime("+5 minute"));break;case 6:$time="10分钟";$repay_time=date("Y-m-d H:i:s",strtotime("+10 minute"));break;case 7:$time="30分钟";$repay_time=date("Y-m-d H:i:s",strtotime("+30 minute"));break;case 8:$time="1小时";$repay_time=date("Y-m-d H:i:s",strtotime("+1 hour"));break;default:if($pps_info>=9){$n=$pps_info-8;}$last=$n*24;$time=$last."小时";$repay_time=date("Y-m-d H:i:s",strtotime("+$last hour"));break;}//更新可以再次输入支付密码的时间$pay_passwd_set->where($pps_where)->data(["repay_time"=>$repay_time])->save();if($type==1){$msg="支付密码输入不正确,已错误".$pps_info."次,请点击忘记密码进行找回或".$time."后重试";}else{$msg="密码已输错".$pps_info."次,请".$time."后重试";}return array("status"=>1,"errorCode"=>"105", "msg"=>$msg,"result"=>null);}return true;}//支付密码输入成功,更新支付密码输入错误次数为0//$type 1支付密码 2登录密码public function setPayPasswdNums($user_id,$type){$pay_passwd_set=M('pay_passwd_set');if($type==2){$user=M('user');$u_where['username']=$user_id;$user_info=$user->field('user_id')->where($u_where)->find();$user_id=$user_info['user_id'];}$pps_where['user_id']=$user_id;$pps_where['type']=$type;$pps_data=['pay_passwd_nums'=>0,'update_time'=>date("Y-m-d H:i:s"),'repay_time'=>date("Y-m-d H:i:s")];$pay_passwd_set->where($pps_where)->data($pps_data)->save();return true;}

CREATE TABLE `lc_pay_passwd_set` (`id` int(11) NOT NULL AUTO_INCREMENT,`user_id` bigint(20) DEFAULT NULL COMMENT '用户id',`status` tinyint(1) DEFAULT NULL COMMENT '提醒状态(1取消、2不在提醒)',`update_time` datetime DEFAULT NULL COMMENT '更新时间',`pay_passwd_nums` int(2) NOT NULL DEFAULT '0' COMMENT '支付密码输入次数',`repay_time` datetime DEFAULT NULL COMMENT '再次可以输入的时间',`type` tinyint(1) DEFAULT NULL COMMENT '输入密码类型(1-支付密码、2登录密码)',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COMMENT='支付密码设置--提醒';

转载于:https://www.cnblogs.com/zouke1220/p/9288929.html

支付密码设置和登录密码设置相关推荐

  1. 交换机的相关配置---设置终端登录密码和恢复出厂设置的实验操作

    交换机的相关配置-设置终端登录密码和恢复出厂设置的实验操作 实验操作要求: 1.为交换机lsw1设置终端登录密码Taren1,退出终端重进以验证登录效果 2.恢复出厂设置,重新进入后观察设备名变化 具 ...

  2. Win11系统怎么取消登录密码 Win11取消登录密码图文教程

    虽然很多用户升级了Win11系统,但是和Win10系统一样,如果电脑设置了密码之后,每次开机还是需要输入密码才能进入桌面.我们设置密码是为了防止陌生人开机就可以进入桌面,但是自己每次进入桌面也要输入密 ...

  3. wordpress mysql 密码重置_WordPress登录密码找回办法之修改数据库篇 | Wopus

    找回WordPress控制台登录密码的方式有很多,今天Wopus分享的是通过修改数据库对应用户的密码MD5值来找回WordPress密码. 首先,您需要您的主机如果登录进入phpmyadmin,这一步 ...

  4. 百度云(主机管理密码、FTP登录密码、MySQL账号密码)配置 - 入口篇

    百度云(如何进入)主机控制面板 ?如何设置FTP密码.管理员密码.数据库密码? 一.控制面板入口 第一步: 入口·点击访问入口地址 第二步:访问入口地址 第三步:设置FTP密码 完成. 二.FTP密码 ...

  5. 修改登录ftp服务器时用的密码,ftp服务器登录密码修改

    ftp服务器登录密码修改 内容精选 换一换 本文介绍如何在裸金属服务器操作系统内部修改登录密码.建议优先在控制台上重置密码,如果不可以,再尝试在操作系统内部修改登录密码.此处以CentOS 7.5版本 ...

  6. sysdba 默认密码_干货分享|DM数据库密码策略和登录限制设置

    在数据库的用户安全中,口令复杂度策略和资源限制是用户安全重要的一部分.在DM数据库中,口令策略分为系统口令策略和用户口令策略.只有安全版本才支持对每个用户设置口令策略(即用户口令策略),非安全版本,只 ...

  7. 虚拟服务器设置取消登录密码,取消windows 2008开机密码实现自动登陆的几种方法...

    方法一: Windows Server2008作为微软服务器家族操作系统,在启动时沿用了必须按Ctrl+Alt+Delete组合键确认才可登录,给部分网管带来了不小的麻 烦.可不可以禁用呢?其实自动登 ...

  8. 设置思科设备console密码、enable密码、vty登录密码

    思科设备各级密码: 1)  console密码 SW2(config)#line console 0 SW2(config-line)#password cisco SW2(config-line)# ...

  9. 计算机创建管理员用户名和密码,如何给电脑设置管理员登录密码?

    关于个人电脑的管理,无论是办公室单位的个人电脑或者家里个人使用的电脑,很多人都不是很喜欢别人随便的打开自己电脑随意的查看东西或者有一些东西不希望别人查看!那么这个时候我们就需要采取一些方法来防止别人随 ...

最新文章

  1. 5G对AIoT的作用并无夸大,最大价值在于融合
  2. php include request 区别
  3. ubuntu nano用法
  4. c++ 纯虚函数和抽象类那些事(二)实现抽象类
  5. 用redis构建分布式锁
  6. 2021年第十二届蓝桥杯 - 省赛 - C/C++大学A组 - D.路径
  7. android log显示
  8. 算法之美 : 位运算
  9. 【转】UML基础: 第1部分 - 类图 (Class Diagram)
  10. 通信原理-数字基带传输
  11. 自主安全国产虚拟化平台CNware
  12. 禁止Solaris系统不必要的网络服务
  13. 科创板第二批受理名单公布,为何AI独角兽 “全军覆没”?...
  14. 小水智能-智慧工地与传统工地相比,数字科技赋予了以下三大优势
  15. 洛谷-P1428 小鱼比可爱
  16. 【OWASP TOP10】2021全球十大常见安全漏洞
  17. 安卓4.4和6.0系统wifi开关设置
  18. #11.11 个人排位赛round2_A.Diana and Liana(CodeForces 1121D)
  19. 删除数组中的重复项(保留最后一次出现的重复元素并保证数组的原有顺序)
  20. Windows10安装配置Rime双拼输入法

热门文章

  1. 阿瑶的vue学习笔记(1)Vue核心
  2. jQuery练习——下拉菜单
  3. python爬取天天基金_Python爬取天天基金网历史净值数据
  4. windows ssh密钥_如何通过Windows从密钥转发进行SSH Hop
  5. mysql有高水位线吗_Oracle中高水位线(HWM)
  6. 实验三通过实验楼进行Ubuntu Linux的使用
  7. twitter邮箱没反应_Twitter:灯亮了,但是没人在家
  8. 绿色数据中心的建设深层概述
  9. 游戏修改器制作-黑客入门
  10. 【计算机网络】0基础学习IP协议