2023-12-14 10:59:20 +08:00
|
|
|
import requests
|
2023-12-13 16:09:16 +08:00
|
|
|
from rest_framework import viewsets
|
|
|
|
from rest_framework.decorators import action
|
|
|
|
from rest_framework.response import Response
|
2023-12-14 10:59:20 +08:00
|
|
|
from django.conf import settings
|
2023-12-13 16:09:16 +08:00
|
|
|
|
|
|
|
from apps.jqr.parsers import WechatContentParser
|
|
|
|
from apps.jqr.renderers import WechatPublicContentRenderer
|
|
|
|
from apps.jqr.serializers import WechatPublicTokenSerializer, WechatEncryptSerializer
|
2023-12-14 13:22:07 +08:00
|
|
|
from apps.qc.models import QcCorpinfo
|
2023-12-13 16:09:16 +08:00
|
|
|
|
|
|
|
|
|
|
|
class WechatWorkerViewSet(viewsets.GenericViewSet):
|
|
|
|
|
2023-12-14 13:22:07 +08:00
|
|
|
@action(methods=['GET'], detail=False, serializer_class=WechatPublicTokenSerializer,
|
|
|
|
url_path=r'callback/(?P<path>\w+)', )
|
2023-12-13 17:10:26 +08:00
|
|
|
def verify(self, request, path, *args, **kwargs):
|
2023-12-14 10:59:20 +08:00
|
|
|
if not settings.DEBUG:
|
|
|
|
params = request.query_params
|
2023-12-14 13:22:07 +08:00
|
|
|
# cbtest.xbtool.cn
|
2023-12-14 10:59:20 +08:00
|
|
|
url = f'https://46i859447w.yicp.fun/event/callback/{path}'
|
2023-12-14 13:22:07 +08:00
|
|
|
res = requests.get(url, params=params)
|
|
|
|
data = res.text
|
|
|
|
return Response(data=int(data))
|
|
|
|
|
2023-12-13 17:10:26 +08:00
|
|
|
[business, corpid, agentid, uid] = path.split('_')
|
2023-12-14 13:22:07 +08:00
|
|
|
corp = QcCorpinfo.objects.get(corpid=corpid, agentid=agentid, uid=uid)
|
|
|
|
context = self.get_serializer_context()
|
|
|
|
context['corp'] = corp
|
|
|
|
serializer = self.get_serializer(data=request.query_params, context=context)
|
2023-12-13 16:09:16 +08:00
|
|
|
serializer.is_valid(raise_exception=True)
|
|
|
|
enchostr = serializer.data.get('echostr')
|
|
|
|
return Response(data=int(enchostr))
|
2023-12-14 13:22:07 +08:00
|
|
|
# return Response(data=enchostr)
|
2023-12-13 16:09:16 +08:00
|
|
|
|
|
|
|
@verify.mapping.post
|
2023-12-14 14:04:40 +08:00
|
|
|
def message(self, request, path, *args, **kwargs):
|
|
|
|
print(request.data)
|
2023-12-14 14:07:16 +08:00
|
|
|
if not settings.DEBUG:
|
|
|
|
data = request.data
|
|
|
|
# cbtest.xbtool.cn
|
2023-12-14 14:27:50 +08:00
|
|
|
renderer = WechatPublicContentRenderer()
|
|
|
|
data = renderer.render(data)
|
2023-12-14 14:07:16 +08:00
|
|
|
url = f'https://46i859447w.yicp.fun/event/callback/{path}'
|
2023-12-14 14:10:54 +08:00
|
|
|
res = requests.post(url, data=data, headers=request.headers)
|
2023-12-14 14:07:16 +08:00
|
|
|
return Response(data=res.json())
|
2023-12-13 16:09:16 +08:00
|
|
|
serializer = WechatEncryptSerializer(data=request.data)
|
|
|
|
serializer.is_valid(raise_exception=True)
|
2023-12-14 14:27:50 +08:00
|
|
|
# return Response(data=serializer.data)
|
|
|
|
return Response(data={})
|
2023-12-13 16:09:16 +08:00
|
|
|
|
|
|
|
def get_parsers(self):
|
|
|
|
if self.request.method == 'POST':
|
|
|
|
return [WechatContentParser()]
|
|
|
|
return super().get_parsers()
|
|
|
|
|
|
|
|
def get_renderers(self):
|
|
|
|
if self.request.method == 'POST':
|
|
|
|
return [WechatPublicContentRenderer()]
|
|
|
|
return super().get_renderers()
|