class JsJDK(APIView):
'''
JsJDk
@params url --> 页面url;
'''
def get(self, request, *args, **kwargs) -> Response:
'''
jsapi_ticket
@params url --> 页面url;
'''
url = self.request.GET.get('url')
logger.warning(f'url为:【{url}】')
data = {
'nonceStr': ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(15)), # 创建随机字符串,
'jsapi_ticket': self._get_js_ticket(),
'timestamp': int(time.time()), # 创建一个时间戳
'url': url
}
pinjie = '&'.join([f'{key.lower()}={data[key]}' for key in sorted(data)]) # 根据字符的ASCII值进行排序,拼接
data['signature'] = hashlib.sha1(pinjie.encode('utf-8')).hexdigest() # 对字符串进行sha1加密
return Response(dict({'code': 0, 'msg': 'success'}, **data))
def _get_access_token(self) -> str:
'''
access_token
'''
access_token = cache.get('access_token')
if not access_token:
result = requests.get(f'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential'
f'&appid={appid}&secret={secret}').json()
logger.success(f'(缓存到期)重新获取access_token返回值:{result}')
access_token = result.get('access_token')
cache.set('access_token', str(access_token), timeout=7000)
return access_token
def _get_js_ticket(self) -> str:
'''ticket'''
access_token = self._get_access_token()
ticket = cache.get(access_token)
if not ticket:
result = requests.get(
f'https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={access_token}&type=jsapi').json()
logger.debug(f'(缓存到期)重新获取js_ticket【{result}】')
ticket = result.get('ticket')
cache.set(access_token, ticket, timeout=7000)
return ticket
python --公众号获取jsjdk(jsapi_ticket)
猜你喜欢
转载自blog.csdn.net/weixin_44634704/article/details/131427886
今日推荐
周排行