AliSmsObject.py 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. # -*- coding: utf-8 -*-
  2. import uuid
  3. from aliyunsdkcore.client import AcsClient
  4. from aliyunsdkcore.profile import region_provider
  5. from aliyunsdkdysmsapi.request.v20170525 import SendSmsRequest
  6. import json
  7. from django.conf import settings
  8. ALICLOUD_AK = settings.ALICLOUD_AK
  9. ALICLOUD_SK = settings.ALICLOUD_SK
  10. """
  11. 短信业务调用接口示例,版本号:v20170525
  12. Created on 2017-06-12
  13. """
  14. class AliSmsObject(object):
  15. def __init__(self):
  16. # 注意:不要更改
  17. REGION = "cn-hangzhou"
  18. PRODUCT_NAME = "Dysmsapi"
  19. DOMAIN = "dysmsapi.aliyuncs.com"
  20. self.acs_client = AcsClient(ALICLOUD_AK, ALICLOUD_SK, REGION)
  21. region_provider.add_endpoint(PRODUCT_NAME, REGION, DOMAIN)
  22. def do_send_sms(self, business_id, phone_numbers, sign_name, template_code, template_param=None):
  23. smsRequest = SendSmsRequest.SendSmsRequest()
  24. # 申请的短信模板编码,必填
  25. smsRequest.set_TemplateCode(template_code)
  26. # 短信模板变量参数
  27. if template_param is not None:
  28. smsRequest.set_TemplateParam(template_param)
  29. # 设置业务请求流水号,必填。
  30. smsRequest.set_OutId(business_id)
  31. # 短信签名
  32. smsRequest.set_SignName(sign_name)
  33. # 数据提交方式
  34. # smsRequest.set_method(MT.POST)
  35. # 数据提交格式
  36. # smsRequest.set_accept_format(FT.JSON)
  37. # 短信发送的号码列表,必填。
  38. smsRequest.set_PhoneNumbers(phone_numbers)
  39. # 调用短信发送接口,返回json
  40. smsResponse = self.acs_client.do_action_with_exception(smsRequest)
  41. # TODO 业务处理
  42. return smsResponse
  43. # 发送验证码
  44. def send_code_sms(self, phone, code, sign_name,temp_msg):
  45. __business_id = uuid.uuid1()
  46. # print(__business_id)
  47. # params = "{\"code\":\"{"+str(code)+"}\"}"
  48. params = "{\"code\":\"" + str(code) + "\"}"
  49. # params = u'{"name":"wqb","code":"12345678","address":"bz","phone":"13000000000"}'
  50. # 签名
  51. # sign_name = 'Ansjer'
  52. # 模板信息
  53. # temp_msg = 'SMS_151600991'
  54. res = self.do_send_sms(__business_id, phone, sign_name, temp_msg, params)
  55. # print(send_sms(__business_id, "13119657713", "云通信测试", "SMS_5250008", params))
  56. res_json = json.loads(res.decode('utf-8'))
  57. print(res_json)
  58. # {"Message":"OK","RequestId":"985FA027-C887-4186-A8F5-B6B8F3D123DB","BizId":"973407842937195533^0","Code":"OK"}
  59. # code = isv.BUSINESS_LIMIT_CONTROL 一分钟只能发一次
  60. return res_json
  61. # 发送验证码
  62. def send_code_sms_cloud(self, phone, params, sign_name, temp_msg):
  63. __business_id = uuid.uuid1()
  64. # print(__business_id)
  65. # params = "{\"code\":\"{"+str(code)+"}\"}"
  66. params = params
  67. # params = u'{"name":"wqb","code":"12345678","address":"bz","phone":"13000000000"}'
  68. # 签名
  69. # sign_name = 'Ansjer'
  70. # 模板信息
  71. # temp_msg = 'SMS_151600991'
  72. res = self.do_send_sms(__business_id, phone, sign_name, temp_msg, params)
  73. # print(send_sms(__business_id, "13119657713", "云通信测试", "SMS_5250008", params))
  74. res_json = json.loads(res.decode('utf-8'))
  75. print(res_json)
  76. # {"Message":"OK","RequestId":"985FA027-C887-4186-A8F5-B6B8F3D123DB","BizId":"973407842937195533^0","Code":"OK"}
  77. # code = isv.BUSINESS_LIMIT_CONTROL 一分钟只能发一次
  78. return res_json
  79. #
  80. # aliSms = AliSmsObject()
  81. # aliSms.send_sign_in_sms(phone=13119657713,code=123456)