1

我正在尝试让两个第三方应用程序相互交谈:Django-paypal 和 django-registration。付款成功后,PayPal 会向提供的 URL 发送 IPN 信号。我希望这个信号来验证使用 django-registration 注册的用户。

成功付款后,IPN 似乎不是由 paypal 沙箱发送的,但我不确定这只是我设置信号代码的方式有问题。

信号.py 被导入到init .py 中

import signals 

我正在使用 ngrok 允许贝宝沙箱访问我的本地主机。

视图.py:

def payment(request):

    """
    This is the view for the page a new user is redirected
    to after registering (not activating) a new account.
    """

    paypal_dict = {
        "cmd": "_xclick-subscriptions",
        "business": settings.PAYPAL_RECEIVER_EMAIL,
        "a3": "7.99",
        "p3": "1",
        "t3": "M",
        "src": "1",
        "sra": "1",
        "no_note": "1",
        "item_name": "My Item",
        "notify_url": "http://localhost:8000/accounts/register/account_activated/",
        "return_url": "http://localhost:8000/",
        "cancel_return": "http//www.example.com/cancel-location/",


    }

    form = PayPalPaymentsForm(initial=paypal_dict, button_type="subscribe")
    context = {"form": form}
    return render_to_response("registration/registration_complete.html", context)

签名.py:

from paypal.standard.models import ST_PP_COMPLETED
from paypal.standard.ipn.signals import valid_ipn_received, payment_was_flagged

from registration.models import RegistrationProfile
from registration.views import ActivationView

def payment_signal(sender, **kwargs):
    ipn_object = sender
    if ipn_object.payment_status == ST_PP_COMPLETED:
        print "payment_status == ST_PP_COMPLETED"

        """
        Here use django-registration to authenticate
        the User
        """

        activate_user(activation_key)

        activation_key = ACTIVATED

        #ActivationView.activate()

    else:
        print str(ipn_object.payment_status)
        print "error"

valid_ipn_received.connect(payment_signal)  
payment_was_flagged.connect(payment_signal)

print "SIGNALS MODULE IMPORTED"

网址.py:

url(r'^accounts/register/account_activated/$', include('paypal.standard.ipn.urls')),
4

1 回答 1

0

这可能是因为您使用的是测试端口(如8000)而不是标准端口80

当我切换到 port80时,我能够接收到 IPN 通知,触发信号,并适当地处理信号。

这个问题让我走上了这条路:我如何允许 django-merchant 接收 paypal IPN 配置?

于 2015-01-18T17:39:56.623 回答