06 第三方之短信封装

  荣联云通讯短信平台

  注册账号

  管理模块>>应用管理>>创建应用>>编辑应用>>勾选短信验证码

  安装request模块

pip install requests

  请求参数

POST : https://app.cloopen.com:8883/2013-12-26/Accounts/{accountSid}/SMS/TemplateSMS?sig={SigParameter}

  请求包头

参数 类型 是否必选 参数说明
accountSid String 必选 账号ID
SigParameter String 必选 签名 [账号ID+令牌Token+时间('YmdHMS') 的MD5值]

  请求包头字段

参数 类型 是否必选 参数说明
Accept String 必选 客户端响应接收数据格式
Content-Type String 必选 类型
Content-Length String 必选  
Authorization String 必选 携带参数

  请求包体

参数 类型 是否必选 参数说明
to String 必选 “电话1,电话2,电话3”
appId String 必选 应用ID
templateId String 必选  
datas String 可选 内容数据外层节点,模板如果没有变量,此参数可不传
data String 可选 内容数据,用于替换模板中{序号}

  响应 此步响应只表明客户的短信请求发送成功,不表明短信通道已经发送短信成功。(状态码

参数 类型 是否必选 参数说明
statusCode String 必选 请求状态码,取值000000(成功)
smsMessageSid String 必选 短信唯一标识符
dateCreated String 必选 短信的创建时间

代码块

  shortMsg.py

 1 import hashlib, base64, requests, json
 2 from datetime import datetime
 3 
 4 class YunTongXin:
 5   __base_url = 'https://app.cloopen.com:8883/2013-12-26/Accounts/{}/SMS/TemplateSMS?sig={}'
 6 
 7   # 初始化代码
 8   def __init__(self, accid='', appid='', appkey='', temid='', temp_motice='45分钟'):
 9       self.accid = accid
10       self.appid = appid
11       self.appkey = appkey
12       self.temid = temid
13       self.temp_motice = temp_motice
14 
15   # md5编码
16   def __md5(self, raw):
17       md5 = hashlib.md5()
18       md5.update(raw.encode('utf-8'))
19       return md5.hexdigest()
20 
21   # 获取格式化时间
22   def __get_format_time(self):
23       return str(datetime.now().strftime('%Y%m%d%H%M%S'))
24 
25   # base64编码
26   def __get_base64_code(self, raw):
27       st = raw.encode()
28       return base64.b64encode(st).decode('utf-8')
29 
30   # 请求包头
31   def __request_url(self, stamp):
32       sig = self.__md5(self.accid + self.appkey + stamp).upper()  # 生成签名
33       return self.__base_url.format(self.accid, sig)  # https 请求地址
34 
35   # 请求包头字段
36   def __request_header(self, stamp):
37       authorization = self.__get_base64_code(self.accid + ':' + stamp)
38       return {
39           'Authorization': authorization, 'Accept': 'application/json;',
40           'Content-Type': 'application/json;charset=utf-8;'}
41 
42   # 请求包体
43   def __request_body(self, phone, code):
44       return {
45           "to": ','.join(phone),
46           "appId": self.appid,
47           "templateId": self.temid,
48           "datas": [code, self.temp_motice]
49       }
50 
51   # 返回结构化结果
52   def __ajaxReturn(self, code=92000, msg='', data=[]):
53       dict = {"code": code, "msg": msg, "data": data}
54       return json.dumps(dict)
55 
56   # 发送短信
57   def send(self, phone=[], code=''):
58       stamp = self.__get_format_time()  # 获取当前格式化时间
59       url = self.__request_url(stamp)  # 请求包地址
60       headers = self.__request_header(stamp)  # 请求包头字段
61       data = self.__request_body(phone, code)
62       obj = requests.post(url, headers=headers, json=data)
63       dict = json.loads(obj.text)
64       if dict.get('statusCode') == '000000':
65           return self.__ajaxReturn(msg="发送成功", data={})
66       else:
67           return self.__ajaxReturn(code=92001, msg='发送失败', data={"code": dict.get('statusCode')})

  调用

 1 from shortMsg import YunTongXin
 2 accid = '' # 账号id
 3 appid = '' # 应用id
 4 appkey = 'ae007ba417e24833acc709d8e2acdb65' # key
 5 temid = '1' # 默认模版
 6 temp_motice = '30分钟' # 参数
 7 phone = ['电话1','电话2'] # 电话号码 
 8 code = '' # 短信验证码
 9 # 实例化
10 yun = YunTongXin(accid=accid,appid=appid,appkey=appkey,temid=temid,temp_motice=temp_motice)
11 # 发送短信
12 yun.send(phone, code)

猜你喜欢

转载自www.cnblogs.com/a2534786642/p/11040835.html
06