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

国科大人工智能原理与算法-2024-第一次作业-雷震老师 1. 反射行动(比如从热炉子上缩回你的手)是理性的吗?它们是智能的吗? 2. 以下的计算机系统在何种程度上是人工智能的实例: - 超市条码扫描器 - 网络搜索引擎 - 语音激活的电话菜单 - 对网络状态动态响应的网络路由算法 3. 为什么进化会倾向于导致行为合理的系统?设计这样的系统想达到的目标是什么? 阅读详情

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

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

实现代码如下:

<!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');
            }
        }
    }
Fiori Elements 从入门到精通开发教程的文章目录 Fiori Elements 开发技术相对 SAP 其他历史悠久,发展成熟的开发技术来说,是一个新事物。正因如此,迄今为止国内深入讲解 Fiori Elements 应用的中文材料几乎没有。 阅读详情

相关推荐

数字后端实现Innovus教程之手把手教你N种高亮timing path和clock tree方法

数字IC后端设计实现Innovus教程之手把手教你N种高亮timing path和clock tree方法

weixin_37584728的博客 3592

TP应用调试

tp、tp钱包、app调试、dapp

情诗的博客 3万+

【Python&RS】哨兵2号(Sentinel2)轨道条带说明+图幅统计(表格+矢量)

今天给大家带来哨兵2号的图幅编号介绍以及全国省、市所需图幅数的统计。网上教程极少,而且结果也不公开。因为每次下载的时候都不知道需要几幅,所以研究后给大家分享一下。

Remote Sensing迷途小书童 1679

在TP 钱包中DApp 绑定团队邀请关系不生效,技术如何解决?

分析发现,造成这个问题的原因是TP钱包会自动修改你的分享链接,添加 UTM 来源参数。带utm参数的链接:https://xxx.com/?属性,这个属性是一个URLSearchParams对象,用于获取URL中的查询参数。这个方法可以把一个URL字符串解析成一个URL对象,我们可以从这个对象中获取到URL的各个部分。不带utm参数的链接:https://xxx.com/#/?方法重新构建URL对象,并返回这个新的URL字符串。中的utm参数去掉,生成新的URL字符串。是参数名,表示要删除的参数名。

weixin_58714964的博客 3795

别再死记硬背了!用Amesim HCD库亲手搭建单向阀、锥阀、球阀模型(附详细参数设置)

本文详细介绍了如何使用Amesim HCD库从零构建单向阀、锥阀和球阀的仿真模型,帮助工程师摆脱死记硬背,掌握物理建模的核心技巧。通过实战案例和参数设置指南,读者将学会如何优化阀门动态响应、验证流量特性以及处理旋转运动等独特挑战,提升液压系统设计效率。

weixin_29248611的博客 499

从“Segmentation fault”到流畅运行:深入解析CARLA Engine crash与Signal 11报错排查指南

本文深入解析了CARLA仿真平台运行时遭遇的Engine crash与Signal 11(Segmentation fault)报错。文章指出,该错误的根本原因常与NVIDIA显卡驱动版本不兼容有关,并提供了从日志分析、常见方案试错到驱动安全降级的完整排查指南,帮助用户从崩溃走向流畅运行。

pca5navigator的博客 462

PHP常用技术(三)之composer使用

安装composer composer使用 composer自动加载说明 如何安装 Composer 下载 Composer 安装前请务必确保已经正确安装了 PHP。打开命令行窗口并执行 php -v 查看是否正确输出版本号。 打开命令行并依次执行下列命令安装最新版本的 Composer: php -r "copy('https://install.phpcomposer.com/inst...

weixin_30551947的博客 203

AOA(Angle of Arrival,到达角)定位算法及其误差分析的原理和MATLAB仿真_aoa定位算法

如图所示,有基站 S 1 ( x 1 , y 1 , z 1 ) , S 2 ( x 2 , y 2 , z 2 ) S_1(x_1,y_1,z_1),S_2(x_2,y_2,z_2) S1​(x1​,y1​,z1​),S2​(x2​,y2​,z2​),目标 T ( x , y , z ) T(x,y,z) T(x,y,z)。2+(z_1-z_2)^2} step1:两基站间的距离L=(x1−x2)2+(y1​−y2​)2+(z1​−z2​)2。

