flask_发送短信——云迅通(1)

使用服务:容联云 www.yuntongxun.com

注册完成后,有赠送的8块钱可以使用

内部需要添加测试号码以及有测试模板

使用教程: 开发文档------> 短信发送接口
更改下载出来的文件 ,改为python3可用版本
https://blog.csdn.net/qq_42795565/article/details/87604663

将SendTemplateSMS的py文件也拿过来。进行封装

结果:通过使用容联云的SDK包,我们改动了CCPRestSDK这个文件,以及封装了sms这个使用方法

并在yuntongxun这个目录下新建了一个logs文件,用于保存日志

CCPRestSDK.py :

# -*- coding: UTF-8 -*-
#  Copyright (c) 2014 The CCP project authors. All Rights Reserved.
#
#  Use of this source code is governed by a Beijing Speedtong Information Technology Co.,Ltd license
#  that can be found in the LICENSE file in the root of the web site.
#   http://www.yuntongxun.com
#  An additional intellectual property rights grant can be found
#  in the file PATENTS.  All contributing project authors may
#  be found in the AUTHORS file in the root of the source tree.

from hashlib import md5
import base64
import datetime
from urllib import request as urllib2
import json
from .xmltojson import xmltojson


class REST:
	AccountSid = ''
	AccountToken = ''
	AppId = ''
	SubAccountSid = ''
	SubAccountToken = ''
	ServerIP = ''
	ServerPort = ''
	SoftVersion = ''
	Iflog = False  # 是否打印日志
	Batch = ''  # 时间戳
	BodyType = 'xml'  # 包体格式,可填值:json 、xml

	# 初始化
	# @param serverIP       必选参数    服务器地址
	# @param serverPort     必选参数    服务器端口
	# @param softVersion    必选参数    REST版本号
	def __init__(self, ServerIP, ServerPort, SoftVersion):

    	self.ServerIP = ServerIP
    	self.ServerPort = ServerPort
    	self.SoftVersion = SoftVersion

		# 设置主帐号
		# @param AccountSid  必选参数    主帐号
		# @param AccountToken  必选参数    主帐号Token

	def setAccount(self, AccountSid, AccountToken):
    	self.AccountSid = AccountSid
    	self.AccountToken = AccountToken

	# 设置子帐号
	#
	# @param SubAccountSid  必选参数    子帐号
	# @param SubAccountToken  必选参数    子帐号Token

	def setSubAccount(self, SubAccountSid, SubAccountToken):
    	self.SubAccountSid = SubAccountSid
    	self.SubAccountToken = SubAccountToken

	# 设置应用ID
	#
	# @param AppId  必选参数    应用ID

	def setAppId(self, AppId):
    self.AppId = AppId

	def log(self, url, body, data):
    	print('这是请求的URL:')
    	print(url)
    	print('这是请求包体:')
    	print(body)
    	print('这是响应包体:')
    	print(data)
    	print('********************************')
------后面东西太多了,我醉了,你们自己调格式吧,或者直接抄 https://blog.csdn.net/qq_42795565/article/details/87604663。。
 啊。所以我为什么还要打一遍..
# 创建子账号
# @param friendlyName   必选参数      子帐号名称
def CreateSubAccount(self, friendlyName):

    self.accAuth()
    nowdate = datetime.datetime.now()
    self.Batch = nowdate.strftime("%Y%m%d%H%M%S")
    # 生成sig
    signature = self.AccountSid + self.AccountToken + self.Batch
    sig = md5(signature.encode()).hexdigest().upper()
    # 拼接URL
    url = "https://" + self.ServerIP + ":" + self.ServerPort + "/" + self.SoftVersion + "/Accounts/" + self.AccountSid + "/SubAccounts?sig=" + sig
    # 生成auth
    src = self.AccountSid + ":" + self.Batch
    auth = base64.encodebytes(src.encode()).decode().strip()
    req = urllib2.Request(url)
    self.setHttpHeader(req)
    req.add_header("Authorization", auth)
    # xml格式
    body = '''<?xml version="1.0" encoding="utf-8"?><SubAccount><appId>%s</appId>\
        <friendlyName>%s</friendlyName>\
        </SubAccount>\
        ''' % (self.AppId, friendlyName)

    if self.BodyType == 'json':
        # json格式
        body = '''{"friendlyName": "%s", "appId": "%s"}''' % (friendlyName, self.AppId)
    data = ''
    req.data = body.encode()
    try:
        res = urllib2.urlopen(req)
        data = res.read()
        res.close()

        if self.BodyType == 'json':
            # json格式
            locations = json.loads(data)
        else:
            # xml格式
            xtj = xmltojson()
            locations = xtj.main(data)
        if self.Iflog:
            self.log(url, body, data)
        return locations
    except Exception as error:
        if self.Iflog:
            self.log(url, body, data)
        return {'172001': '网络错误'}

#  获取子帐号
# @param startNo  可选参数    开始的序号,默认从0开始
# @param offset 可选参数     一次查询的最大条数,最小是1条,最大是100条
def getSubAccounts(self, startNo, offset):

    self.accAuth()
    nowdate = datetime.datetime.now()
    self.Batch = nowdate.strftime("%Y%m%d%H%M%S")
    # 生成sig
    signature = self.AccountSid + self.AccountToken + self.Batch
    sig = md5(signature.encode()).hexdigest().upper()
    # 拼接URL
    url = "https://" + self.ServerIP + ":" + self.ServerPort + "/" + self.SoftVersion + "/Accounts/" + self.AccountSid + "/GetSubAccounts?sig=" + sig
    # 生成auth
    src = self.AccountSid + ":" + self.Batch
    # auth = base64.encodestring(src).strip()
    auth = base64.encodebytes(src.encode()).decode().strip()
    req = urllib2.Request(url)
    self.setHttpHeader(req)
    req.add_header("Authorization", auth)
    # xml格式
    body = '''<?xml version="1.0" encoding="utf-8"?><SubAccount><appId>%s</appId>\
        <startNo>%s</startNo><offset>%s</offset>\
        </SubAccount>\
        ''' % (self.AppId, startNo, offset)

    if self.BodyType == 'json':
        # json格式
        body = '''{"appId": "%s", "startNo": "%s", "offset": "%s"}''' % (self.AppId, startNo, offset)
    data = ''
    req.data = body.encode()
    try:
        res = urllib2.urlopen(req)
        data = res.read()
        res.close()

        if self.BodyType == 'json':
            # json格式
            locations = json.loads(data)
        else:
            # xml格式
            xtj = xmltojson()
            locations = xtj.main(data)
        if self.Iflog:
            self.log(url, body, data)
        return locations
    except Exception as error:
        if self.Iflog:
            self.log(url, body, data)
        return {'172001': '网络错误'}

# 子帐号信息查询
# @param friendlyName 必选参数   子帐号名称

def querySubAccount(self, friendlyName):

    self.accAuth()
    nowdate = datetime.datetim
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值