Paypal IPN INVALID,_notify-validate和payer_status未经验证

时间:2013-06-27 16:06:03

标签: python django paypal payment paypal-ipn

使用paypal IPN我在验证付款时遇到问题。

Paypal返回Python / Django网站,该网站启动了原始交易,其中payer_status未经验证。然后,该网站会将所有帖子参数和“cmd”参数设置为“_notify-validate”发回“https://www.paypal.com/cgi-bin/webscr”以验证付款。 PayPal IPN返回为无效。

这是正确的还是我错过了什么?

它使用Requests Python HTTP库。我不认为它是代码,因为大多数交易都经过验证。

def paypalIPN(request):
   post_content = dict(request.POST.copy())
   return_data = {'cmd':'_notify-validate'} 

   if not post_content.keys():
      raise Http404("Post not found")

   for key in post_content.keys():
       return_data[key]=post_content[key][0]

   paypal_url = "https://www.paypal.com/cgi-bin/webscr"

   response = requests.post(paypal_url, data=return_data)

1 个答案:

答案 0 :(得分:2)

我认为您通过迭代cmd字典来覆盖return_data中的post_content键/值。我认为你不需要这样做。只需复制POST参数,然后更改cmd值:

parameters = dict(request.POST.copy())
parameters['cmd'] = '_notify-validate'
paypal_url = "https://www.paypal.com/cgi-bin/webscr"
response = requests.post(paypal_url, data=parameters)

这基本上就是我在我的应用程序中所做的,尽管我没有使用请求库。