2401_87555613的博客 1482

laravel框架基础知识

一、laravel简介 laravel是一套优雅简介的PHP开发框架,受欢迎程度非常之高,功能强大,工具齐全;以下是本人在学习过程中记录的laravel比较基础的资料,权当学习笔记,请大神们多多指教 二、版本选择 本篇学习笔记以laravel5.2.15版本为框架的版本基础;更多版本请移步https://www.golaravel.com/ 三、laravel下载安装以及开发环境...

1531

自考计算机系统原理(第六章计算机系统概论)-13015

名词解释 I/O 硬件 I/O软件 用户空间I/O软件 内核空间I/O 软件 系统调用处理程序 系统调用服务例程 设备驱动程序 中断服务程序 系统级1/O函数 虚拟文件系统 文件描述符 文件元数据 流缓冲区 索引节点 目录文件 目录项 系统打开文件表 磁盘高速缓存 高速缓存 RAM I / O 控制方式 程序直接控制I/O 就绪状态 中断控制I/O 中断屏蔽字 多重中断 中断嵌套 DMA 方式 DMA 控制器 设备控制器 I/O端口 控制端口 数据端口 状态端口 I/O 地址空间 独立编址方式 统一编址方

qq_23872947的博客 1150

华为OD机试 C++【TLV解析】

这里的valueOffset指的是value在整串消息里的起始位置(从0开始数)。这表示tag是15(十六进制的0F),length是4,接着的8个字符是value的内容。你收到了一串由两端设备传递的TLV格式的消息,现在你需要根据这串消息生成一个对应的(tag, length, valueOffset)列表。tag是15,对应的数据长度为4,value从第3个字节开始,所以偏移量为2。第二行:一个数字n,表示我们给出的tag的数量(0 < n < 1000)。第一行:一串消息,长度不超过10000。

wtswts1232的博客 481

tp5支付宝支付

ThinkPHP5 支付宝支付扩展库, 包括手机网站支付、电脑网站支付、支付查询、退款、退款查询、对账单等。可以在GitHub下载: https://github.com/dream2023/ThinkPHP5-alipay下载下来如下打开application文件夹把common复制到自己项目的application中打开example模块,把Notify.php复制到自己的项目的control...

weixin_42122979的博客 1万+

Jetson 平台编译安装 FFmpeg 7.1(支持 Nvmpi + SRT + x265)

摘要: 本文详细介绍了在NVIDIA Jetson平台上编译FFmpeg 7.1并集成关键功能的全过程。通过补丁方式加入Nvmpi实现硬件加速支持,同时编译集成x265编码器和SRT低延迟传输协议。步骤涵盖:1)安装x265编码器;2)配置SRT协议支持;3)编译jetson-ffmpeg的Nvmpi接口;4)定制化编译FFmpeg 7.1;5)验证模块集成情况。最终实现支持硬件编解码、高效HEVC压缩和可靠推流的增强版FFmpeg,为Jetson平台的音视频处理提供完整解决方案。

J。 345

tp 权限

joker6295的博客 974

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

dapp获取钱包地址,及签名

/ 获取钱包地址//签名。

qq_34874784的博客 1093

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

分层钱包HD钱包

bc1 开头的通常指的是比特币(Bitcoin)的地址,这种格式遵循了比特币改进提案BIP 0173中定义的Bech32编码格式。“分层钱包技术”可能是指比特币的分层确定性钱包(Hierarchical Deterministic Wallets,简称HD Wallets),是一种基于BIP32(Bitcoin Improvement Proposal 32)和BIP44标准的钱包技术。这意味着,只要你有这个种子,你就可以恢复整个钱包的所有地址和私钥,即使是在不同的设备上。

qq_35827483的博客 1381

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

区块链跨链技术调研

一、跨链简述 跨链是指通过技术手段,将原本不同的、独立的区块链上的信息、价值进行交换和流通。狭义上来说是两个相对独立的区块链账本间进行资产互操作(Interoperability)的过程;广义上来说是两个独立的账本间进行资产、数据互操作的过程。 跨链应该理解成一个桥梁或者一个机制,分布式网络是不同的信息孤岛,通过跨链机制不同的桥梁相互连接。 这里读者一定要清楚,跨链并不能提高链本身性能,跨链更多的...

