我在网站上使用付费朋友订阅
当用户付费时,我等待IPN消息将其保存在数据库中
此外,付款用户从付款方重定向到我的网站,我必须检查IPN消息是否存储在数据库中,并在此基础上,我做了一些其他的东西indabase。
问题是当用户被重定向到站点时有时会发生IPN消息,但是我不能做我想要的事情。
所以我想以某种方式停止应用三秒钟,但我从未做过这样的事情,我不知道这样做是否好。
IPN消息延迟几秒是否正常?
如果我说Thread.Sleep(3000)
是否有可能以这种方式在Web应用程序中显示动画加载器?
答案 0 :(得分:1)
您可以查看paypal ipn overview,您会发现需要采用不同的方法。
“的IPN消息服务不会假设所有消息将被监听及时被接收。由于互联网是不是100%可靠,消息可能丢失或延迟。为了处理发送和接收延迟的可能性或者失败,IPN消息服务实现重试机制,该机制以不同的间隔重新发送消息,直到您确认消息已成功接收为止。消息可能在原始消息之后最多四天内重新发送。
“的IPN消息服务不应该被视为一个实时服务。允许完成之前,你的结账流程不应该的IPN消息等待。如果您的网站等待的IPN消息,结账处理可能会导致延迟由于重试的可能性,系统负载变得更加复杂。“
一种解决方案是在付款到达之前不启用内容,但是如您所见,最多可能需要四天。
其他解决方案是,当您通过paypal API创建订阅时,您会收到包含订阅信息的回复。 (例如,如果您使用定期付款,则在create_recurring付款资料中的回复)。在此之后,您可以接受他将支付并启用内容的消息。 (当然,如果用户需要太长时间,用户可以在付款前取消订阅)
答案 1 :(得分:0)
如果我说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
}