AliyunSmsObject.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. # -*- encoding: utf-8 -*-
  2. """
  3. @File : AliyunSmsObject.py
  4. @Time : 2022/7/19 8:50
  5. @Author : stephen
  6. @Email : zhangdongming@asj6.wecom.work
  7. @Software: PyCharm
  8. """
  9. import json
  10. # -*- coding: utf-8 -*-
  11. import uuid
  12. from aliyunsdkcore.client import AcsClient
  13. from aliyunsdkcore.profile import region_provider
  14. from aliyunsdkdysmsapi.request.v20170525 import SendSmsRequest
  15. from django.conf import settings
  16. OSS_STS_ACCESS_KEY = settings.OSS_STS_ACCESS_KEY
  17. OSS_STS_ACCESS_SECRET = settings.OSS_STS_ACCESS_SECRET
  18. """
  19. 短信业务调用接口示例,版本号:v20170525
  20. Created on 2017-06-12
  21. """
  22. class AliyunSmsObject(object):
  23. def __init__(self):
  24. # 注意:不要更改
  25. REGION = "cn-hangzhou"
  26. PRODUCT_NAME = "Dysmsapi"
  27. DOMAIN = "dysmsapi.aliyuncs.com"
  28. self.acs_client = AcsClient(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, REGION)
  29. region_provider.add_endpoint(PRODUCT_NAME, REGION, DOMAIN)
  30. def do_send_sms(self, business_id, phone_numbers, sign_name, template_code, template_param=None):
  31. smsRequest = SendSmsRequest.SendSmsRequest()
  32. # 申请的短信模板编码,必填
  33. smsRequest.set_TemplateCode(template_code)
  34. # 短信模板变量参数
  35. if template_param is not None:
  36. smsRequest.set_TemplateParam(template_param)
  37. # 设置业务请求流水号,必填。
  38. smsRequest.set_OutId(business_id)
  39. # 短信签名
  40. smsRequest.set_SignName(sign_name)
  41. # 数据提交方式
  42. # smsRequest.set_method(MT.POST)
  43. # 数据提交格式
  44. # smsRequest.set_accept_format(FT.JSON)
  45. # 短信发送的号码列表,必填。
  46. smsRequest.set_PhoneNumbers(phone_numbers)
  47. # 调用短信发送接口,返回json
  48. smsResponse = self.acs_client.do_action_with_exception(smsRequest)
  49. # TODO 业务处理
  50. return smsResponse
  51. # 发送验证码
  52. def send_code_sms(self, phone, code, sign_name, temp_msg):
  53. __business_id = uuid.uuid1()
  54. params = "{\"code\":\"" + str(code) + "\"}"
  55. res = self.do_send_sms(__business_id, phone, sign_name, temp_msg, params)
  56. res_json = json.loads(res.decode('utf-8'))
  57. return res_json
  58. # 发送验证码
  59. def send_code_sms_cloud(self, phone, params, sign_name, temp_msg):
  60. __business_id = uuid.uuid1()
  61. params = params
  62. res = self.do_send_sms(__business_id, phone, sign_name, temp_msg, params)
  63. res_json = json.loads(res.decode('utf-8'))
  64. return res_json
  65. if __name__ == '__main__':
  66. pass
  67. # sign = '周视'
  68. # ali_sms = AliyunSmsObject()
  69. # params = u'{"devname":"DKOGER11A","usage":"流量365M","usable":"流量12M"}'
  70. # res = ali_sms.send_code_sms_cloud('15768812162', params, sign, 'SMS_246090429')
  71. # print(ali_sms)