Django PayPal延迟

Django PayPal延迟,django,paypal,paypal-sandbox,paypal-ipn,django-paypal,Django,Paypal,Paypal Sandbox,Paypal Ipn,Django Paypal,我正在为一个项目创建一个支付系统,我正在使用django paypal。我按照他们的指导执行了信号,一切正常(用户点击按钮->重定向到paypal->如果一切正常,则显示成功页面)。问题是在我的信号中,我有一个东西,我想在用户进行购买功能时给用户打分。我的信号中有,但是在显示成功页面和接收数据并被执行的实际信号之间有延迟。我不知道这是因为我使用了ngrok和localtunnel之类的东西,还是其他什么东西 这是我的signals.py from paypal.standard.models i

我正在为一个项目创建一个支付系统,我正在使用django paypal。我按照他们的指导执行了信号,一切正常(用户点击按钮->重定向到paypal->如果一切正常,则显示成功页面)。问题是在我的信号中,我有一个东西,我想在用户进行购买功能时给用户打分。我的信号中有,但是在显示成功页面和接收数据并被执行的实际信号之间有延迟。我不知道这是因为我使用了ngrok和localtunnel之类的东西,还是其他什么东西

这是我的
signals.py

from paypal.standard.models import ST_PP_COMPLETED
from paypal.standard.ipn.signals import valid_ipn_received, invalid_ipn_received
from account.models import Account

def show_me_the_money(sender, **kwargs):
    ipn_obj = sender
    if ipn_obj.payment_status == ST_PP_COMPLETED:
        if ipn_obj.receiver_email != "**":
            # Not a valid payment
            print("BAD EMAIL")
        else:
            print("ALL GOOD")
            acc = Account.objects.get(account_url=ipn_obj.custom)
            acc.coins = acc.coins + int(ipn_obj.mc_gross)
            acc.save()
    else:
        print("FAIL")

valid_ipn_received.connect(show_me_the_money)

因此,如果我了解所有情况,这一切都是正确的,但由于某种原因,延迟正在发生,我不知道是什么原因造成的。

IPN是从PayPal服务器到您的服务器的异步帖子,因此您总是可以预期一些未指定的延迟,可能会有所不同。它并不是真正的“即时”,尽管它的名字(只是比检查你的电子邮件更即时,这是几十年前它出现时的概念)。这是一项古老的技术,当然不是一个理想的解决方案

建议的解决方案是对当前的PayPal API进行服务器端集成。在服务器上创建两个返回JSON的路由,一个用于“创建订单”,另一个用于“捕获订单”。第二条路径可以检查是否成功,并在返回JSON响应之前执行其
向我显示钱
或任何其他业务逻辑

与上述两条路线配对的审批流程为: