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)

 

posted @ 2019-06-17 17:10  small_caier  阅读(357)  评论(0编辑  收藏  举报