zoukankan      html  css  js  c++  java
  • 阿里云短信接口

    import uuid
    import datetime
    import hmac
    import base64
    import requests
    from urllib.parse import urlencode, quote
    
    from aisirsay.settings import ALIYUN_API_FORMAT, ALIYUN_API_KEY, ALIYUN_API_SECRET, ALIYUN_API_REGION_ID, ALISMS_GATEWAY # 去阿里云官网申请这些信息
     
    
    class AliyunSMS(object):
        def __init__(self):
            self.format = ALIYUN_API_FORMAT or "JSON"
            self.version = "2017-05-25"
            self.key = ALIYUN_API_KEY
            self.secret = ALIYUN_API_SECRET
            self.signature = ""
            self.signature_method = "HMAC-SHA1"
            self.signature_version = "1.0"
            self.signature_nonce = str(uuid.uuid4())
            self.timestamp = datetime.datetime.utcnow().isoformat("T")
            self.region_id = ALIYUN_API_REGION_ID
    
            self.gateway = ALISMS_GATEWAY
            self.action = ""
            self.sign = ""
            self.template = ""
            self.params = {}
            self.phones = ''
    
        def send_single(self, phone, sign, template, params):
            self.action = "SendSms"
            self.phones=phone
            self.sign = sign
            self.params = params
            self.template = template
    
            query_string = self.build_query_string()
            resp = requests.get(self.gateway + "?" + query_string).json()
            print(resp)
            model = resp.get("Code")
            if model == 'OK':
                return True
            return False
    
        def build_query_string(self):
            query = []
            query.append(("Format", self.format))
            query.append(("Version", self.version))
            query.append(("AccessKeyId", self.key))
            query.append(("SignatureMethod", self.signature_method))
            query.append(("SignatureVersion", self.signature_version))
            query.append(("SignatureNonce", self.signature_nonce))
            query.append(("Timestamp", self.timestamp))
            query.append(("RegionId", self.region_id))
            query.append(("Action", self.action))
            query.append(("SignName", self.sign))
            query.append(("TemplateCode", self.template))
            query.append(("PhoneNumbers", self.phones))
            params = "{"
            for param in self.params:
                params += """ + param + """ + ":" + """ + str(self.params[param]) + """ + ","
            params = params[:-1] + "}"
            query.append(("TemplateParam", params))
            query = sorted(query, key=lambda key: key[0])
            query_string = ""
            for item in query:
                query_string += quote(item[0], safe="~") + "=" + quote(item[1], safe="~") + "&"
            query_string = query_string[:-1]
            tosign = "GET&%2F&" + quote(query_string, safe="~")
            secret = self.secret + "&"
            hmb = hmac.new(secret.encode("utf-8"), tosign.encode("utf-8"), "sha1").digest()
            self.signature = quote(base64.standard_b64encode(hmb).decode("ascii"), safe="~")
            query_string += "&" + "Signature=" + self.signature
            return query_string

    阿里云短信接口,需要替换自己的接口信息

  • 相关阅读:
    Java 使用 EasyExcel 实现简单的读写操作
    Java上传文件到阿里云对象存储器OSS
    Springboot 项目解决跨域的问题
    Java 使用 Kafka 发布信息与消费消息
    安装PHPldapAdmin出现You don't have permission to access /phpldapadmin/ on this server.问题
    LDAP安装、LDAP数据迁移、LDAP卸载指南及PHPldapAdmin管理软件安装
    LDAP数据备份与数据恢复
    docker 启动所有镜像
    详解GET 和 POST请求的本质区别
    如何使用 markdown
  • 原文地址:https://www.cnblogs.com/aisir/p/9682035.html
Copyright © 2011-2022 走看看