【问题标题】:Pay Pal IPN delay - is sleeping site solutionPaypal IPN 延迟 - 正在休眠的网站解决方案
【发布时间】:2012-05-29 18:08:36
【问题描述】:

我在网站上使用 pay pal 订阅。
当用户通过支付宝付款时,我等待 IPN 消息将其保存在数据库中。
此外,在付款用户从 pay pal 重定向到我的网站后,我必须检查 IPN 消息是否存储在数据库中,并基于此我在数据库中做一些其他的事情。
问题是当用户被重定向到站点时,有时会发生 IPN 消息不存在所以我不能做我想做的事情。
所以我想以某种方式停止应用程序三秒钟,但我从来没有做过这样的事情,我不知道这样做是否好。

IPN 消息延迟几秒正常吗?

如果我说Thread.Sleep(3000) 是否可以通过这种方式在 Web 应用程序中显示动画加载器?

【问题讨论】:

  • 正确的解决方案是不使用 IPN,而是使用 PayPal NVP API(或 SOAP,如果你喜欢施虐受虐狂的话)。我们为 C#/ASP.NET 开源了一个非常简单的 PayPal NVP 库:github.com/NeoSmart/paypalnvp-dotnet
  • 我听说过 PDT 之类的东西

标签: c# asp.net paypal paypal-ipn


【解决方案1】:

您可以查看paypal ipn overview 会发现您需要不同的方法。

“IPN 消息服务并不假定您的听众会及时收到所有消息。由于互联网并非 100% 可靠,消息可能会丢失或延迟。处理传输和接收延迟的可能性或失败,IPN 消息服务实施重试机制,以不同的时间间隔重新发送消息,直到您确认消息已成功接收。消息可能会在原始消息后最多四天重新发送。

“IPN 消息服务不应被视为实时服务。您的结帐流程不应等待 IPN 消息才允许完成。如果您的网站等待 IPN 消息,结帐处理可能会延迟,因为由于重试的可能性,系统加载并变得更加复杂。”

一种解决方案是在付款到达之前不启用内容,但正如您所见,这可能需要长达四天的时间。

其他解决方案是,当您通过 paypal API 创建订阅时,您会收到包含订阅信息的响应。 (例如,如果您使用定期付款,则 create_recurring 付款资料中的响应)。在此之后,您可以相信他会付费并启用内容。 (当然有可能用户可以在付款前退订,如果时间太长)

【讨论】:

    【解决方案2】:

    如果我说 Thread.Sleep(3000) 是否可以显示动画加载器 在 web 应用程序中以这种方式?

    不,您将完全卡住您的应用程序而没有取得任何成果。所以解决方案可以是使用计时器。

    那就试试吧:

    Timer timer = new Timer();
    timer.Interval = 3000;
    timer.Tick += new EventHandler(timer_Tick);
    
    //diplay the animated loader and start the timer 
    
    timer.Enabled = true;
    

    void timer_Tick(object sender, EventArgs e)
    {
         //Elapsed 3000 milliseconds so you have to stop the timer
         timer.Enabled = false;
    
         //Now redirect the user
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-02
      • 2013-10-21
      • 1970-01-01
      • 1970-01-01
      • 2016-07-19
      • 2011-06-15
      相关资源
      最近更新 更多