Django-PayPal 设置

14

有没有人设置过django-paypal? 这是链接在这里

我已经设置了“myproject”,我的文件夹结构如下:

myproject > paypal > (stdandard and pro 文件夹)

我在settings.py文件中添加了以下内容:

INSTALLED_APPS = (
    'myproject.paypal.standard',
    'myproject.paypal.pro',
)

在我的账户应用程序的URL文件中,我添加了以下内容:

urlpatterns += patterns('myproject.account.views',
    (r'^payment-url/$', 'buy_my_item'),                   
)

在我的账户视图中,我添加了:

from myproject.paypal.pro.views import PayPalPro
from myproject.paypal.pro.forms import PaymentForm, ConfirmForm

def buy_my_item(request):
    item = {'amt':"10.00",              # amount to charge for item
            'inv':"1111",         # unique tracking variable paypal
            'custom':"2222",       # custom tracking variable for you
            'cancelurl':"http://127.0.0.1:8000/",   # Express checkout cancel url
            'returnurl':"http://127.0.0.1:8000/"}   # Express checkout return url

    kw = {'item':'item',                            # what you're selling
           'payment_template': 'pro/payment.html',          # template to use for payment form
           'confirm_template': ConfirmForm,  # form class to use for Express checkout confirmation
           'payment_form_cls': PaymentForm,  # form class to use for payment
           'success_url': '/success',               # where to redirect after successful payment
           }

    ppp = PayPalPro(**kw)
    return ppp(request)

---编辑--------- 然后,我将pro和standard模板文件夹添加到我的项目模板文件夹中。

当我访问http://127.0.0.1:8000/account/payment-url/并提交表单时...

出现了ValueError:"dictionary update sequence element #0 has length 1; 2 is required"

Traceback:

File "...\accounts\views.py" in buy_my_item
  655.     return ppp(request)
File "...\paypal\pro\views.py" in __call__
  115.                 return self.validate_payment_form()
File "...\paypal\pro\views.py" in validate_payment_form
  133.             success = form.process(self.request, self.item)
File "...\paypal\pro\forms.py" in process
  1. params.update(item)
参数更新(params.update)是用给定字典中的键值对来更新现有字典的方法。在这里,代码使用了一个名为“item”的变量作为字典,并使用update方法来将其添加到名为“params”的字典中。

更新标签以吸引更广泛的受众 - Nick Stinemates
2
kw = {"item": ITEM_ ...} 你传递了字符串“item”,而不是 item 字典。 - jb.
2个回答

5

在你的代码中...

  'payment_form_cls': 'payment_form_cls',  # form class to use for payment

这必须是一个用于验证的表单对象。

   'payment_form_cls': MyValidationForm,  # form class to use for payment

编辑

http://github.com/johnboxall/django-paypal/tree/master

您的请求应包括通知网址(notify-url)、返回网址(return-url)和取消返回网址(cancel-return)。所有这三个网址都由您提供给Paypal。

Paypal将向这些网址发送消息。

由于Paypal将向这些网址发送消息,因此您必须将它们放入您的urls.py文件中。您必须编写视图函数来处理这三个网址。这些网址将接收您从Paypal获得的响应。


默认情况下它不使用任何东西。您提供了一个字符串,而不是表单对象。这就是为什么会出现“str not callable”错误的原因。 - S.Lott
好的,现在它可以工作了。你知道在哪里可以找到更多关于如何设置第三点的信息吗:“将IPN端点添加到您的urls.py以接收来自PayPal的回调。”你如何读取Paypal发送回来的信息?再次感谢您的所有帮助。 - Joe

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接