# -*- encoding: utf-8 -*- """ @File : WXTechObject.py @Time : 2023/5/6 15:28 @Author : stephen @Email : zhangdongming@asj6.wecom.work @Software: PyCharm """ import hashlib import json import random import time import requests from Ansjer.config import WX_TECH_URL, WX_TECH_APP_KEY, TWX_TECH_SECRET from Object.UnicomObject import UnicomObjeect class WXTechObject: def __init__(self): self.headers = {'content-type': 'application/json;charset=utf-8'} @staticmethod def getSign(secret, **data): dict_2 = dict(sorted(data.items(), key=lambda item: item[0], reverse=False)) data_list = [] for item in dict_2.items(): if item[0] and item[1]: data_list.append("{}={}".format(item[0], item[1])) sign_param = '&'.join(data_list) push_key = '&secret={}'.format(secret) param = sign_param + push_key return hashlib.sha1(param.encode("utf-8")).hexdigest().upper() @staticmethod def get_system_params(): """ 请求接口必传系统参数 """ return { 'appkey': WX_TECH_APP_KEY, 'nonce': int(''.join(str(random.choice(range(10))) for _ in range(5))), 'timestamp': int(time.time()), } def get_cards_info(self, **params): """ 根据卡号,获取单卡信息及流量使用信息 @param params: iccid、operator @return: 卡信息 """ url = WX_TECH_URL + '/api/v2/card/getCardsInfo' # 系统参数 data = WXTechObject().get_system_params() params = dict(data, **params) # 合并参数后进行升序加密得到sign sign = WXTechObject.getSign(TWX_TECH_SECRET, **params) params['sign'] = sign response = requests.post(url, data=json.dumps(params), headers=self.headers) return UnicomObjeect().get_text_dict(response) if __name__ == '__main__': pass # data = {'iccid': '8986112128003439900', 'operator': 3} # print(WXTechObject().get_cards_info(**data))