腾讯云短信服务(详细教程-Django框架、API接口)实现

今天和大家分享如何实现短信服务,以腾讯云服务为例

 

目录

一、准备工作

二、短信服务接口开发 

2.1 服务配置

2.2接口开发 

三、测试短信服务 

四、结束语 


一、准备工作

腾讯云短信服务会发放免费的个人认证短信和赠送短信总共200条,但时间很短,方便学习的同学使用。

随后进行进行我们的短信配置,选择国内短信。

根据快速入门的标准完成签名管理、正文模板管理、群发短信这几个模块的配置。详细教程参考对应文档操作即可,我这里也尝试了好几次,有的是签名不规范,建议签名类型选择公众号能快速通过。

所有的审核都通过了之后,我们的准备工作也就做好了,可以选择测试我们的短信服务,这里就不细说了,感兴趣的朋友可以创建群发短信任务尝试。如下图:

二、短信服务接口开发 

2.1 服务配置

这里我使用的是Django框架对接口进行开发,并且运用了腾讯云开源的第三方库qcloudsms_py。

配置代码如下:

import ssl
import random
ssl._create_default_https_context = ssl._create_unverified_context

from qcloudsms_py import SmsSingleSender
from qcloudsms_py.httpclient import HTTPError
import random
import smtplib
import string
from email.header import Header
from email.mime.text import MIMEText
from django.core.cache import cache

# 获取云短信应用的appid和appkey
SDKAppID = '1400681577'
AppKey = 'f54b46f0038864a4c842026e9227f74c'
#签名
sms_sign = '程序员九仙公众号'
# 模板ID
template_id = '1407298'
# 输入的手机号


# 获取随机6位数
def captcha():
    captcha = ''
    for i in range(6):
        now_number = str(random.randint(0, 9))
        captcha += now_number
    return captcha

# 发送手机号验证码
def send_pcode(phone_number,captcha):
    print('获取验证码',captcha)

    ssender = SmsSingleSender(SDKAppID, AppKey)
    # 模板中的参数,也就是{1}{2}这两个参数
    params = [captcha, "2"]  # 当模板没有参数时,`params = []`
    try:
        result = ssender.send_with_param(86, phone_number,
                                         template_id, params, sign=sms_sign, extend="", ext="")  # 签名参数不允许为空串
        print(result)
    except HTTPError as e:
        print(e)
    except Exception as e:
        print(e)
    return phone_number,captcha


if __name__ == '__main__':
    send_pcode(19524662948,captcha())

其中需要特备注意的是:SDKAppID(短信应用的appid)、AppKey、sms_sign(短信签名名称)、template_id(模板ID)。可参考下图的位置去找:

2.2接口开发 

以下代码是获取短信验证码的接口

@api_view()
def gen_code(request):
    print('--->data', request.GET)
    phone = request.GET.get('phone', '')
    if not phone:
        return Response({'msg': '手机号不能为空'}, status=422)
    phone,sms_code = sms__.send_pcode(phone,captcha())
    print(sms_code)
    cache.set(phone, sms_code, timeout=15*60)
    return Response({'msg': '已发送'})

其中send_pcode就是刚才上面代码封装好的方法,里面含有腾讯短信服务的相关配置。django框架还需要配置路由、 Views里面的一些中间件等这里就不做详细介绍了。

以下代码是注册账户的接口

"""注册接口"""
@api_view(['POST'])
def register(request):
    s = PhoneCodeSerializer(data=request.data)
    if s.is_valid():
        cache_code = cache.get(s.validated_data['phone'])
        if TbUser.objects.filter(phone=s.validated_data['phone']).exists():
            return Response({'msg': '手机号已注册,不能重复注册'}, status=402)
        if cache_code == s.validated_data['code']:
            u = TbUser()
            u.phone = s.validated_data['phone']
            u.save()
            token = uuid.uuid4().hex
            cache.set(token, u.pk, timeout=7 * 24 * 3600)
            return Response({'phone': u.phone, 'token': token, 'msg': '注册成功'})
        return Response({'msg': '验证码有误'}, status=403)
    return Response(s.errors, status=422)

一切准备就绪,下面我们来测试一下我们的短信服务。

三、测试短信服务 

测试效果如下图:

会发现我们的接口是通的,并且注册成功了。进入数据库查看以下,如下图:

可以发现刚才我们注册的19524662948这个账号已经成功添加到我们的tb_user表中,并且初始密码为手机号的后六位的加密模式,整个短信服务测试成功!

四、结束语 

短信服务除了用来注册,也可以用来登录、找回密码等等,根据不同的业务需求不断变化就好了。觉得还可以的话三连哦,感谢大家的支持。

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

戒酒的李白-Lisage

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值