微信小程序短信验证码-短信验证码

news2024/11/19 13:35:11

 今天做小程序,遇到了短信验证码,所以就总结一下:

我今天也是第一次微信短信验证码, 做完发现真的好简单.但是要找对方向和步骤,不然还是需要费点时间.

 废话不多说,看步骤

   第一: ui给到界面图,先排好界面

   第二: 看开发购买短信服务, 可以去阿里 ,腾讯 ,华为....好多短信服务的企业,我就不列举了,我买的是阿里的,因为我的服务器就是阿里的,所以就买的一个阿里的

   第三: 说买其实也没有花钱,他有一个100免费测试版,我们去阿里注册完成之后,就可以购买一个100条短信测试版

 在搜索框中搜索 : 短信服务

 这里有一个免费开通

   

按照他的步骤即可完成免费开通测试版 记住只有100条

    第四:  

       开通好了之后,就需要完成一些列的申请/认证操作,如果不会的话,可以问客服,阿里的客服还是可以的,我第一次做的时候就是打了很多电话,问了很多客服.

    第五:  线上测试一下,绑定测试手机号,完成测试

接下来要改的地方就两个,第一个就是自己买的服务器,第二个就是要发的验证号码

接下来就是要获取sdk,其实就是accesskey

完成之后,开始后端编写,我这里就用node做后端,其实Java是一样的.

node:

const Core = require('@alicloud/pop-core'); // 需要一个阿里的插件
// 配置信息  
const client = new Core({
  accessKeyId: '自己的sdkid',
  accessKeySecret: '自己的sdk密码',
  endpoint: 'https://dysmsapi.aliyuncs.com', // 固定不动,写死的
  apiVersion: '2017-05-25' // 固定不动,写死的
});

// 短信模板ID和签名名称,这些需要在阿里云短信服务控制台创建  
const templateId = '这个是短信模板的code';
const signName = '这个是短信模板的name';

//验证码产生的方法 定义一个生成验证码的方法
function zymcode() {
  let str = ""
  for (let i = 0; i < 6; i++) {
    str += Math.floor(Math.random() * 10)
  }
  return str
}



//发送验证码的方法
// 发送短信验证码  
async function sendSmsVerificationCode(phoneNumber, code) {
  try {
    // 构建请求参数  
    const params = {
      PhoneNumbers: phoneNumber,
      SignName: signName,
      TemplateCode: templateId,
      TemplateParam: JSON.stringify({ "code": code }) // 根据你的模板格式,替换相应的参数  
    };
    // 发送短信请求  
    const response = await client.request('SendSms', params);
    if (response && response.Code === 'OK') {
      console.log('短信发送成功');
      return true;
    } else {
      console.error('短信发送失败:', response);
      return false;
    }
  } catch (err) {
    console.error('发送短信时发生错误:', err);
    return false;
  }
}

//验证码接口方法
router.post("/yzm", (req, res) => {
  // console.log("验证码进来");
  //获取手机号
  let tel = req.body.tele
  // 接收短信的手机号码和验证码  
  const phoneNumbers = tel;
  const code = zymcode();
  let rr = sendSmsVerificationCode(phoneNumbers, code)

  if (rr) {
    res.send({
      code: 200,
      message: "暂无数据",
      data: {
        yzm: code
      }
    })
  } else {
    res.send({
      code: 401,
      message: "验证码发送失败",
      data: {}
    })
  }
})

前端代码:

<view class="logincontent">
				<u--form labelPosition="left" :model="obj" :rules="rules" ref="uForm" class="formbox">
					<u-form-item prop="tele" borderBottom ref="item1">
						<u--input placeholder="请输入手机号码" prefixIcon="phone-fill"
							prefixIconStyle="font-size: 22px;color: #909399" v-model="obj.tele"
							border="none"></u--input>
					</u-form-item>
					<u-form-item prop="yzm" borderBottom>
						<!-- 注意:由于兼容性差异,如果需要使用前后插槽,nvue下需使用u--input,非nvue下需使用u-input -->
						<!-- #ifndef APP-NVUE -->
						<u-input placeholder="请输入验证码" border="none" prefixIcon="lock-fill"
							prefixIconStyle="font-size: 22px;color: #909399" v-model="obj.yzm">
						<!-- #endif -->
							<!-- #ifdef APP-NVUE -->
							<u--input placeholder="请输入验证码" border="none" prefixIcon="lock-fill"
								prefixIconStyle="font-size: 22px;color: #909399" v-model="obj.yzm">
							<!-- #endif -->
								<template slot="suffix">
									<u-code ref="uCode" @change="codeChange" seconds="60" changeText="X秒重新获取"></u-code>
									<u-button @tap="getCode" :text="tips" type="success" size="mini"></u-button>
								</template>
						<!-- #ifndef APP-NVUE -->
						</u-input>
						<!-- #endif -->
						<!-- #ifdef APP-NVUE -->
						</u--input>
						<!-- #endif -->

					</u-form-item>

				</u--form>
				<u-button type="primary" @click="gotoLogin" class="cccccc">登录</u-button>
				<u-button type="primary" @click="gotoRegister" class="cccccc">注册</u-button>
			</view>

