本文介绍在案例云开通短信服务的流程以及在Node项目中使用的方法。

一、开通阿里云短信服务

登陆阿里云,然后进入 https://dysms.console.aliyun.com/dysms.htm 。

选择国内消息,在“签名管理”里添加签名,获取 SignName;在“模板管理”里添加模板,获得 TemplateCode 。

二、获取 AccessKey

要调用短信服务,需要通过 AccessKey 鉴权。登陆阿里云,进入 https://usercenter.console.aliyun.com/ ,创建 AccessKey,得到 accessKeyId 和 accessKeySecret 。

三、费用支付

短信服务是收费的,可以按发送次数计费,也可以购买套餐。跟手机用户向联通移动付费的方式相似,会在月底出账单,欠费的话会停掉短信服务。

为避免欠费,可以在阿里云帐户内存入一定余额。进入 https://usercenter2.aliyun.com/home 查看:

四、Node调用

@alicloud/pop-core 是阿里提供的核心库,需要在项目中引入:

npm install @alicloud/pop-core -S

下面是 sms.js 示例代码,其中 SignName / TemplateCode / accessKeyId / accessKeySecret 都要从阿里云获取,请替换为实际值。

/**
* sms.send(手机号) 发送短信验证码
* sms.verify(手机号,验证码) 校验验证码是否正确
**/ const Core = require('@alicloud/pop-core');
const _ = require('lodash'); // 阿里云控制台 - 短信服务 - 国内消息
const SignName = "东方网络";
const TemplateCode = "SMS_123456"; // https://usercenter.console.aliyun.com/
const accessKeyId = "ljksdhfjklJKGKGKJHK";
const accessKeySecret = "HKAJSHDIU90800980jkahsd"; var client = new Core({
accessKeyId,
accessKeySecret,
endpoint: 'https://dysmsapi.aliyuncs.com',
apiVersion: '2017-05-25'
}); // 保存手机号和验证码的对应关系
// phone_code_list = {'18855551234':['1024']}
var phone_code_list = {}; exports.send = function(phone) {
// 生成验证码
var code = "" + _.random(9) + _.random(9) + _.random(9) + _.random(9);
return new Promise((resolve, reject) => {
try {
client.request('SendSms', {
RegionId: "cn-hangzhou",
PhoneNumbers: phone,
SignName,
TemplateCode,
TemplateParam: "{code:" + code + "}"
}, {
method: 'POST'
}).then((result) => {
if (result.Message && result.Message == "OK" && result.Code && result.Code == "OK") { // 短信发送成功
// 保存验证码
if (phone_code_list[phone]) {
phone_code_list[phone].push(code);
} else {
phone_code_list[phone] = [code];
}
// 三分钟后删除验证码
setTimeout(() => {
_.pull(phone_code_list[phone], code);
if (phone_code_list[phone] && phone_code_list[phone].length == 0) {
delete phone_code_list[phone];
}
}, 3 * 60 * 1000)
resolve(result)
} else {
reject(result)
}
}, (ex) => {
reject(ex)
})
} catch (error) {
reject(error)
}
})
} exports.verify = function(phone, code) {
return (phone_code_list[phone].indexOf(code) > -1)
}

调用方式参考:

const sms = require("./util/sms.js")

// 发送验证码
sms.send("18855551234").then((result) => {
console.log("短信发送成功")
console.log(result)
}, (ex) => {
console.log("短信发送失败")
console.log(ex)
}); // 校验用户提交的验证码
var isCodeRight = sms.verify("18855551234","0000"); // 返回true/false

  

