Tôi sẽ cố gắng đi thẳng vào vấn đề. Tôi hiện đang làm việc với PayPal IPN và chưa từng gặp vấn đề này trước đây. Tôi đã sử dụng PayPal IPN và việc triển khai của tôi luôn giống nhau. Tuy nhiên, lần này nó đang tạo ra một số kết quả rất lạ.ASP.NET Paypal IPN trả về VERIFIED nhưng IPN không gửi
Tôi hiện đang lưu trữ với WinHost.com
Mã sử dụng:
public void MakeHttpPost()
{
ErrorLog log = new ErrorLog();
//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 = HttpContext.Current.Request.BinaryRead(HttpContext.Current.Request.ContentLength);
string strRequest = Encoding.ASCII.GetString(param);
strRequest += "&cmd=_notify-validate";
req.ContentLength = strRequest.Length;
//for proxy
//WebProxy proxy = new WebProxy(new Uri("http://url:port#"));
//req.Proxy = proxy;
//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();
log.error = strResponse;
log.Insert();
if (strResponse == "VERIFIED")
{
PaypalPaymentHistory PPH = new PaypalPaymentHistory();
PPH.LastName = HttpContext.Current.Request["last_name"];
PPH.FirstName = HttpContext.Current.Request["first_name"];
PPH.State = HttpContext.Current.Request["address_state"];
PPH.Zipcode = HttpContext.Current.Request["address_zip"];
PPH.Address = HttpContext.Current.Request["address_street"];
PPH.UserName = HttpContext.Current.Request["option_name2"];
PPH.PaymentStatus = HttpContext.Current.Request["payment_status"];
PPH.SelectedPackage = HttpContext.Current.Request["option_selection1"];
PPH.PayerStatus = HttpContext.Current.Request["payer_status"];
PPH.PaymentType = HttpContext.Current.Request["payment_type"];
PPH.PayerEmail = HttpContext.Current.Request["payer_email"];
PPH.ReceiverId = HttpContext.Current.Request["receiver_id"];
PPH.TxnType = HttpContext.Current.Request["txn_type"];
PPH.PaymentGross = HttpContext.Current.Request["payment_gross"];
PPH.Insert();
}
else if (strResponse == "INVALID")
{
//log for manual investigation
}
else
{
//log response/ipn data for manual investigation
}
}
Ý tưởng ở đây là tôi sẽ kiểm tra tình trạng của trật tự và sau đó chèn hoặc không chèn các bản ghi cơ sở dữ liệu nhưng mã này vẫn còn trong các bài kiểm tra nên không có gì là chính thức.
Sự cố tôi gặp phải là khi tôi chạy qua hộp cát và thực hiện thanh toán qua trang web của tôi, paypal sẽ gửi yêu cầu IPN. Các mục nhập được ném vào cơ sở dữ liệu và tất cả các dữ liệu được gửi lại một cách chính xác tuy nhiên PayPal cho thấy rằng IPN Post "Thất bại" và luôn luôn bị mắc kẹt trên "Thử lại". Tuy nhiên tôi nhận được "VERIFIED" trở lại trong strResponse. Điều này lần lượt gây ra lên đến 8 hồ sơ cho mỗi giao dịch. Lỗi mà paypal báo cáo là 500 - Lỗi Máy chủ Nội bộ. Bất kỳ sự giúp đỡ nào sẽ được đánh giá điên rồ vì đây là cuộc đua marathon kéo dài 2 ngày đến thời điểm này!
Cảm ơn bạn đã giúp đỡ hoặc giải quyết!
P.S Tôi đã đọc gần như tất cả các câu hỏi IPN trên stackoverflow và đã thấy không có gì như thế này.
Tôi có bộ điều khiển mà các cuộc gọi mà chức năng WWW.site.com/payment/processpayment đó là liên kết trong hộp paypal IPN – jhartzell
Tôi nhận được vùng hẻo lánh từ paypal Hiển thị xác nhận tuy nhiên paypal được thể hiện thất bại và không ngừng nghỉ hưu bài viết để điều khiển hành động của tôi ProcessPayment mà gọi MakeHttpPost – jhartzell
Bộ điều khiển là xương rất trần, chỉ có trong đó là đối tượng của tôi PPIPN PP = new PPIPN ("TEST") và sau đó PP.MakeHttpPost(). Tôi không thấy nó có thể thất bại như thế nào. http://www.mysite.com/payment/processpayment Đây có phải là địa chỉ IPN không chính xác để nhập vào paypal không? Thực sự đánh giá cao sự giúp đỡ của bạn Rick. – jhartzell