EIoTClubObject.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. # -*- encoding: utf-8 -*-
  2. """
  3. @File : EIoTClubObject.py
  4. @Time : 2023/7/18 10:49
  5. @Author : stephen
  6. @Email : zhangdongming@asj6.wecom.work
  7. @Software: PyCharm
  8. """
  9. import json
  10. import random
  11. import time
  12. import requests
  13. from Ansjer.config import DX_TECH_URL, DX_TECH_SECRET, LOGGER, DX_TECH_APP_KEY
  14. from Object.UnicomObject import UnicomObjeect
  15. from Object.WXTechObject import WXTechObject
  16. class EIoTClubObject:
  17. def __init__(self):
  18. self.headers = {'content-type': 'application/json'}
  19. @staticmethod
  20. def get_system_params():
  21. """
  22. 请求接口必传系统参数
  23. """
  24. nonce = ''.join(str(random.choice(range(1, 10))) for _ in range(5))
  25. return {
  26. 'appkey': DX_TECH_APP_KEY,
  27. 'nonce': int(nonce),
  28. 'timestamp': int(time.time()),
  29. }
  30. @staticmethod
  31. def get_request_params(**params):
  32. """
  33. 将业务参数与系统参数合并后进行加签得到请求参数体
  34. """
  35. iot_obj = WXTechObject()
  36. # 获取请求系统参数
  37. data = EIoTClubObject().get_system_params()
  38. # 系统参数与业务参数合并
  39. params = dict(data, **params)
  40. # 合并参数后进行升序加密得到sign
  41. sign = iot_obj.getSign(DX_TECH_SECRET, **params)
  42. params['sign'] = sign
  43. params = json.dumps(params)
  44. LOGGER.info('*****鼎芯API请求数据:{}'.format(params))
  45. return params
  46. def dx_service_api(self, url, **params):
  47. """
  48. @param url 请求地址
  49. @param 业务必填参数
  50. 鼎芯业务API 统一封装加签请求
  51. """
  52. # 系统参数合并业务参数并加签得到请求参数
  53. rq_body = self.get_request_params(**params)
  54. response = requests.post(url, data=rq_body, headers=self.headers)
  55. assert response.status_code == 200
  56. return UnicomObjeect().get_text_dict(response)
  57. @staticmethod
  58. def get_cards_info(api_version, **params):
  59. """
  60. 根据卡号,获取单卡信息及流量使用信息
  61. @param api_version: api版本号
  62. @param params: iccid、operator
  63. @return: 卡信息
  64. """
  65. url = DX_TECH_URL + f'/api/{api_version}/card/getCardsInfo'
  66. params['operator'] = 5 # 国际
  67. return EIoTClubObject().dx_service_api(url, **params)
  68. @staticmethod
  69. def query_order_package_list(api_version, **params):
  70. """
  71. 查询iccid可订购套餐列表
  72. @param api_version: api版本号
  73. @param params: iccid、operator
  74. @return: 卡信息
  75. """
  76. url = DX_TECH_URL + f'/api/{api_version}/package/listOrderPackageByIccid'
  77. params['operator'] = 5 # 国际
  78. return EIoTClubObject().dx_service_api(url, **params)