python 支付宝异步接受不到信息

2016-06-15 03:32:23 +08:00
 kangsgo

异步接受不到信息,搞了好几晚上一直没有搞定,希望能帮我看一下,谢啦

参照的项目:

https://github.com/fengli/alipay_python

Django 的异步接收 view :

创建数据在别的模块测试了貌似没有问题

def notify_url_handler(request):
	'''doc http://blog.csdn.net/hornbills/article/details/40338949'''
	if request.method=='POST':
		a=Personblling.objects.create(user_id=1,billingmoney=1,billingstatus=True,trade_no='1')
		if trade_status=='WAIT_SELLER_SEND_GOODS':
			return HttpResponse("success")
		else:
			return HttpResponse("success")
	else:
		a=Personblling.objects.create(user_id=1,billingmoney=2,billingstatus=True,trade_no='1')
		return HttpResponse("whyfailed")
	return HttpResponse("failed")

url (位于 accounts 目录下,已经 include 一层了同步接收可以接收到,我感觉这里没有设置错)

url(r'^notify_url/$',views.notify_url_handler,name='notify_url_handler'), 
4262 次点击
所在节点    Python
12 条回复
kangsgo
2016-06-15 03:48:59 +08:00
已下是我的同步调用,也发生了错了····

版本是 Django 1.8.4

```python
def return_url_handler(request)::
if notify_verify(request.GET):
tn=request.GET.get('out_trade_no')
trade_no = request.GET.get('trade_no')
trade_status = request.GET.get('trade_status')
return HttpResponse("天呐,我成功啦")
else:
return HttpResponse("蛋都碎了,又失败了")
```
likezun
2016-06-15 09:24:09 +08:00
python 工具, 做 web 不合适,坑
pc10201
2016-06-15 09:30:49 +08:00
哈哈,我也遇到过,后来解决了,关键代码
if request.method == 'POST':
if alipay.verify_notify(**request.POST.dict()):
logger.info('pass verification...')
out_trade_no = request.POST.get('out_trade_no')
logger.info('Change the status of bill %s' % out_trade_no)
fangdingjun
2016-06-15 09:31:21 +08:00
django 的 post 有 csrf 保护,支付宝 postf 过来肯定没这玩意儿
我用 flask 写的支付宝接口运行的好好的
pc10201
2016-06-15 09:34:00 +08:00
rapospectre
2016-06-15 09:37:02 +08:00
异步接收不到信息先看看回调地址是不是有问题,可以看看服务器的日志,支付宝是不是返回了信息,还有就是本地地址是不能当回调地址的。

排除以上问题后再去支付宝看看是不是有其他报错,你可以把生成的支付宝链接复制到浏览器里看看有没有问题。

最后,如果都不行你换个支付宝的 python 试试。
我之前用过这个: https://github.com/lxneng/alipay ,没出现过什么问题。
kangsgo
2016-06-15 15:07:28 +08:00
@rapospectre 谢谢啦

同步好像没有什么问题了,但是异步换了您提的接口还是收不到支付宝的传值好像:

```python
def notify_url_handler(request):
'''doc http://blog.csdn.net/hornbills/article/details/40338949'''
a=Personblling.objects.create(user_id=1,billingmoney=2,billingstatus=True,trade_no=12)
return HttpResponse("success")
```

我改成这样子直接可以访问,但是付款貌似支付宝还是没有传值进来

```python
return_url='http://xxx/accounts/return_url/'
notify_url='http://xxx/accounts/notify_url/'
```

为了避免广告嫌疑我输入 XXX 啦
kangsgo
2016-06-15 15:08:36 +08:00
@pc10201 谢谢,您帮我把同步解决了,但是异步好像还是没法收到,我上面的设置有问题么?直接访问是有作用的。
kangsgo
2016-06-15 15:33:07 +08:00
@fangdingjun 是不是因为我 allow_host 设置的['www.xxx.com']支付宝进不来的缘故?
codepark
2016-06-15 15:47:55 +08:00
异步接收 在 request.body 里面 不在 request.POST 里面~
kangsgo
2016-06-15 15:51:01 +08:00
@codepark 没有听明白,能稍微详细一些么~我刚学 Django 不久,谢啦
codepark
2016-06-15 16:01:25 +08:00
@kangsgo 忽略我说的 看成微信支付了~ sorry

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/285791

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX