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.签名可不可以 ...
随机推荐
- DP-01背包 (题)
nyoj 325 http://acm.nyist.net/JudgeOnline/problem.php?pid=325 zb的生日 时间限制:3000 ms | 内存限制:65535 KB ...
- git 工作中实用 多人协同开发
多人协同开发 .克隆分支 git clone -b dev1. url .创建并关联远程分支 git checkout -b dev_wt origin/dev_wt 情况一获取其它分支的代码,并合并 ...
- cors中间件
class MiddlewareMixin(object): def __init__(self, get_response=None): self.get_response = get_respon ...
- 2020寒假学习01 Scala 编程初级实践
1. 计算级数请用脚本的方式编程计算并输出下列级数的前 n 项之和 Sn,直到 Sn 刚好大于或等于 q为止,其中 q 为大于 0 的整数,其值通过键盘输入. Sn = 2/1+3/2+4/3+... ...
- prometheus和zabbix的对比
前言: 新公司要上监控,面试提到了Prometheus 是公司需要的监控解决方案,作为喜新厌旧的程序员,我当然是选择跟风了,之前主要做的是zabbix,既然公司需要prometheus,那没办法,只能 ...
- 简单实现Android手机“全局可调试”(ro.debuggable = 1)的方法【锤子坚果3】
在Android真机上调试程序有一个前提,就是这个apk包必须有 debuggable=true 的属性才行.而除了自己开发的apk能够控制打包属性之外,其他的程序发行之后显然不会设这个值为 true ...
- springIOC源码接口分析(二):ConfigurableBeanFactory
一 继承功能 1 SingletonBeanRegistry接口 此接口是针对Spring中的单例Bean设计的.提供了统一访问单例Bean的功能,类中定义了以下方法: 2 HierarchicalB ...
- springboot mybatis 多数据源配置支持切换以及一些坑
一 添加每个数据源的config配置,单个直接默认,多个需要显示写出来 @Configuration @MapperScan(basePackages ="com.zhuzher.*.map ...
- 微信小程序框架分析小练手(三)——仿香哈菜谱小程序制作
香哈菜谱是一款围绕美食而成的小程序,在这里可以查看各式各样的菜谱. 一.打开微信开发者工具,新建一个项目:xhcp.如下图: 二.建立如下的一些目录: 三.将底部标签导航图标.美食轮播图片.宫格导航图 ...
- 遇到的一些在ie下的兼容问题和解决方案(ie10+)
1,ie 10下实现水平垂直居中,不固定高度的话,正常的top:50%,left:50%,transform(translate(-50%,-50%)) 是不能实现的,ie下top:50%会失去效果. ...