一百一十六:CMS系统之使用阿里大于sdk发送短信验证码

这一生的挚爱 提交于 2019-12-06 00:21:05

 

阿里大于短信平台:https://dysms.console.aliyun.com/dysms.htm#/overview

使用教程:https://blog.csdn.net/qq1031893936/article/details/81173878

 

控制台-->短信服务

 

进去后开通服务,点击添加签名

根据自己的情况设置

审核通过后,添加模板

添加对应的内容

需要用到的两个数据:签名名称、模板CODE

创建AccessKey

 

实现调接口发验证码:由于使用这个验证码需要购买套餐,所以这里就只封装发短信的模块就行

# 阿里大于相关配置ALIDAYU_APP_KEY = 'LTAI4FmvBxyEb5Sip5b4PbZo'  # AccessKeyALIDAYU_APP_SECRET = '25zBQkqQNXjzwVDHH4m2I6qyoZlxOp'  # AccessKeySecretALIDAYU_SIGN_NAME = 'cms'  # 签名名称ALIDAYU_TEMPLATE_CODE = 'SMS_178771780'  # 模板id

# 阿里大于短信验证码sdkimport hashlibfrom time import timeimport loggingimport requestsclass AlidayuAPI(object):    APP_KEY_FIELD = 'ALIDAYU_APP_KEY'    APP_SECRET_FIELD = 'ALIDAYU_APP_SECRET'    SMS_SIGN_NAME_FIELD = 'ALIDAYU_SIGN_NAME'    SMS_TEMPLATE_CODE_FIELD = 'ALIDAYU_TEMPLATE_CODE'    def __init__(self, app=None):        self.url = 'https://eco.taobao.com/router/rest'        self.headers = {            'Content-type': 'application/x-www-form-urlencoded;charset=UTF-8',            "Cache-Control": "no-cache",            "Connection": "Keep-Alive",        }        if app:            self.init_app(app)    def init_app(self, app):        config = app.config        try:            self.key = config[self.APP_KEY_FIELD]            self.secret = config[self.APP_SECRET_FIELD]            self.sign_name = config[self.SMS_SIGN_NAME_FIELD]            self.api_params = {                'sms_free_sign_name': config[self.SMS_SIGN_NAME_FIELD],                'sms_template_code': config[self.SMS_TEMPLATE_CODE_FIELD],                'extend': '',                'sms_type': "normal",                "method": "alibaba.aliqin.fc.sms.num.send",                "app_key": self.key,                "format": "json",                "v": "2.0",                "partner_id": "",                "sign_method": "md5",            }        except Exception as e:            logging.error(e.args)            raise ValueError('请填写正确的阿里大鱼配置!')    def send_sms(self, telephone, **params):        self.api_params['timestamp'] = str(int(time() * 1000))        self.api_params['sms_param'] = str(params)        self.api_params['rec_num'] = telephone        newparams = "".join(["%s%s" % (k, v) for k, v in sorted(self.api_params.items())])        newparams = self.secret + newparams + self.secret        sign = hashlib.md5(newparams.encode("utf-8")).hexdigest().upper()        self.api_params['sign'] = sign        resp = requests.post(self.url, params=self.api_params, headers=self.headers)        data = resp.json()        try:            result = data['alibaba_aliqin_fc_sms_num_send_response']['result']['success']            return result        except:            print('=' * 10)            print("阿里大于错误信息:", data)            print('=' * 10)            return False

from flask_sqlalchemy import SQLAlchemyfrom flask_mail import Mailfrom utils.alidayu import AlidayuAPIdb = SQLAlchemy()mail = Mail()alidayu = AlidayuAPI()

from flask import Flaskfrom apps.cms import bp as cms_bpfrom apps.front import bp as front_bpfrom apps.common import bp as common_bpimport configfrom exts import db, mail, alidayufrom flask_wtf import CSRFProtectdef create_app():    app = Flask(__name__)    app.config.from_object(config)    app.register_blueprint(cms_bp)    app.register_blueprint(front_bp)    app.register_blueprint(common_bp)    db.init_app(app)    mail.init_app(app)    alidayu.init_app(app)    CSRFProtect(app)    return appif __name__ == '__main__':    app = create_app()    app.run(port=8000)

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!