我有测试应用程序集成了PayPal快速结帐,它运行良好。但现在看来有些问题。在PayPal成功付款后,当我的IPN处理程序检查响应PayPal时将响应返回为HTML页面而不是“VERIFIED”或“INVALID”,因此我无法验证付款。 PayPal最近是否有任何更改用于快速结账?下面是完整的代码PayPal快速结帐返回MVC中的HTML响应.net
<form id="Paypal" name="Paypal" action="https://www.sandbox.paypal.com/cgi-bin/webscr"
method="post">
@Html.Hidden("cmd", "_xclick")
@Html.Hidden("business", "[email protected]")
@Html.Hidden("item_name", "Payment for course registration")
@Html.Hidden("amount", 100)
@Html.Hidden("no_shipping", "1")
@Html.Hidden("return", "http://localhost:49319/cart/IPN")
@Html.Hidden("rm", "2")
@Html.Hidden("notify_url", "http://localhost:49319/cart/IPN")
@Html.Hidden("cancel_return", "http://localhost:49319/cart/PaymentFailure")
@Html.Hidden("currency_code", "CAD")
@Html.Hidden("tax_cart", "1")
@Html.Hidden("custom", "12")
<div class="checkout-button">
<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif"
align="left" style="margin-right: 7px;" />
</div>
</form>
IPN处理程序代码:
string paypalUrl = useSandbox ? "https://www.sandbox.paypal.com/cgi-bin/webscr"
: "https://www.paypal.com/cgi-bin/webscr";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(paypalUrl);
// Set values for the request back
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
byte[] param = Request.BinaryRead(Request.ContentLength);
string strRequest = Encoding.ASCII.GetString(param);
StringBuilder sb = new StringBuilder();
sb.Append(strRequest);
foreach (string key in formVals.Keys)
{
sb.AppendFormat("&{0}={1}", key, formVals[key]);
}
strRequest += sb.ToString();
req.ContentLength = strRequest.Length;
//for proxy
//WebProxy proxy = new WebProxy(new Uri("http://urlort#");
//req.Proxy = proxy;
//Send the request to PayPal and get the response
string response = "";
using (StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII))
{
streamOut.Write(strRequest);
streamOut.Close();
using (StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream()))
{
response = streamIn.ReadToEnd();
}
}
return response;
编辑: 这里被请求字符串发送到贝宝
CONTEXT = wtgSziM4C5x0SI-9CmKcv2vkSeTLK5P_g6HqzC__YTYkcqziFNcB84p79Ja & myAllTextSubmitID = & CMD = _flow & transaction_subject = 12 & txn_type = web_acce PT & PAYMENT_DATE = 01%3A59%3A21 +月+ 02%2C + 2011 + PDT &姓氏=用户& residence_country = CA & pending_reason = paymentreview & ITEM_NAME =付款为+当然+注册& payment_gross = & mc_currency = CAD &业务+ = pramod_1298956597_biz%40sumerusolutions.com & payment_type =即时& protection_eligibility =不合格的& payer_status =验证& verify_sign = Ag7LtkvrF1u9.1ScLJwRM4btR1G1A16qsCs-xUl6EpI1rE1UWpodXJsc & txn_id = 15Y20623GD922445F & PAYER_EMAIL = pramod_1298961722_per%40sumerusolutions.com &税= 0.00 &的test_ipn = 1 &如first_name =测试& RECEIVER_EMAIL = pramod_1298956597_biz%40sumerusolutions.com &量= 1 & payer_id = Z2MRT3Q9L6E28 & receiver_id = RT3M59WESZHEE & = ITEM_NUMBER & PAYMENT_STATUS =待定& handling_amount = 0.00 &航运= 0.00 & mc_gross = 850.00 &定制= 12 &字符集=窗口1252 & notify_version = 3.1 & merchant_return_link =点击+此处& form_charset = UTF-8CONTEXT = wtgSziM4C5x0SI-9CmKcv2vkSeTLK5P_g6HqzC__YTYkcqziFNcB84p79Ja & myAllTextSubmitID = & CMD = _flow & transaction_subject = 12 & txn_type = web_accept & PAYMENT_DATE = 01%3A59%3A21 +月+ 02%2C + 2011 + PDT &姓氏=用户& residence_country = CA & pending_reason = paymentreview & ITEM_NAME =付款为+当然+注册& payment_gross + = & mc_currency = CAD &业务= pramod_1298956597_biz%40sumerusolutions.com & payment_type =即时& protection_eligibility =不合格的& payer_status =验证& verify_sign = Ag7LtkvrF1u9.1ScLJwRM4btR1G1A16qsCs-xUl6EpI1rE1UWpodXJsc & txn_id = 15Y20623GD922445F & PAYER_EMAIL = pramod_129896172 2_per%40sumerusolutions.com & tax = 0.00 & test_ipn = 1 & first_name =测试& receiver_email = pramod_1298956597_biz%40sumerusolutions。COM &数量= 1 & payer_id = Z2MRT3Q9L6E28 & receiver_id = RT3M59WESZHEE & ITEM_NUMBER = & PAYMENT_STATUS =待定& handling_amount = 0.00 &运费= 0.00 & mc_gross = 850.00 &定制= 12 &的charset =窗口1252 & notify_version = 3.1 & merchant_return_link =点击+ here & form_charset = UTF-8 & cmd = _notify-validate
嗨nEEbz,请参阅我的文章上面更新以上贝宝的回复。我对此毫无头绪,即使付款成功,也会发生这种情况。 PS - 这是从沙盒,我没有测试实际的PayPal网站上的代码。在进入实际站点之前,我首先要在沙箱上进行确认。 – pramodtech 2011-04-23 08:20:55