48 支付成功回调接口
# 正常只需要一个post回调给支付宝用(登录认证?支付宝要验证签名---》才信任,才改订单状态)
# 咱们写了一个get回调,给前端用,做双重验证保险一些
# 内网穿透:https://zhuanlan.zhihu.com/p/370483324
from rest_framework.views import APIView from .models import Order class PaySuccessView(APIView): def get(self,request): # 自己用的 try: out_trade_no=request.query_params.get('out_trade_no') # 根据订单号,查订单的状态 Order.objects.get(out_trade_no=out_trade_no,order_status=1) except Exception as e: raise e return APIResponse() # 给支付宝用---》回调回来数据格式 def post(self,request): # django :requset.POST request.GET --->QueryDict的对象--》不允许删除数据 try: result_data = request.data.dict() # request.data 是post的数据,复制了一份数据 out_trade_no = result_data.get('out_trade_no') # 订单号 signature = result_data.pop('sign') # 签名 from libs import apay # 验证签名,只有这个正确,才能修改订单状态--》防止恶意发送post请求给我们 result = apay.pay.verify(result_data, signature) if result and result_data["trade_status"] in ("TRADE_SUCCESS", "TRADE_FINISHED"): # 完成订单修改:订单状态、流水号、支付时间 models.Order.objects.filter(out_trade_no=out_trade_no).update(order_status=1) # 完成日志记录 logger.warning('%s订单支付成功' % out_trade_no) return Response('success') # 固定的 else: logger.error('%s订单支付失败' % out_trade_no) except: pass return Response('failed')
# 前端代码编译
npm run build #把前端项目编译成纯的html css js 会生成一个dist的文件夹(里面是纯的css,jss,html)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通