|
@@ -0,0 +1,89 @@
|
|
|
+# -*- encoding: utf-8 -*-
|
|
|
+"""
|
|
|
+@File : EIoTClubObject.py
|
|
|
+@Time : 2023/7/18 10:49
|
|
|
+@Author : stephen
|
|
|
+@Email : zhangdongming@asj6.wecom.work
|
|
|
+@Software: PyCharm
|
|
|
+"""
|
|
|
+import json
|
|
|
+import random
|
|
|
+import time
|
|
|
+
|
|
|
+import requests
|
|
|
+
|
|
|
+from Ansjer.config import DX_TECH_URL, DX_TECH_SECRET, LOGGER, DX_TECH_APP_KEY
|
|
|
+from Object.UnicomObject import UnicomObjeect
|
|
|
+from Object.WXTechObject import WXTechObject
|
|
|
+
|
|
|
+
|
|
|
+class EIoTClubObject:
|
|
|
+
|
|
|
+ def __init__(self):
|
|
|
+ self.headers = {'content-type': 'application/json'}
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def get_system_params():
|
|
|
+ """
|
|
|
+ 请求接口必传系统参数
|
|
|
+ """
|
|
|
+ nonce = ''.join(str(random.choice(range(1, 10))) for _ in range(5))
|
|
|
+ return {
|
|
|
+ 'appkey': DX_TECH_APP_KEY,
|
|
|
+ 'nonce': int(nonce),
|
|
|
+ 'timestamp': int(time.time()),
|
|
|
+ }
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def get_request_params(**params):
|
|
|
+ """
|
|
|
+ 将业务参数与系统参数合并后进行加签得到请求参数体
|
|
|
+ """
|
|
|
+ iot_obj = WXTechObject()
|
|
|
+
|
|
|
+ # 获取请求系统参数
|
|
|
+ data = EIoTClubObject().get_system_params()
|
|
|
+ # 系统参数与业务参数合并
|
|
|
+ params = dict(data, **params)
|
|
|
+ # 合并参数后进行升序加密得到sign
|
|
|
+ sign = iot_obj.getSign(DX_TECH_SECRET, **params)
|
|
|
+ params['sign'] = sign
|
|
|
+ params = json.dumps(params)
|
|
|
+ LOGGER.info('*****鼎芯API请求数据:{}'.format(params))
|
|
|
+ return params
|
|
|
+
|
|
|
+ def dx_service_api(self, url, **params):
|
|
|
+ """
|
|
|
+ @param url 请求地址
|
|
|
+ @param 业务必填参数
|
|
|
+ 鼎芯业务API 统一封装加签请求
|
|
|
+ """
|
|
|
+ # 系统参数合并业务参数并加签得到请求参数
|
|
|
+ rq_body = self.get_request_params(**params)
|
|
|
+ response = requests.post(url, data=rq_body, headers=self.headers)
|
|
|
+ assert response.status_code == 200
|
|
|
+ return UnicomObjeect().get_text_dict(response)
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def get_cards_info(api_version, **params):
|
|
|
+ """
|
|
|
+ 根据卡号,获取单卡信息及流量使用信息
|
|
|
+ @param api_version: api版本号
|
|
|
+ @param params: iccid、operator
|
|
|
+ @return: 卡信息
|
|
|
+ """
|
|
|
+ url = DX_TECH_URL + f'/api/{api_version}/card/getCardsInfo'
|
|
|
+ params['operator'] = 5 # 国际
|
|
|
+ return EIoTClubObject().dx_service_api(url, **params)
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def query_order_package_list(api_version, **params):
|
|
|
+ """
|
|
|
+ 查询iccid可订购套餐列表
|
|
|
+ @param api_version: api版本号
|
|
|
+ @param params: iccid、operator
|
|
|
+ @return: 卡信息
|
|
|
+ """
|
|
|
+ url = DX_TECH_URL + f'/api/{api_version}/package/listOrderPackageByIccid'
|
|
|
+ params['operator'] = 5 # 国际
|
|
|
+ return EIoTClubObject().dx_service_api(url, **params)
|