全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 898|回复: 5
打印 上一主题 下一主题

[已解决]Django 支付宝异步接收不到请问能帮我看一下么

[复制链接]
跳转到指定楼层
1#
发表于 2018-6-12 20:43:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 kangsgo 于 2018-6-12 23:28 编辑

我的代码如下:

  1. @login_required(login_url='/accounts/login/')
  2. @csrf_exempt
  3. def apliy_check_pay(request):
  4.     alipay=AliPay(
  5.         appid=ALIPAY_APPID,
  6.         app_notify_url=set_url,
  7.         app_private_key_path=os.path.join(settings.BASE_DIR, "app/app_private_key.pem"),
  8.         alipay_public_key_path=os.path.join(settings.BASE_DIR, "app/alipay_public_key.pem"),
  9.         sign_type="RSA2",
  10.         debug=True,
  11.     )
  12.     if request.method == 'POST':
  13.         mydata=request.POST.dict()
  14.         signature = mydata.pop("sign")
  15.         success=alipay.verify(mydata,signature)
  16.         if success:
  17.             order_sn=mydata['out_trade_no']
  18.             trade_no=mydata['trade_no']  
  19.             myfunding=Funding.objects.filter(number=order_sn)
  20.             existed_orders=myfunding.update(
  21.                     fudingpaid=True,
  22.                     number=str(order_sn),
  23.                     trade_no=str(trade_no),
  24.             )
  25.             return HttpResponse('支付成功')
  26.     if request.method == 'GET':
  27.         params=request.GET.dict()       
  28.         #test=request.GET.get('trade_status')       
  29.         sign=params.pop('sign',None)
  30.         print(sign)
  31.         status=alipay.verify(params,sign)
  32.         if status:
  33.             order_sn=params['out_trade_no']
  34.             trade_no=params['trade_no']
  35.             myfunding=Funding.objects.filter(number=order_sn)
  36.             existed_orders=myfunding.update(
  37.                     fudingpaid=True,
  38.                     number=str(order_sn),
  39.                     trade_no=str(trade_no),
  40.             )
  41.             return HttpResponse('支付成功')
  42.         return HttpResponse('支付失败')
  43.     else:
  44.         return  HttpResponseRedirect(reverse('accounts:payment_funding'))
复制代码

GET 是可以 GET 到的,是 POST 哪里写错了么?

使用的 github 上该封装 https://github.com/fzlee/alipay/blob/master/README.zh-hans.md

卡了很久了
2#
发表于 2018-6-12 22:59:44 来自手机 | 只看该作者
去掉 login_required 这个装饰器,异步是阿里的服务器POST请求你的接收不可能是登录状态的,当然就接收不到了
3#
 楼主| 发表于 2018-6-12 23:28:17 | 只看该作者
qaulau 发表于 2018-6-12 22:59
去掉 login_required 这个装饰器,异步是阿里的服务器POST请求你的接收不可能是登录状态的,当然就接收不到 ...

谢谢,牛逼
4#
发表于 2018-6-12 23:28:58 | 只看该作者
楼上正解。。。回调是没有任何cookie的 所以 csrf  login都要去掉
5#
 楼主| 发表于 2018-6-12 23:31:28 | 只看该作者
jhsyue 发表于 2018-6-12 23:28
楼上正解。。。回调是没有任何cookie的 所以 csrf  login都要去掉

好的,谢谢~
6#
发表于 2018-6-12 23:36:17 来自手机 | 只看该作者
学习了,我也感兴趣
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-11-7 10:38 , Processed in 0.090026 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表