python发短信(容联云)

python容联云发短信验证码

	根据容联云的接口说明配置
	Django+Redis全套视频教程(含项目实战)_达内Python进阶教学视频--学习笔记
import datetime
import hashlib
import base64
import json
import requests


class YunTongXin():
    base_url = 'https://app.cloopen.com:8883'

    def __init__(self, accountSid, accountToken, appId, templateId):
        self.templateId = templateId
        self.appId = appId
        self.accountToken = accountToken  # account ID
        self.accountSid = accountSid  # account token

    def get_request_url(self, sig):
        url = self.base_url + f'/2013-12-26/Accounts/{self.accountSid}/SMS/TemplateSMS?sig={sig}'
        return url

    def get_timestamp(self):
        return datetime.datetime.now().strftime('%Y%m%d%H%M%S')

    def get_request_header(self, timestamp):
        s = self.accountSid + ':' + timestamp
        auth = base64.b64encode(s.encode()).decode()
        return {
            'Accept': 'application/json',
            'Content-Type': 'application/json;charset=utf-8',
            'Authorization': auth
        }

    def get_request_body(self, phone, code):
        return {
            'to': phone,
            'appId': self.appId,
            'templateId': self.templateId,
            'datas': [code, 3]
        }

    def get_sig(self, timestamp):
        s = self.accountSid + self.accountToken + timestamp
        m = hashlib.md5()
        m.update(s.encode())
        return m.hexdigest().upper()

    def request_api(self, url, header, body):
        res = requests.post(url, headers=header, data=body)
        return res.text

    def run(self, phone, code):
        timestamp = self.get_timestamp()
        sig = self.get_sig(timestamp)
        url = self.get_request_url(sig)
        header = self.get_request_header(timestamp)
        body = self.get_request_body(phone=phone, code=code)
        data = self.request_api(url=url, header=header, body=json.dumps(body))
        print(data)


if __name__ == '__main__':
    config = {
        'accountSid': '容联云主账户ID',
        'accountToken': '容联云账户授权令牌',
        'appId': '容联云appID(默认)',
        'templateId': 1
    }
    yun = YunTongXin(**config)
    yun.run(手机号, 验证码)

# 返回值:{"statusCode":"000000(成功)","templateSMS":{"smsMessageSid":"短信唯一标识码","dateCreated":"短信创建时间"}}

验证码需要随机生成
后端验证码需要保留在redis中,设置过期时间
前端点击发送验证码Ajax将手机号发送至后端对应路由,后端视图函数发送手机验证码,并保存
前端点击保存按钮时添加一个验证码校验步骤

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值