1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- # -*- coding: utf-8 -*-
- # !/usr/bin/env python
- import logging
- import simplejson as json
- import requests
- from requests import ConnectionError
- from simplejson import JSONDecodeError
- logger = logging.getLogger(__name__)
- from library.sms import SmsSender
- class Sender(SmsSender):
- # API_URL = 'https://open.ucpaas.com/ol/sms/sendsms' # old
- API_URL = 'https://open2.ucpaas.com/ol/sms/sendsms' # new
- TEMPLATE = {
- 'CAPTCHA_TEMPLATE_ID': '544642',
- 'SMS_NOTIFY_EXPIRED_DEVICE_TEMPLATEID': '384328',
- 'EDIT_MONITOR_ID': '584806',
- 'DEALER_MONITOR_WITHDRAW_ID': '584807',
- 'MERCHANT_NOTIFY': '611184'
- }
- def __init__(self, appid = None, sid = None, token = None):
- self.appid = appid or '06268c58ffcf412e875c38663b819495'
- self.sid = sid or '0dcff57b45a868c31a74ae5bf1488aa8'
- self.token = token or '52917c39382fbebda57e0a23be265357'
- def send(self, phoneNumber, templateName, msg, productName, verifyCode = False):
- """
- :param phoneNumber:
- :param templateName:
- :param msg:
- :param productName:
- :return: dict
- """
- templateId = self.TEMPLATE[templateName]
- logger.debug('productName = %s; templateId = %s; msg = %s' % (productName, templateId, msg))
- headers = {
- 'Accept': 'application/json',
- 'Content-Type': 'application/json;charset=utf-8'
- }
- body = {
- 'appid': self.appid,
- 'mobile': phoneNumber,
- 'templateid': templateId,
- 'sid': self.sid,
- 'token': self.token,
- # 'param': '%s,%s' % (productName, msg),
- 'uid': ''
- }
- if verifyCode:
- body['param'] = '{}'.format(msg)
- else:
- body['param'] = '{},{}'.format(productName, msg)
- try:
- result = requests.post(self.API_URL, data = json.dumps(body), headers = headers, timeout = 15, verify=False)
- response = result.json()
- if response.get("code") != '000000':
- if response.get("code") == '100015':
- return {'result': False, 'msg': u'号码不合法'}
- elif response.get("code") == '105147':
- return {'result': False, 'msg': u'对同号码发送短信超过限定频率, 请稍后再试'}
- else:
- logger.error('send sms error,response=(code=%s msg=%s) , phoneNumber=%s'
- % (response.get("code", ""), response.get("msg", "").encode('utf-8'), phoneNumber))
- return {'result': False, 'msg': u'请求验证码失败, 请稍后再试'}
- return {'result': True, 'msg': 'success'}
- except JSONDecodeError as e:
- logger.exception(e)
- return {'result': False, 'msg': u'短信服务器繁忙,请稍后重试'}
- except ConnectionError as e:
- logger.exception(e)
- return {'result': False, 'msg': u'短信服务器不可用,请稍后重试'}
|