Node 接入阿里云实现短信验证码的更多相关文章

  1. 阿里云发送短信验证码php_SDK

    1.登录阿里云账号下载——aliyun-dysms-php-sdk(我使用的php版本) 下载地址:https://help.aliyun.com/document_detail/55359.html ...

  2. php 阿里云短信服务及阿里大鱼实现短信验证码的发送

    一:使用阿里云的短信服务 ① 申请短信签名 ②申请短信模板 ③创建Access Key,获取AccessKeyId 与 AccessKeySecret.(为了安全起见,这里建议使用子用户的Access ...

  3. php 阿里云国内短信实例

    调用:先去阿里云申请短信服务 $smsArr = array( "accessKeyId" => "", // key "accessKeySe ...

  4. Java版阿里云通信短信发送API接口实例(新)

    阿里云通信(原名阿里大于)的短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力,支持快速发送短信验证码.短信通知等. 完美支撑双11期间2亿用户,发送6亿短信 ...

  5. golang sms阿里云发送短信(公司实际项目)

    话不多说,直接上代码!!! 要先下载两个包 (可以go get -u +你想要的包) github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests githu ...

  6. 云平台短信验证码通知短信java/php/.net开发实现

    一.本文目的 大部分平台都有一个接入发送短信验证码.通知短信的需求.虽然市场上大部分平台的接口都只是一个非常普通的HTTP-GET请求,但终归有需要学习和借鉴使用的朋友. 本文的初衷是主要提供学习便利 ...

  7. java接入创蓝253短信验证码

    说明 项目是springboot框架 1.短信配置文件 包含验证码发送路径.用户名.密码 chuanglan.requesturl= chuanglan.account= chuanglan.pswd ...

  8. Java加腾讯云实现短信验证码功能

    一.概要 现如今在日常工作和生活中短信验证码对于我们来说是非常熟悉的,比较常见的注册账号或者交易支付时候,手机会收到一个短信验证码,我们可以通过验证码来有效验证身份,避免一些信息被盗. 验证身份 目前 ...

  9. Python2-Django配置阿里大于的短信验证码接口

    1.短信发送开发指南地址:https://help.aliyun.com/document_detail/55491.html?spm=a2c4g.11186623.6.568.l5zTwH 2.SD ...

随机推荐

  1. Day20-tomcat

    tomcat 一.Java及tomcat简介 二.安装JDK及tomcat 1.安装jdk 安装jdk很简单,首先下载网上的jdk安装包,我这边下载的是jdk-8u221-linux-x64.tar. ...

  2. 《深入理解 Java 虚拟机》读书笔记:线程安全与锁优化

    正文 一.线程安全 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那 ...

  3. codeforces 466c(暴力枚举)

    题目链接 思路如下 *题意: 给定一个序列,问有多少种方案可以将此序列分割成3个序列元素和完全相同的子序列.(子序列不能为空).即问有多少个点对(i,j)满足a[1]+-+a[i-1]=a[i]+a[ ...

  4. linux被当矿机排查案例

    1.发现服务器变的特别卡,正常服务运行很慢. 到服务器上查询一番发现top下发现     bashd的进程占用100%CPU了. find /-name bashd* //第一次查询文件占用目录kil ...

  5. postman 工具接口测试

    一.get:请求多个参数时,需要用&连接 eg:http://api.***.cn/api/user/stu_info?stu_name=小黑&set=女   eg:接口请求参数放在b ...

  6. 基于 HTML5 WebGL 的楼宇智能化集成系统(三)

    前言       2018年7月,信息化部印发了<工业互联网平台建设及推广指南>和<工业互联网平台评价方法>,掀起了 工业互联网 的浪潮,并成为热词写入了报告中.同为信息发展下 ...

  7. Struts2-学习笔记系列(4)-访问servlet api

    5.1通过actioncontext: public String execute() throws Exception { ActionContext ctx = ActionContext.get ...

  8. 萌新带你开车上p站(Ⅳ)

    本文作者:萌新 前情回顾: 萌新带你开车上p站(一) 萌新带你开车上p站(二) 萌新带你开车上P站(三) 回顾一下前篇,我们开始新的内容吧 0x12 登录后看源码 通读程序,逻辑是这样子的: 输入6个 ...

  9. AJ学IOS(55)多线程网络之图片下载框架之SDWebImage

    AJ分享,必须精品 效果: 代码: - (NSArray *)apps { if (!_apps) { NSArray *dictArray = [NSArray arrayWithContentsO ...

  10. python爬取《龙岭迷窟》的数据,看看质量剧情还原度到底怎么样

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:简单 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行 ...