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)

 

posted @   甜甜de微笑  阅读(104)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示