50 lines
2.3 KiB
Python
50 lines
2.3 KiB
Python
from datetime import datetime
|
|
from zoneinfo import ZoneInfo
|
|
|
|
import pydash
|
|
import requests
|
|
from rest_framework import status
|
|
from rest_framework.decorators import action
|
|
from rest_framework.request import Request
|
|
from rest_framework.response import Response
|
|
from rest_framework.viewsets import ViewSet
|
|
|
|
from sixGuoDjango import BaseResponse, ResData
|
|
from wechat_token.token工具包 import sixToken
|
|
|
|
|
|
class Scheme接口ViewSets(ViewSet):
|
|
@action(detail=False, methods=["get", "post", "put", "delete"], url_path="queryscheme")
|
|
def 查询scheme码(self, request: Request):
|
|
""""""
|
|
self_mini_openid = request.data.get("self_mini_openid", None)
|
|
self_mini_unionid = request.data.get("self_mini_unionid", None)
|
|
|
|
httpResData = BaseResponse(resData=ResData(listData=[""], dictData={"demo": "xiaozizi"}), ).model_dump()
|
|
return Response(data=httpResData, status=status.HTTP_200_OK)
|
|
|
|
@action(detail=False, methods=["get", "post", "put", "delete"], url_path="generatescheme")
|
|
def 获取加密scheme码(self, request: Request):
|
|
"""该接口用于获取小程序 scheme 码,适用于短信、邮件、外部网页、微信内等拉起小程序的业务场景。"""
|
|
self_mini_openid = request.data.get("self_mini_openid", None)
|
|
self_mini_unionid = request.data.get("self_mini_unionid", None)
|
|
mini_token = sixToken.get_mini_token()
|
|
expire_time = str(int(datetime.now(tz=ZoneInfo("Asia/Shanghai")).timestamp()))
|
|
schemeData = requests.post(url="https://api.weixin.qq.com/wxa/generatescheme",
|
|
params={"access_token": mini_token, },
|
|
json={
|
|
"jump_wxa": {
|
|
"path": "/pageTabBar/Home/Home",
|
|
"query": f"superior_unionid={self_mini_unionid}",
|
|
},
|
|
"is_expire": True, # 这里好像是必须要填的
|
|
"expire_interval": 30, # 有效天数,1-30天
|
|
"expire_type": 1
|
|
}
|
|
)
|
|
print(schemeData.json())
|
|
openlink = pydash.get(obj=schemeData.json(), path="openlink")
|
|
print("生成的小程序 scheme 码", openlink)
|
|
httpResData = BaseResponse(resData=ResData(listData=[""], dictData={"demo": "xiaozizi"}), ).model_dump()
|
|
return Response(data=httpResData, status=status.HTTP_200_OK)
|