2012-05-23 2 views
0

나는 사이트에서 유료 구독을 사용합니다.
사용자가 pay pal에서 지불하면 데이터베이스에 저장하기 위해 IPN 메시지를 기다립니다.
또한 결제 사용자가 pay pal에서 내 사이트로 리디렉션 된 후 IPN 메시지가 데이터베이스에 저장되어 있는지 확인해야하며 그 기반으로 atabase에 몇 가지 작업을 수행합니다.
문제는 사용자가 사이트로 리다이렉트되어 가끔 IPN 메시지가 나타나지 않아서 내가 원하는 것을 할 수없는 경우입니다.
그래서 어떻게 든 3 초 동안 응용 프로그램을 중지 할 생각이었습니다. 그러나 나는 이런 식으로 한 적이 없었으며 잘 할 수 있는지 모르겠습니다.

IPN 메시지가 몇 초 동안 지연되는 것은 정상입니까?

Thread.Sleep(3000)라고하면 웹 응용 프로그램에 애니메이션 방식의 로더를 이런 방식으로 표시 할 수 있습니까?
Pay Pal IPN 지연 - 자고있는 사이트 솔루션입니다.

+0

올바른 해결책은 IPN을 사용하지 않고, 페이팔 NVP API (또는 SOAP, 새도 마조히즘을 사용하는 경우)를 사용하는 것입니다.). 우리는 C#/ASP.NET을위한 매우 간단한 PayPal NVP 라이브러리를 오픈합니다 : https://github.com/NeoSmart/paypalnvp-dotnet –

+0

PDT와 같은 pf를 들었습니다. – Toskan

답변

1

당신은 다른 접근 방식이 필요합니다 것을 발견 할 것이다 paypal ipn overview 온 좀 걸릴 수 있습니다.

"IPN 메시지 서비스는 모든 메시지를 청취자가 적시에 수신한다고 가정하지 않습니다. 인터넷이 100 % 신뢰할 수 없기 때문에 메시지가 손실되거나 지연 될 수 있습니다. 전송 및 수신 가능성을 처리하려면 지연 또는 실패로 인해 IPN 메시지 서비스는 메시지가 성공적으로 수신되었음을 확인할 때까지 다양한 간격으로 메시지를 다시 보내는 재시도 메커니즘을 구현합니다. 메시지는 원래 메시지 이후 최대 4 일 동안 재전송 될 수 있습니다. "

"IPN 메시지 서비스는 실시간 서비스로 간주되어서는 안되며, IPN 메시지가 완료되기 전에 IPN 메시지를 기다려서는 안됩니다. 웹 사이트에서 IPN 메시지를 기다리는 경우 체크 아웃 처리가 지연 될 수 있습니다 시스템로드로 인해 재 시도의 가능성 때문에 더 복잡해집니다. "

결제가 도착할 때까지는 콘텐츠를 사용하지 않는 것이 하나의 해결책이지만, 보았을 때 최대 4 일이 소요될 수 있습니다.

다른 해결책은 paypal API를 통해 구독을 만들 때 구독 정보로 응답을받는 것입니다. (예 : 반복 지불을 사용하는 경우 create_recurring 지불 프로파일의 응답). 그 후에 당신은 그가 지불하고 내용을 가능하게 할 그의 말을 취할 수 있습니다. (물론 너무 오래 걸리면 사용자가 결제 전에 탈퇴 할 가능성이 있습니다.)

0

나는 (3000)에 Thread.sleep이 가능 이런 방식으로 웹 응용 프로그램에서 애니메이션 로더 를 표시하는 것입니다 말한다면?

아니요, 아무 것도 달성하지 않고 애플리케이션을 완성 할 것입니다. 따라서 솔루션은 타이머를 사용할 수 있습니다.

그래서 시도 :

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 
}