Python2-Django配置阿里大于的短信验证码接口
1、短信发送开发指南地址:https://help.aliyun.com/document_detail/55491.html?spm=a2c4g.11186623.6.568.l5zTwH
2、SDK和Demo下载地址:https://help.aliyun.com/document_detail/55359.html?spm=a2c4g.11186623.4.3.IvyHwo
3、总结前两步:开发前先到开发指南按步骤去做一系列前期工作,即:
(1)到阿里云去申请一个accessKey Id和Access Key Secret
(2)在短信服务平台申请短信签名和短信模板
(3)下载对应的Python的SDK和Demo
4、开发工作:
(1)将下载到的SDK和DEMO解压后放到项目相应的地方
(2)运行cmd,cd到上诉的解压文件夹中运行 python setup.py install命令
(3)安装依赖到虚拟环境:
① pip install aliyuncli
② pip install -Iv aliyun-python-sdk-cms==5.0.0
③ aliyuncli configure(配置默认信息):
Aliyun Access Key ID [None]: 你申请的Access Key Id
Aliyun Access Key Secret [None]: 你申请的Access Key Id 对应的 Access Key Secret
Default Region Id [None]: cn-hangzhou (区域,就填阿里云默认给的就好)
Default output format [None]: json (默认输出格式,按自己的需求来,我选的是json)
④ 跑完上面的步骤可能已经有下面两个依赖的,不过跑跑也无妨:
pip install aliyun-python-sdk-core
pip install aliyun-python-sdk-cms
⑤ pip install top
5、贴一下接口代码,其实和给的demo几乎一样
import sysfrom ali_sms.aliyunsdkdysmsapi.request.v20170525 import SendSmsRequest
from ali_sms.aliyunsdkdysmsapi.request.v20170525 import QuerySendDetailsRequest
from aliyunsdkcore.client import AcsClientfrom aliyunsdkcore.profile import region_providerfrom aliyunsdkcore.http import method_type as MT
from aliyunsdkcore.http import format_type as FT """
短信业务接口 吾延 2018-07-13
"""# 设置AccessKeyId和AccessKeySecret
acs_client = AcsClient('你申请的access key id', '你申请的access key id 对应的secret','cn-hangzhou')
region_provider.add_endpoint('Dysmsapi', 'cn-hangzhou', 'dysmsapi.aliyuncs.com') def send_sms(business_id, phone_numbers, sign_name, template_code, template_param=None):
""""
发送短信
请求参数:{
business_id: 阿里云流水号,可用于查询
phone_numbers: 要发送的电话号码列表,多个或一个
sign_name: 短信签名名称
template_code: 短信模板编码
template_param: 模板参数(验证码 或 其他在阿里云申请时设置的短信模板参数)
}
返回:{
{
Message: 信息,
RequestId: 请求id,
Code: 短信发送状态回执码(查询链接:https://help.aliyun.com/document_detail/55323.html?spm=a2c4g.11174283.4.9.fkf6vH )
}
"""
try:
reload(sys)
sys.setdefaultencoding('utf8')
except Exception as err:
log.exception(err)
return False
sms_request = SendSmsRequest.SendSmsRequest()
sms_request.set_TemplateCode(template_code)
if template_param is not None:
sms_request.set_TemplateParam(template_param)
sms_request.set_OutId(business_id)
sms_request.set_SignName(sign_name)
sms_request.set_PhoneNumbers(phone_numbers)
sms_response = acs_client.do_action_with_exception(sms_request)
# print sms_response
return sms_response def query_send_detail(biz_id, phone_number, page_size, current_page, send_date):
""""
短信详情查询
请求参数{
biz_id: 流水号
phone_number: 手机号码
page_size: 每页大小
current_page: 当前页
send_date : 发送日期(30天内的记录查询)
}
返回参数{
TotalCount
Message
RequestId
SmsSendDetailDTOs
Code
}
"""
try:
reload(sys)
sys.setdefaultencoding('utf8')
except Exception as err:
log.exception(err)
return False
query_request = QuerySendDetailsRequest.QuerySendDetailsRequest()
query_request.set_PhoneNumber(phone_number)
query_request.set_BizId(biz_id)
query_request.set_SendDate(send_date)
query_request.set_CurrentPage(current_page)
query_request.set_PageSize(page_size)
# 数据提交方式
# queryRequest.set_method(MT.POST)
# 数据提交格式
# queryRequest.set_accept_format(FT.JSON)
# 返回json数据
query_response = acs_client.do_action_with_exception(query_request)
# TODO 业务处理
# print 'query_response'+query_response
return query_response
6、调用接口,也直接贴代码了(我的项目返回的都是json数据,看个人开发需要)
# 调用生成验证码方法
business_id = uuid.uuid1() # 产生阿里的流水号,必填,用于短信详情的查询
verify = str_utils.random_number_verify(5) 生成随机验证码函数
params = "{\"code\": " + verify + "}"
res = eval(sms_utils.send_sms(business_id, mobile_no, '你申请的签名','你申请的模板', params))
if res['Code'] == 'OK':
create_time = time.time()
info = {'verify': verify, 'phone': mobile_no, 'create_time': create_time}
set_session(request=request, s_key=sms_verify, s_info=info) # set_session是自己写的一个方法,根据项目需求保存到session中,当然建个表来保存就更好了
return Response({'code': constants.RESULT_SUCCESS, 'message': u'生成成功,请查收!'})
elif res['Code'] == 'isv.BUSINESS_LIMIT_CONTROL':
return Response({'code': constants.RESULT_FAIL, 'message': u'次数受限!'})
else:
return Response({'code': constants.RESULT_FAIL, 'message': u'该号码受限,换个号码试试!'})
至此,配置一个阿里大于短信获取验证码的接口就全部完成了
Python2-Django配置阿里大于的短信验证码接口的更多相关文章
- php 阿里云短信服务及阿里大鱼实现短信验证码的发送
一:使用阿里云的短信服务 ① 申请短信签名 ②申请短信模板 ③创建Access Key,获取AccessKeyId 与 AccessKeySecret.(为了安全起见,这里建议使用子用户的Access ...
- PHP阿里大于发短信教程
PHP阿里大于发短信教程 1 先去控制台 https://www.alidayu.com/center/user/account?spm=a3142.7791109.1999204004.5.ZtBQ ...
- php短信验证码接口接入流程及代码示例
对于绝大部分企业来说,所使用的短信验证码接口都是第三方短信服务商所提供,目前市场上短信服务商有很多,在此向大家推荐一家动力思维乐信,运营13年,值得信赖! 就拿动力思维乐信短信验证码接口为例,详细介绍 ...
- 通过sails和阿里大于实现短信验证
通过sails与阿里大于来实现注册短信验证码的发送,逻辑图如下 1.用户在客户端发送手机号给服务器,服务器接收到手机号,生成对应时间戳,随机四位数验证码 2.服务器将电话号码和验证码告诉阿里大于服务器 ...
- Node 接入阿里云实现短信验证码
本文介绍在案例云开通短信服务的流程以及在Node项目中使用的方法. 一.开通阿里云短信服务 登陆阿里云,然后进入 https://dysms.console.aliyun.com/dysms.htm ...
- 潭州课堂25班:Ph201805201 django 项目 第十三课 短信验证码后台的实现 (课堂笔记)
d 发送短信验证码之前,后台要得到三个参数 : 1,用户手机吗,, 2,用户输入的图片验证文本, 3,前台的 uuid , 在60秒内是否有发送短信的记录 只有用户输入的手机号,文本信息与 uudi ...
- NetCore 阿里大于发送短信
使用阿里大于API发送短信,但阿里没有提供NetCore 的API,自己看了下源码重写了发短信这个部分 public class MessageSender { private readonly st ...
- Delphi - Delphi7 调用阿里大于实现短信消息验证
阿里大于是阿里通信旗下产品,融合了三大运营商的通信能力,提供包括短信.语音.流量直充.私密专线.店铺手机号等个性化服务.每条四分五,价钱还算公道,经老农测试,响应速度非常快,基本上是秒到.官方文档提供 ...
- 阿里大于发送短信(java)
一.短信签名设置 1.短信签名是什么? 签名是在短信内容开始或者末尾跟的品牌或者应用名称,设置签名有一下几个好处:增加品牌的曝光度,增强用户的记忆让用户能更清楚的知道正在使用的应用. 2.签名可不可以 ...
随机推荐
- 单词匹配 - hash
哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一个需要的魔咒,所以他需要你的帮助. 给你一部魔咒词 ...
- 1z0-062 题库解析6
You want execution of large database operations to suspend, and then resume, in the event of space a ...
- LeetCode 第20题--括号匹配
1. 题目 2.题目分析与思路 3.代码 1. 题目 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭 ...
- ancconda创建爬虫项目
# 安装 conda env list conda create -n <envname> conda activate <envname> conda install scr ...
- 系列免费课程汇总(Java、单体应用、微服务、物联网、SaaS)
概述 2020年春节尽在眼前,又忙碌了一年的你一定有很多收获:是升职加薪,还是收获爱情?是买房置业,还是新添人口? 我在2019年的最大收获是:我的第二枚千金诞生,使我顺利加入富豪行列! 新年伊始我们 ...
- dotnet restore 初次运行 这个 指令 会安装 特别多的 4.0.0 或者 4.1 的 rc2-24027的 东东 这些东西。
- 数据库中事务的ACID特性
数据库中事务的ACID特性 前言前面我们介绍过数据库中 带你了解数据库中JOIN的用法 与 带你了解数据库中group by的用法 的相关用法.本章节主要来介绍下数据库中一个非常重要的知识点事务,也是 ...
- 机器学习笔记P1(李宏毅2019)
该博客将介绍机器学习课程by李宏毅的前两个章节:概述和回归. 视屏链接1-Introduction 视屏链接2-Regression 该课程将要介绍的内容如下所示: 从最左上角开始看: Regress ...
- spring动态修改bean
spring动态修改bean @RequestMapping("ok") public Object test2(){ ApplicationContext application ...
- 深入理解Java 中SPI 制
深入理解Java 中SPI 制 概述 SPI(Service Provider Interface),是JDK内置的一种服务提供发现机制,可以用来启用框架扩展和替换组件,主要是被框架的开发人员使用,比 ...