2013-09-30 6 views
0

저는 지난 몇 시간 동안 Paypal 샌드 박스 IPN 시뮬레이터가 내 요청에 대한 Content-type을 감지하지 못하는 이유를 알아 냈습니다. 나는 요청이 되돌아온 곳에서 코드를 수정하지 않았기 때문에 그것이 올바르게 진행되지 않는다는 것이 이상하다.Paypal 샌드 박스 IPN이 감지되지 않음 콘텐츠 유형

3 월에 similar question이 있었지만, 그가 대답 한 답변은 나에게 트릭을 보이지 않았습니다.

왜 이런 일이 일어나는 지 아는 사람이 있습니까? 최근에 다른 사람에게 이런 일이 일어 났습니까?

public class PaypalIPN : IHttpHandler, IRequiresSessionState { 

    public void ProcessRequest (HttpContext context) 
    { 
     //post back to either sandbox or live 
     string strSandbox = "https://www.sandbox.paypal.com/cgi-bin/webscr"; 
     string strLive = "https://www.paypal.com/cgi-bin/webscr"; 
     HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strSandbox); 

     //Set values for the request back 
     req.Method = "POST"; 
     req.ContentType = "application/x-www-form-urlencoded"; 
     byte[] param = context.Request.BinaryRead(HttpContext.Current.Request.ContentLength); 
     string strRequest = Encoding.ASCII.GetString(param); 
     strRequest += "&cmd=_notify-validate"; 
     req.ContentLength = strRequest.Length; 

     //Send the request to PayPal and get the response 
     StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII); 
     streamOut.Write(strRequest); 
     streamOut.Close(); 
     StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream()); 
     string strResponse = streamIn.ReadToEnd(); 
     streamIn.Close(); 
     ... 

답변

0

따라서 ASHX를 사용하면 작동하지 않지만 분명히 ASPX 파일로 전환하면 마술처럼 작동합니다. 나는 ASHX가 그것이 작동하지 않는다는 것을 확신하지 못하지만, ASPX가 해결책이었습니다.

0

나는 Play2 (Scala)에서 IPN Listener를 구현하는 것과 동일한 문제에 봉착했습니다.

양해 바랍니다. Paypal에 대한 불만 사항에 대한 귀하의 요청 내용 유형이 아니며 귀하의 청취자 서비스에 대한 원래의 Paypal IPN 요청으로 반송하는 응답입니다.

"IPN이 Content-type을 감지하지 못했습니다."메시지를 받고 있는데 play.api.mvc.SimpleResult.Ok() (HTTP 200에 매핑 됨)를 반환했습니다.

내 머리를 긁고 즉시 200을 반환했다는 것을 증명 한 후 설명서를 다시 읽고 "수신자가 HTTP 200 응답을 반환합니다."라는 메시지가 나타났습니다.

그래서 대신 play.api.mvc.SimpleResult.Ok ("")를 시도해 보았습니다.

따라서 테스트 서비스가 만족 스러우려면 200 응답의 일부 내용 (빈 문자열)을 보내야합니다.