juhe 发送短信验证码

import urllib.parse
import requests
import json
==============定义一个公共类===========================
class Message(object):
_KEY = '90c36a579a309a10e713a85adc06e264'
_TEMPLATE_ID = 131421
_MESSAGE_SEND_URL = 'http://v.juhe.cn/sms/send'

def send(self, mobile, code, dtype='json'):
if str(code).__len__() != 4:
return False, '验证码长度不为4'
if not str(mobile).isdigit() or str(mobile).__len__() != 11:
return False, '手机号错误'
if not str(dtype) != 'json' and not str(dtype) != 'xml':
return False, '格式不支持'
temp = urllib.parse.urlencode({'#code#=': str(code).encode('utf8')}).replace('=', '')
url = '%s?mobile=%s&tpl_id=%d&tpl_value=%s&key=%s&dtype=%s' % (self._MESSAGE_SEND_URL, mobile,
self._TEMPLATE_ID,
temp, self._KEY, dtype)
response = requests.post(url)
content = response.content.decode('utf-8')
content = json.loads(content)
reason = content.get('reason', None)
result = content.get('result', None)
error_code = content.get('error_code', None)
if error_code is None or reason is None:
return False, '发送失败'
if error_code == 0:
if result is None:
return False, '未知错误'
else:
sid = result.get('sid', None)
if sid is None:
return False, '未知错误'
else:
return True, sid
else:
if reason is None:
return False, '未知错误'
else:
return False, reason
=========================调用短信接口=======================
try:
mess = Message()
code_generate = str(random.randint(1000, 9999))
res, msg = mess.send(phone, code_generate)
if res:
now = int(time.time())
ValidCode.objects.create(
phone=phone,
sid=msg,
valid_code_time=now,
code=code_generate
)
return HttpResponse(json.dumps({'state': 0, 'msg': '发送成功验证码在两分钟内有效'}),
status=200,
content_type='application/json; charset=utf-8')
else:
return HttpResponse(json.dumps({'state': -2, 'msg': msg}),
status=200,
content_type='application/json; charset=utf-8')
except Exception as e:
print(e)
msg = '验证码发送失败请稍后再试'
return HttpResponse(json.dumps({'state': -2, 'msg': msg}),
status=200,
content_type='application/json; charset=utf-8')
posted @ 2020-03-06 15:55  关美丽  阅读(360)  评论(0编辑  收藏  举报