niyuelin1990的博客 1万+

tp5之 支付宝wappay手机网站支付

沙箱环境 支付(当面付教程),参考下面这个可以配置环境 https://blog.youkuaiyun.com/a639735331/article/details/92847337 参考下面这个可以做 wappay 的支付 ThinkPHP5.0集成支付宝扫码支付(PC端) https://blog.youkuaiyun.com/msllws/article/details/84334127 简洁 TP5....

qq_39835505的博客 8776

DApp浏览器交互环境

的全局API,可以:请求连接账户、获取用户连接的链的数据(如交易后的返回值和事件)、以及显示用户对交易的签名状态。注意:由于交易的 nonce 机制,当我们重启了私链后,可能会出现冲突,导致交易阻塞,我们需要在设置-高级设置-重置账户。添加了新的链的元数据后,用户就可以切换到不同的链。的方法获取地址,返回 promise, 只有一个十六进制地址的元素的字符数组,如果用户拒绝,返回。此时,前端也无法接受节点的请求,需要重新建立连接后,重载页面。是只有一个元素的数组或者是空数组,数组的元素是字符串形式的地址。

JackieDYH的博客 1906

STM32 ---- 02 再次学习32,常用算法,环境配置细节

再次学习STM32标准库,ADC、DMA、UART、I2C等

prppr_的博客 1537

Trustwallet/ImToken/MetaMask小狐狸/TP钱包系统开发教程步骤及详细

2. **多链支持:** 支持多种主流区块链网络,如以太坊、比特币、波卡等,以满足用户不同数字资产的管理需求。3. **安全性:** 实现钱包的安全保护机制,包括私钥加密存储、多重签名、生物识别等,确保用户资产的安全。10. **定制化设置:** 提供个性化的设置选项,让用户可以根据自己的喜好进行钱包界面和功能的定制。1. **钱包功能:** 实现钱包的基本功能,包括生成/导入钱包、查看余额、转账、收款等。

deitly123的博客 1万+

TP 钱包插件版本的使用

介绍TP(TokenPocket)钱包的插件版本安装,助记词、密码恢复

weixin_t1452030的博客 6万+

tp集成支付宝担保支付

现在的网站功能越来越全乎了,很多网站都需要做支付功能,而且很多大平台都提供了各式各样的api来扩充自己的用户和开发者。话说,这种使用大平台的api来做支付,无论是从成本上还是从开发效率上都是很好的选择。今儿我就来念叨念叨怎么集成支付宝的api,其实想写关于支付的文章已经很久了,哎~,就是有点儿小忙,趁着9月的最后一天,随便码点儿字吧。 一、支付宝担保支付 支付宝的ap...

weixin_33725270的博客 199

264.6万美元!探寻天价ETH手续费背后的安全问题

近期,以太坊上接连出现了三笔手续费用异常的交易,引发热议。这3笔交易的金额都不大,但是设置的手续费却高得离谱,最高的交易手续费用竟然高达264.6万美元!今天,我们就从这些异常交易入手,分析并解答以太坊交易手续费的相关问题。 手续费为何存在?为了给予节点和矿工足够的补偿和激励,同时也为了阻止大量的微量、垃圾交易,用户在进行以太坊上交易时必须支付一定的手续费用,否则将无法完成交易操作。 手续费是如何计算的 以太坊上的手续费又称为Gas,燃气,即交易中消耗...

weixin_42602194的博客 3542

web3的一些基本应用

web3

hgm18359210648的博客 1090

多签名钱包

相交于硬件钱包的物理上丢失和密钥遗忘,多签名钱包在保证安全不易被破解的基础上,解决了部分密钥丢失的问题。相比于BTC之前讲到的脚本钱包(BTC—脚本),ETH的多签钱包设计可以通过智能合约来实现。

Hock2023的博客 8372
上一篇: tp5邮箱发送
下一篇: 银行卡数据展示、提现、短信、图片验证、Ajax分页
stringQiang
博客等级 码龄5年 36粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值