2016-04-20 4 views
0

Ich bin sehr seltsame Art von Problem, dass nach erfolgreicher Zahlung Transaktion, ich bin nicht in der Lage, TransactionId mit returningUrl erhalten. Da Paypal Auto mich auf meinen ReturnUrl umleitet, die ich in der PDT-Einstellungen Seite erwähnt habe, und Paypal anhängt die trasactionId diesen returningUrl namens tx und die Verwendung diese trasactionId mache ich ein Gesuch auf diese URLPaypal PDT kehrt immer zu meinem HTTP-Post-Anfrage C# MVC

https://www.sandbox.paypal.com/cgi-bin/webscr

Aber hier ist das Problem, dass ich diese transactionId nicht bekommen kann? Was könnte das Problem sein, bitte helfen Sie mir in dieser Ausgabe. Dies ist mein Code, den ich verwende, um eine HTTP-Anfrage zu stellen.

string authTokenTest = "sMfRi9rJN3AjqsejnMxFfkeIwhwrCmVZz3nplUy9V6a9Yq0_2YdugSvZYNa"; 

      //used this but could not retrieved "tx" 
      //string txToken = Request.QueryString.Get("tx"); 
      //Then used this but no use 
      var queryValues = HttpUtility.ParseQueryString(Request.Url.Query); 
      var txToken = queryValues["tx"]; 

      string query = string.Format("cmd=_notify-synch&tx={0}&at={1}", txToken, authTokenTest); 

      //// Create the request back 


      string strSandbox = "https://www.sandbox.paypal.com/cgi-bin/webscr"; 
      string url = strSandbox; 

      /// to use HTTP 1.1 and TLS 1.2 
      ServicePointManager.Expect100Continue = true; 
      ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; 
      ServicePointManager.DefaultConnectionLimit = 9999; 

      HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); 

      // Set values for the request back 
      req.Method = "POST"; 
      req.ContentType = "application/x-www-form-urlencoded"; 
      req.ContentLength = query.Length; 

      // Write the request back IPN strings 
      StreamWriter stOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII); 
      stOut.Write(query); 
      stOut.Close(); 

      // Do the request to PayPal and get the response 

      HttpWebResponse payResp = (HttpWebResponse)req.GetResponse(); 
      StreamReader sr = new StreamReader(payResp.GetResponseStream()); 
      string strResponse = sr.ReadToEnd(); 
      sr.Close(); 

Wenn ich eine direkte Anfrage machen über den Browser auf diese URL und fügen Sie eine TransactionId und IdentityToken dann bekomme ich den Erfolg Antwort, aber auf diese Weise ich keine Möglichkeit, immer die transactionId und meine Antwort ist immer fehl. Bitte helfen Sie mir in diesem Problem. Was könnte das Problem in meinem Code oder ein anderes Problem sein, dieses Problem zu beheben. Vielen Dank für Ihre Zeit.

Antwort

0

Ich benutze MVC und so Modellbindung verwenden, um den TX-Wert aus der Abfragezeichenfolge abzurufen. Aber ich glaube nicht, dass das dein Problem ist.

Die Rückgabe-URL muss eingestellt werden, wie Sie gesagt haben. Außerdem muss PDT an derselben Stelle aktiviert sein, an der die URL angegeben ist. Außerdem werden Kunden leider nicht automatisch auf Ihre Website zurückgeschickt, wenn sie anstelle eines PayPal-Kontos eine Kreditkarte verwenden.

Ich implementiere IPN obwohl, weil Kreditkarten-Kunden nicht auf die Website zurückkehren können.

+0

Kunden werden automatisch auf unsere Website Erfolgs-Seite zurückgegeben, wenn wir unsere Website für die Zahlungsabwicklung mit Paypal iframe setzen, der Fall Sie sagen, gültig ist, wenn unsere Zahlungsabwicklung auf Paypal Website nicht unsere Website erfolgt. – usman

Verwandte Themen