2

使用贝宝 IPN 验证付款时出现问题。

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

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

它使用 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)
4

1 回答 1

2

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

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)

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

于 2013-06-28T14:11:57.760 回答