【问题标题】:Paypal IPN INVALID with _notify-validate and payer_status as unverifiedPaypal IPN INVALID 与 _notify-validate 和 payer_status 未验证
【发布时间】:2013-06-25 05:49:41
【问题描述】:

使用 paypal 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)

【问题讨论】:

  • 我认为理论上是正确的。你能发布它的代码吗?

标签: python django paypal payment paypal-ipn


【解决方案1】:

我认为您正在通过迭代 post_content 字典来覆盖 return_data 中的 cmd 键/值。我不认为你需要这样做。只需复制 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)

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

【讨论】:

    猜你喜欢
    • 2011-12-24
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    • 2016-07-09
    • 2016-05-27
    • 2012-03-09
    • 2016-06-26
    • 1970-01-01
    相关资源
    最近更新 更多