请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

支付宝支付成功后,返回的get请求中单步调试并没有trade_status

class AlipayView(APIView):

def get(self, request):
    """
    处理支付宝的return_url返回
    :param request:
    :return:
    """
    processed_dict = {}
    for key, value in request.GET.items():
        processed_dict[key] = value

    sign = processed_dict.pop("sign", None)
    server_ip = "149.129.53.199"
    alipay = AliPay(
        appid = "2016101400687743",
        # app_notify_url="http://127.0.0.1:8000/alipay/return/",
        app_notify_url = "http://" + server_ip + ":8000/alipay/return/",
        app_private_key_path = private_key_path,
        alipay_public_key_path = ali_pub_key_path,  # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
        debug = True,  # 默认False,
        return_url = "http://" + server_ip + ":8000/alipay/return/"
    )
    verify_re = alipay.verify(processed_dict, sign)
    #这里我们可以调试看一下,如果verify_re为真,说明验证成功
    if verify_re is True:
        order_sn = processed_dict.get('out_trade_no', None)#订单号
        trade_no = processed_dict.get('trade_no', None)#支付宝交易号
        trade_status = processed_dict.get('trade_status', None)#交易状态

        existed_orders = OrderInfo.objects.filter(order_sn=order_sn)
        for existed_order in existed_orders:
            existed_order.pay_status = trade_status  #更新交易状态
            existed_order.trade_no = trade_no
            existed_order.pay_time = datetime.now()
            existed_order.save()

        response = redirect("index")
        response.set_cookie("nextPath","pay", max_age=2)
        return response
    else:
        response = redirect("index")
        return response

老师,请问get请求中是不是并没有trade_status,我们的trade_status更新是依赖异步的POST请求,进行的更新?
图片描述
图片描述

正在回答 回答被采纳积分+3

4回答

慕姐4046084 2020-06-01 09:47:50

现在问题解决了吗,这个问题,就是没有trade_status 之后的结果是订单状态一直没有更新

0 回复 有任何疑惑可以回复我~
  • bobby #1
    你debug一下看看你的执行逻辑里面为什么没有执行这个
    回复 有任何疑惑可以回复我~ 2020-06-01 14:54:23
bobby 2019-11-24 17:02:38

https://img1.sycdn.imooc.com//szimg/5dda471209e6c75f08270460.jpg 这是我刚查看的接口文档,现在通过code来区别成功和失败了 比如这里的code就是代表成功

0 回复 有任何疑惑可以回复我~
  • 提问者 慕设计0293856 #1
    请问代码具体应该怎么去做
    回复 有任何疑惑可以回复我~ 2019-11-25 21:46:20
  • bobby 回复 提问者 慕设计0293856 #2
    你直接判断这个字段来确定是否成功。也就是这个字段只要是10000就代表成功。否则代表失败
    回复 有任何疑惑可以回复我~ 2019-11-26 13:44:23
  • 提问者 慕设计0293856 回复 bobby #3
    不知道应该通过什么方式获取这个字段,processed_dict里边没有code这个字段
    回复 有任何疑惑可以回复我~ 2019-11-27 17:42:12
bobby 2019-11-23 13:50:17

processed_dict 我需要看到支付宝给你回传的值有哪些 

0 回复 有任何疑惑可以回复我~
  • 提问者 慕设计0293856 #1
    processed_dict提交了截图
    回复 有任何疑惑可以回复我~ 2019-11-23 16:59:53
bobby 2019-11-18 15:08:57

如果没有trade_status,你把所有返回的信息截图我看看呢

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信