# -*- coding: utf-8 -*- # !/usr/bin/env python import logging import simplejson as json from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest from requests import ConnectionError from simplejson import JSONDecodeError logger = logging.getLogger(__name__) from library.sms import SmsSender class Sender(SmsSender): def __init__(self, ak, secret, region_id): self.ak = ak self.secret = secret self.region_id = region_id def send(self, phoneNumber, templateId, msg, productName, verifyCode = False): """ :param phoneNumber: :param templateId: :param msg: :param productName: :return: dict """ try: client = AcsClient(ak = self.ak, secret = self.secret, region_id = self.region_id) request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('http') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', 'cn-hangzhou') request.add_query_param('PhoneNumbers', phoneNumber) # request.add_query_param('SignName', productName) request.add_query_param('SignName', u'微付乐') request.add_query_param('TemplateCode', templateId) if verifyCode: request.add_query_param('TemplateParam', {'code': msg}) else: request.add_query_param('TemplateParam', {'user': productName, 'detail': msg}) response = client.do_action_with_exception(request) result = json.loads(response) if result['Code'] == 'OK': return {'result': True, 'msg': 'success'} else: return {'result': False, 'msg': result['Message']} except JSONDecodeError as e: logger.exception(e) return {'result': False, 'msg': u'短信服务器繁忙,请稍后重试'} except ConnectionError as e: logger.exception(e) return {'result': False, 'msg': u'短信服务器不可用,请稍后重试'}