12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- # -*- 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):
- TEMPLATE = {
- 'CAPTCHA_TEMPLATE_ID': 'SMS_190790529',
- 'SMS_NOTIFY_EXPIRED_DEVICE_TEMPLATEID': 'SMS_190784668',
- 'EDIT_MONITOR_ID': 'SMS_211215112',
- 'DEALER_MONITOR_WITHDRAW_ID': 'SMS_211230116',
- }
- def __init__(self, ak = None, secret = None, region_id = None):
- self.ak = ak or 'LTAI4GEc1j8pvs4EjFrtL5K9'
- self.secret = secret or 'KuCEo8YWRn7tjQaJsXJCcG7P4leBMr'
- self.region_id = region_id or 'cn-hangzhou'
- def send(self, phoneNumber, templateName, msg, productName, verifyCode = False):
- """
- :param phoneNumber:
- :param templateName:
- :param msg:
- :param productName:
- :return: dict
- """
- templateId = self.TEMPLATE[templateName]
- 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'短信服务器不可用,请稍后重试'}
|