支付宝回调notify_url中没有trade_status?
来源:10-15 支付宝接口和vue联调-1
烈焰卡卡
2018-07-27
支付成功之后,支付宝回调notify_url时好像没有trade_status,因为写入数据库时会报一个warning是支付状态字段不能为空,只可能是从参数中取出时没有该参数所以默认为None,但之后4min后支付宝会重新发一个post请求,这时候就更新成功了。想问一下,这里和课程中好像有些出入,也和API文档中有出入,为什么支付成功之后出发的第一次请求没有trade_status?页面支付跳转到首页时,查看日志打印出来的url也是没有trade_status参数的
写回答
3回答
-
烈焰卡卡
提问者
2018-07-27
问题已解决:
网上查了一下,支付宝接口好像改版后,同步跳转的url中是不带有trade_status参数,只存在于异步回调url中,所以先异步回调更新了订单状态,然后同步跳转时只要去掉更新订单的逻辑即可,只进行页面重定向跳转
152018-08-03 -
慕姐4046084
2020-06-01
现在这个支付成功跳转到首页之后,更改订单状态需要怎么去修改。目前报错一直是支付成功之后,没有更改订单状态
052020-06-01 -
烈焰卡卡
提问者
2018-08-01
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) alipay = AliPay( appid=app_id, app_notify_url="http://123.206.30.254:8000/alipay/return/", app_private_key_path=private_key_path, alipay_public_key_path=ali_pub_key_path, debug=True, # 默认False, return_url="http://123.206.30.254:8000/alipay/return/" ) verify_re = alipay.verify(processed_dict, sign) if verify_re: # 支付宝接口改版,同步跳转url中不带有trade_status参数,不更新订单状态,只做跳转 # 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') # 设置跳转到订单页面,3秒 response.set_cookie('nextPath', 'pay', max_age=3) return response else: response = redirect("index") return response
def post(self, request): """ 处理支付宝的notify_url :param request: :return: """ processed_dict = {} for key, value in request.POST.items(): processed_dict[key] = value sign = processed_dict.pop("sign", None) alipay = AliPay( appid=app_id, app_notify_url="http://123.206.30.254:8000/alipay/return/", app_private_key_path=private_key_path, alipay_public_key_path=ali_pub_key_path, debug=True, # 默认False, return_url="http://123.206.30.254:8000/alipay/return/" ) verify_re = alipay.verify(processed_dict, sign) if verify_re: 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: order_goods = existed_order.goods.all() for order_good in order_goods: goods = order_good.goods goods.sold_num += order_good.goods_num goods.save() existed_order.pay_status = trade_status existed_order.trade_no = trade_no existed_order.pay_time = datetime.now() existed_order.save() return HttpResponse('success')
00
Python前后端分离开发Vue+Django REST framework实战
Django REST framework课程视频,RESTFul API前后端分离开发
2873 学习 · 2457 问题
相似问题