我将测试应用程序与 Paypal 快速结帐集成在一起,并且运行良好。但现在似乎有些问题。当我的 IPN 处理程序检查响应 paypal 将响应返回为 html 页面而不是“已验证”或“无效”时,在贝宝上成功付款后,因此我无法验证付款。Paypal 最近是否有任何关于快速结账的变化?下面是完整的代码
<form id="Paypal" name="Paypal" action="https://www.sandbox.paypal.com/cgi-bin/webscr"
method="post">
@Html.Hidden("cmd", "_xclick")
@Html.Hidden("business", "myemail@test.com")
@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;
编辑:这是发送到 Paypal 的请求字符串
CONTEXT = 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_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&的charset =窗口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_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-8&cmd=_notify-validate00&mc_gross=850.00&custom=12&charset=windows-1252¬ify_version=3.1&merchant_return_link=click+here&form_charset=UTF-8&cmd=_notify-validate00&mc_gross=850.00&custom=12&charset=windows-1252¬ify_version=3.1&merchant_return_link=click+here&form_charset=UTF-8&cmd=_notify-validate