From 0a61fffe7a9f06c822c82f0ebde9cf680cb05128 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 22 Jun 2021 14:58:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=8E=E4=B8=BA=E4=BA=91=E7=9F=AD=E4=BF=A1?= =?UTF-8?q?=E5=8F=91=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test_server/crm/hwmsg.py | 24 ++++++++++++++++--- .../crm/migrations/0035_auto_20210622_1420.py | 24 +++++++++++++++++++ test_server/crm/models.py | 2 +- test_server/crm/views.py | 12 ++++++++-- 4 files changed, 56 insertions(+), 6 deletions(-) create mode 100644 test_server/crm/migrations/0035_auto_20210622_1420.py diff --git a/test_server/crm/hwmsg.py b/test_server/crm/hwmsg.py index f304884..dd9fffa 100644 --- a/test_server/crm/hwmsg.py +++ b/test_server/crm/hwmsg.py @@ -9,12 +9,12 @@ import requests #需要先使用pip install requests命令安装依赖 url = 'https://rtcsms.cn-north-1.myhuaweicloud.com:10743/sms/batchSendSms/v1' #APP接入地址+接口访问URI APP_KEY = "Zee8JqWxdjEFteKTIK2xBs1T4QVq" #APP_Key APP_SECRET = "IU035p6THoKmf0joKMEo7GuXR2YH" #APP_Secret -sender = "csms12345678" #国内短信签名通道号或国际/港澳台短信通道号 -TEMPLATE_ID = "f81f97bd0ffe4c2292a02505e0fc20ec" #模板ID +sender = "8821061835858" #国内短信签名通道号或国际/港澳台短信通道号 +TEMPLATE_ID = "da24fc8c77dc4789917a7cd1d7ad4026" #模板ID #条件必填,国内短信关注,当templateId指定的模板类型为通用模板时生效且必填,必须是已审核通过的,与模板类型一致的签名名称 #国际/港澳台短信不用关注该参数 -signature = "华为云短信测试" #签名名称 +signature = "中科辐射学堂" #签名名称 # 必填,全局号码格式(包含国家码),示例:+86151****6789,多个号码之间用英文逗号分隔 receiver = "+8618911936305" #短信接收人号码 @@ -45,6 +45,24 @@ def buildWSSEHeader(appKey, appSecret): digestBase64 = base64.b64encode(digest.encode()).decode() #PasswordDigest return 'UsernameToken Username="{}",PasswordDigest="{}",Nonce="{}",Created="{}"'.format(appKey, digestBase64, nonce, now); +def sendMsg(phone, code): + phone = '+86'+phone + code = '["'+ str(code) + '"]' + # 请求Headers + header = {'Authorization': 'WSSE realm="SDP",profile="UsernameToken",type="Appkey"', + 'X-WSSE': buildWSSEHeader(APP_KEY, APP_SECRET)} + # 请求Body + formData = {'from': sender, + 'to': phone, + 'templateId': TEMPLATE_ID, + 'templateParas': code, + 'statusCallback': statusCallBack, +# 'signature': signature #使用国内短信通用模板时,必须填写签名名称 + } + # 为防止因HTTPS证书认证失败造成API调用失败,需要先忽略证书信任问题 + r = requests.post(url, data=formData, headers=header, verify=False) + return r.text + def main(): # 请求Headers header = {'Authorization': 'WSSE realm="SDP",profile="UsernameToken",type="Appkey"', diff --git a/test_server/crm/migrations/0035_auto_20210622_1420.py b/test_server/crm/migrations/0035_auto_20210622_1420.py new file mode 100644 index 0000000..722e2b8 --- /dev/null +++ b/test_server/crm/migrations/0035_auto_20210622_1420.py @@ -0,0 +1,24 @@ +# Generated by Django 3.0.4 on 2021-06-22 06:20 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('crm', '0034_candidate_create_admin'), + ] + + operations = [ + migrations.AlterField( + model_name='candidate', + name='consumer', + field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='candidate_consumer', to='crm.Consumer'), + ), + migrations.AlterField( + model_name='sendcode', + name='code', + field=models.CharField(max_length=6, verbose_name='验证码'), + ), + ] diff --git a/test_server/crm/models.py b/test_server/crm/models.py index 66b5e26..48290f4 100644 --- a/test_server/crm/models.py +++ b/test_server/crm/models.py @@ -102,7 +102,7 @@ class SendCode(CommonModel): 验证码发送记录 ''' phone = models.CharField(max_length=11, verbose_name='发送号码') - code = models.CharField(max_length=4, verbose_name= '验证码') + code = models.CharField(max_length=6, verbose_name= '验证码') class Candidate(CommonModel): consumer = models.ForeignKey(Consumer, on_delete=models.DO_NOTHING, related_name='candidate_consumer') diff --git a/test_server/crm/views.py b/test_server/crm/views.py index 11b31d9..70f4dc3 100644 --- a/test_server/crm/views.py +++ b/test_server/crm/views.py @@ -36,6 +36,7 @@ from django.http import Http404 from .spider import getZs import time from server.config import * +from .hwmsg import sendMsg def my_payload_handler(user, dtype="admin"): payload = { @@ -320,7 +321,7 @@ class ConsumerViewSet(ModelViewSet): 发送验证码 ''' client = ZhenziSmsClient(sms_url, sms_appid, sms_appsecret) - code = random.randint(1000,9999) + code = random.randint(10000,99999) phone = request.query_params.get('phone') params = {'message':'您的验证码为:' + str(code) +',5分钟内有效', 'number': phone} result = json.loads(client.send(params)) @@ -328,7 +329,14 @@ class ConsumerViewSet(ModelViewSet): SendCode.objects.create(phone=phone, code=code) return Response(status=status.HTTP_200_OK) else: - return Response({'error':result['data']}) + # 尝试华为云短信发送 + result = json.loads(sendMsg(phone, code)) + if result['code'] == '000000': + SendCode.objects.create(phone=phone, code=code) + return Response(status=status.HTTP_200_OK) + else: + return Response({'error':'发送失败'}) + # return Response({'error':result['data']}) @action(methods=['post','delete','get'], detail=False, url_path='collects', url_name='create_collects', perms_map=[{'*':'my_collects'}])