2012-03-31 6 views
4

Ich versuche, meine Paypal-Anwendung zu testen und meine paypal notify_url als www.xx.com/paypal.aspx angegeben. Ich sollte Antwort von der Sandbox Paypal bekommen. Aber ich bekomme nichts auf der paypal.aspx Seite. Mein Repsode-Code lautet:Paypal Antwort kommt nicht auf der Seite notify_url in Paypal IPN

protected void Page_Load(object sender, EventArgs e) 
    { 
     string connStr = ConfigurationManager.ConnectionStrings["MainConnStr"].ConnectionString; 
     con = new SqlConnection(connStr); 
     con.Open(); 
     //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 = Request.BinaryRead(HttpContext.Current.Request.ContentLength); 
     string strRequest = Encoding.ASCII.GetString(param); 
     strRequest += "&cmd=_notify-validate"; 
     req.ContentLength = strRequest.Length; 


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(); 

    if (strResponse == "VERIFIED") 
    { 
     //Insert statement 
    } 


else if (strResponse == "INVALID") 
    { 
     //UPDATE YOUR DATABASE 

     StreamWriter swr = new StreamWriter(Server.MapPath("Textfile.txt")); 
     swr.WriteLine("---- not verified(" + DateTime.Now.ToString() + ")--"); 
     swr.Dispose(); 
    } 
    else 
    { //UPDATE YOUR DATABASE 

     //TextWriter txWriter = new StreamWriter(Server.MapPath("../uploads/") + Session["orderID"].ToString() + ".txt"); 
     //txWriter.WriteLine("Invalid"); 
     ////log response/ipn data for manual investigation 
     //txWriter.Close(); 
    } 

Die Zahlung wird vollständig verarbeitet. Ich werde auch auf die Dankeseite verwiesen. Bitte helfen

Dank

+0

Vor allem der offenen der Datenbank und Sie vergessen, es zu benutzen und es zu schließen. Warum hast du es hier trotzdem? Zweitens, was ist eigentlich das Problem an diesem Code? da du sagst, dass das gar nicht angerufen wird, ist das Problem, auf welche URL du paypal sendest. Woher erwartest du das? von Ihrem lokalen Computer hinter asdn rooter, vom Server auf einer statischen IP? wovon ? – Aristos

+0

Ich habe die Datenbankverbindung geöffnet. Der Code ist nicht das Problem, das ist die Seite, auf der ich die IPN-Antwort bekommen sollte. Aber ich habe gerade den IPN-Verlauf überprüft und der Status ist dort fehlgeschlagen, obwohl meine Transaktionen stattfinden. Es tut mir leid für die schlechte Fragestellung. Es ist vom Server anzurufen. – vini

+0

Sie öffnen die Datenbank auf falsche Weise, und Sie vergessen, es zu schließen - schlechter Code darauf. Nun, wird diese Seite angerufen oder nicht? – Aristos

Antwort

0

Zuerst müssen Sie sicherstellen, dass die URL, die Sie als notify_url Wert PayPal sind vorbei eine öffentlich gültig und auflösbare URL ist. Stellen Sie also sicher, dass Sie keine interne Netzwerk-URL oder einen Computernamen (z. B. localhost, mein_computer_name, mypcname.mynetwork.com) senden. Eine einfache Möglichkeit, dies zu überprüfen und sicherzustellen, dass Sie keinen schlechten Namen oder eine falsche Netzwerkkonfiguration erstellt haben, ist die URL, die Sie an PayPal senden, als notify_url-Wert zu verwenden und einen Freund zu kontaktieren, der sich außerhalb Ihres Netzwerks befindet die URL in ihrem Browser. Wenn ein Verbindungsfehler auftritt, müssen Sie Ihre Netzwerkkonfiguration oder Namensgebung überdenken, bevor PayPal Ihren Computer sehen kann. Wenn Sie den oben genannten Code in Visual Studio mit dem Debugger und dem eingebauten Webserver ausführen, sind Sie möglicherweise darauf beschränkt, nur auf Anfragen zu antworten, wenn der angeforderte Site-Name "localhost" lautet.

Finden Sie in dem folgenden Microsoft-Artikel, wie Sie Ihren Code so einrichten, dass er in einer tatsächlichen Instanz von IIS ausgeführt wird.

http://msdn.microsoft.com/en-us/library/58wxa9w5.aspx