这样就完事了 ,很简单!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1525495.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

贪心算法(算法竞赛、蓝桥杯)--线段覆盖

1、B站视频链接&#xff1a;A29 贪心算法 P1803 线段覆盖_哔哩哔哩_bilibili 题目链接&#xff1a;凌乱的yyy / 线段覆盖 - 洛谷 #include <bits/stdc.h> using namespace std;struct line{int l,r;bool operator<(line &b){return r<b.r;//重载小于号,按右端…

​​​​​​​【IEEE列表会议|大咖云集】沈阳航空航天大学主办,几十位重磅专家的NGDN 2024诚邀您4月沈阳相聚!

【IEEE列表会议|大咖云集】 沈阳航空航天大学主办&#xff0c;几十位重磅专家的NGDN 2024诚邀您4月沈阳相聚&#xff01; 基于前几届在英国埃克塞特 (ISPA 2020) 、中国沈阳 (TrustCom 2021) 和中国武汉 (IEEETrustCom-2022)成功举办的经验&#xff0c;第六届下一代数据驱动网…

关于安卓USB开发(一)文件复制,文件夹创建

背景 在安卓应用中&#xff0c;把某个文件&#xff0c;复制到插入的U盘中 开发环境 win10,jdk8,as4 测试机型 红米Note11&#xff0c;android13 源码问题 文末将会提供博主整合好的源码项目连接&#xff0c;以供学习交流 注意 本次实战&#xff0c;u盘格式是fat32&…

呼市经开区建设服务项目水、电能耗监测 数采案例

呼市经开区建设服务项目水、电能耗监测数采案例 一、项目背景及需求 项目地点位于内蒙古呼和浩特市&#xff0c;呼市数字经开区建设服务项目。属于企业用能数据采集、能耗监测板块子项目。 针对水、电能耗数据采集&#xff0c;结合现场客观因素制约&#xff0c;数据采集方面存…

onecloud刷CasaOS系统后如何安装内网穿透实现公网访问本地文件

文章目录 1. CasaOS系统介绍2. 内网穿透安装3. 创建远程连接公网地址4. 创建固定公网地址远程访问 2月底&#xff0c;玩客云APP正式停止运营&#xff0c;不再提供上传、云添加功能。3月初&#xff0c;有用户进行了测试&#xff0c;局域网内的各种服务还能继续使用&#xff0c;但…

【系统架构师】-第19章-大数据架构设计理论与实践

四个特点&#xff1a; 大规模&#xff08;Volume&#xff09;、高速度&#xff08;Velocity&#xff09;和多样化&#xff08;Variety&#xff09;&#xff0c;价值&#xff08;Value&#xff09;。 五个问题&#xff1a; 异构性&#xff08;Heterogeneity&#xff09;、规模…

如何高效接入 Flink: Connecter / Catalog API 核心设计与社区进展

本文整理自阿里云实时计算团队 Apache Flink Committer 和 PMC Member 任庆盛在 FFA 2023 核心技术专场&#xff08;二&#xff09;中的分享&#xff0c;内容主要分为以下四部分&#xff1a; Source APISink API将 Connecter 集成至 Table /SQL APICatalog API 在正式介绍这些 …

安全工程师说telnet

啥是telnet telnet 命令通常用来远程登录。 telnet 程序是基于 TELNET 协议的远程登录客户端程序。Telnet 协议是 TCP/IP 协议族中的一员&#xff0c;是 Internet 远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的 能力。在终端使用者的电…

如何快速接入Claude 3 haiku这款Claude3系列中最经济快速的模型?

