DeviceController.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. # @Author : Rocky
  2. # @File : DeviceController.py.py
  3. # @Time : 2025/2/19 11:22
  4. import requests
  5. from django.views.generic.base import View
  6. from Controller.WeChatMiniProgram.CommonController import CommonObj
  7. from Object.Enums.WeChatEnum import WeChatMiniProgramAPIEnum
  8. from Object.ResponseObject import ResponseObject
  9. class DeviceView(View):
  10. def get(self, request, *args, **kwargs):
  11. request.encoding = 'utf-8'
  12. operation = kwargs.get('operation')
  13. return self.validation(request.GET, request, operation)
  14. def post(self, request, *args, **kwargs):
  15. request.encoding = 'utf-8'
  16. operation = kwargs.get('operation')
  17. return self.validation(request.POST, request, operation)
  18. def validation(self, request_dict, request, operation):
  19. lang = request_dict.get('lang', 'cn')
  20. response = ResponseObject(lang)
  21. if operation == 'getSnTicket':
  22. return self.get_sn_ticket(request_dict, response)
  23. @staticmethod
  24. def get_sn_ticket(request_dict, response):
  25. """
  26. 获取设备票据
  27. https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/hardware-device/getSnTicket.html
  28. @param request_dict:
  29. @param response:
  30. @return: res
  31. """
  32. uid = request_dict.get('uid', None)
  33. model_id = request_dict.get('model_id', None)
  34. if not all([uid, model_id]):
  35. return response.json(444)
  36. try:
  37. access_token = CommonObj.get_access_token()
  38. url = WeChatMiniProgramAPIEnum.getSnTicketAPI.value.format(access_token)
  39. data = {
  40. 'sn': uid,
  41. 'model_id': model_id
  42. }
  43. r = requests.post(url=url, json=data, timeout=5)
  44. result = eval(r.content)
  45. errcode = result.get('errcode')
  46. assert errcode == 0
  47. sn_ticket = result['sn_ticket']
  48. res = {
  49. 'sn_ticket': sn_ticket
  50. }
  51. return response.json(0, res)
  52. except Exception as e:
  53. return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))