博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python-Django配置阿里大于的短信验证码接口
阅读量:6183 次
发布时间:2019-06-21

本文共 4585 字,大约阅读时间需要 15 分钟。

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 IdAliyun Access Key Secret [None]: 你申请的Access Key Id 对应的 Access Key SecretDefault 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 SendSmsRequestfrom ali_sms.aliyunsdkdysmsapi.request.v20170525 import QuerySendDetailsRequestfrom aliyunsdkcore.client import AcsClientfrom aliyunsdkcore.profile import region_providerfrom aliyunsdkcore.http import method_type as MTfrom aliyunsdkcore.http import format_type as FT"""短信业务接口  吾延 2018-07-13"""# 设置AccessKeyId和AccessKeySecretacs_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_responsedef 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'该号码受限,换个号码试试!'})

至此,配置一个阿里大于短信获取验证码的接口就全部完成了

转载于:https://www.cnblogs.com/wuyan717/p/9318091.html

你可能感兴趣的文章
两分钟彻底让你明白Android Activity生命周期(图文)
查看>>
Nagios出现NRPE: Unable to read output解决办法
查看>>
ipvsadm配合脚本配置LVS
查看>>
tornado实现异步计划任务及python常见计划任务方法
查看>>
jQuery剥皮一
查看>>
自动更新服务导致 Svchost 占用CPU 100%的解决方法
查看>>
Samba共享系统实例应用
查看>>
VMware vSphere 5.1 群集深入解析(二十)- 存储DRS算法
查看>>
Linux Shell学习-sed命令详解
查看>>
Iterator(迭代器)模式
查看>>
常见的DOM操作
查看>>
nginx 虚拟主机配置
查看>>
内容营销11金规
查看>>
/ ./ ../ 的区别,/ 和\的区别
查看>>
(CCNP)利用分发列表控制路由重分发
查看>>
win2003群集搭建
查看>>
模拟实现strncat
查看>>
使用组策略锁定 Outlook Anywhere 设置
查看>>
设置 LD_LIBRARY_PATH 变量
查看>>
[解析苹果官方文档]之[UIView Class Reference]
查看>>