3 月 4 日&#xff0c;被称为 OpenAI 最强竞争对手的大模型公司 Anthropic 宣布推出 Claude3 系列模型&#xff0c;与 Gemini 类似&#xff0c;模型按照大小分为三个&#xff1a;Claude 3 Haiku、Claude 3 Sonnet 和 Claude 3 Opus。Opus 目前在官方发布的测试成绩中全方位超越…

NeRF——基于神经辐射场的三维场景重建和理解

概述 三维重建是一种将物理世界中的实体转换为数字模型的计算机技术。其基本概念是通过对物理世界中的物体或场景进行扫描或拍摄&#xff0c;并使用计算机算法将其转换为三维数字模型。抽象意义上的三维模型指的是&#xff1a;形状和外观的组合&#xff0c;并且可以渲染成不同…

ClickHouse中的设置的分类

ClickHouse中的各种设置 ClickHouse中的设置有几百个&#xff0c;下面对这些设置做了一个简单的分类。

【STC8A8K64D4开发板】第2-16讲:可编程计数器阵列PCA

第2-16讲&#xff1a;可编程计数器阵列PCA 学习目的掌握STC8A8K64D4系列PCA可编程计数器阵列的原理。掌握4个PCA外设相关寄存器配置及程序设计。 PCA概述 PCA全称是可编程计数器阵列&#xff08;Programable Counter Array&#xff09;&#xff0c;其中P表示可以编程控制、C表…

iTOP-3A5000主板龙芯自主指令系统 (LoongArch)的LA464微结构

性能强 采用全国产龙芯3A5000处理器&#xff0c;基于龙芯自主指令系统 (LoongArch)的LA464微结构&#xff0c;并进一步提升频率&#xff0c;降低功耗&#xff0c;优化性能。 桥片 采用龙芯 7A2000&#xff0c;支持PCIE 3.0、USB 3.0和 SATA 3.0.显示接口2 路、HDMI 和1路 VGA&…

【PyTorch】成功解决TypeError: iteration over a 0-d tensor

【PyTorch】成功解决TypeError: iteration over a 0-d tensor &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望得到您…

【CSS】Vue2使用TailwindCSS方法及相关问题

一.安装 1.npm安装TailwindCSS npm install tailwindcssnpm:tailwindcss/postcss7-compat tailwindcss/postcss7-compat postcss^7 autoprefixer^9 2.创建配置文件 npx tailwindcss init 3.创建postcss.config.js文件 // postcss.config.js module.exports {plugins: {t…

网络统一监控运维管理解决方案

网络统一监控运维管理解决方案 1. 构建完善的网络运维体系&#xff1a;通过组织、流程、制度的完善、支撑手段的建设&#xff0c;构建低成本高效率的IT运营体系&#xff0c;推动IT运营工作自动化、智能化、一体化化发展。 2. 构建网络一体化监控能力&#xff1a;构建从设备、数…

C++ 万物起源:类与对象(一)

目录 一、C与C语言的区别 1.1类的引入 二、C类 2.1类的概念与定义 2.2类的访问限定符与封装 2.2.1C中struct和class的区别 2.3封装 2.4类的作用域与实例化 三、类对象模型 3.1类对象的存储模式 3.2结构体内存对齐规则 一、C与C语言的区别 C语言是面向过程的&#xf…

刚刚!3.15晚会点名AI换脸诈骗,曝光主板机黑产,2000元成本可20部手机同时发布

1991 年 3 月 15 日&#xff0c;「消费者之友专题晚会」登上央视的大荧屏&#xff0c;从那一年开始&#xff0c;「3.15 晚会」就成为了像春节联欢晚会一样的固定节目&#xff0c;同样聚集了亿万国人的关注。多年来&#xff0c;围绕老百姓衣食住行方方面面&#xff0c;无数家企业…

AWTK slider_circle 控件发布

slider_circle 控件。 主要特色&#xff1a; 支持正向和反向支持设置滑块的半径支持背景线宽和颜色支持前景线宽和颜色支持设置是否显示值的文本支持设置起始角度和结束角度支持设置格式化值的格式字符串支持使用图片填充背景和前景 界面效果&#xff1a; 注意&#xff1a; …

Android FrameWork 学习路线

目录 前言 学习路线&#xff1a; 1.基础知识 2、AOSP 源码学习 3. AOSP 源码编译系统 4. Hal与硬件服务 5.基础组件 6. Binder 7. 系统启动过程分析 8. 应用层框架​编辑 9. 显示系统 10. Android 输入系统 11. 系统应用 前言 Android Framework 涉及的行业相当广…