2016-05-16 34 views
1

Iam试图在我的应用程序中集成paypal ipn,但Iam得到错误,如“在System.dll中发生类型'System.Net.WebException'的异常”,但未在用户中处理代码在streamwriter.I已经尝试了下面的代码。请建议。paypal在asp.net应用程序中的ipn集成

using System; 
using System.IO; 
using System.Text; 
using System.Net; 
using System.Collections; 
using System.Configuration; 
using System.Data; 
using System.Linq; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.HtmlControls; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Xml.Linq; 
using System.Net.Mail; 

public partial class ipn : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     //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(strLive); 

     //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; 

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

     if (strResponse == "VERIFIED") 
     { 
      //check the payment_status is Completed 
      //check that txn_id has not been previously processed 
      //check that receiver_email is your Primary PayPal email 
      //check that payment_amount/payment_currency are correct 
      //process payment 

     } 
     else if (strResponse == "INVALID") 
     { 
      //log for manual investigation 

     } 
     else 
     { 
      //log response/ipn data for manual investigation 
     } 

    } 
} 
+0

同样的问题。你设法解决它吗? – Eran

回答

0
string Identity_Token = "zkiMk_t - XXXXXagbIDrzPAChXuWIYVS66TXXXXXXXXXXXXXXXXXXXXXXXXXX";//From you paypal account 

     string txToken = Request.QueryString["tx"]; 

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

     string strLive = "https://www.paypal.com/cgi-bin/webscr"; 
     HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strLive); 
     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 += query; 
     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(); 



     // If response was SUCCESS, parse response string and output details 
     if (strResponse.StartsWith("SUCCESS")) 
     { 


      Label1.Text = "OK"; 
     } 
     else 
     { 
      Label1.Text = "NO"; 
     } 
    } 
} 
这里
+0

https://www.paypal.com/us/cgi-bin/webscr?cmd=p/xcl/rec/pdt-techview-outside –

+0

工作正常我测试它 –