| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | # -*- encoding: utf-8 -*-"""@File    : EIoTClubObject.py@Time    : 2023/7/18 10:49@Author  : stephen@Email   : zhangdongming@asj6.wecom.work@Software: PyCharm"""import jsonimport randomimport timeimport requestsfrom Ansjer.config import DX_TECH_URL, DX_TECH_SECRET, LOGGER, DX_TECH_APP_KEYfrom Object.UnicomObject import UnicomObjeectfrom Object.WXTechObject import WXTechObjectclass 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)    @staticmethod    def query_order_record_list(api_version, **params):        """        查询iccid套餐订购记录        @param api_version: api版本号        @param params: iccid、operator        @return: 卡信息        """        url = DX_TECH_URL + f'/api/{api_version}/package/packageOrderRecord'        params['operator'] = 5  # 国际        return EIoTClubObject().dx_service_api(url, **params)
 |