我正在尝试从Paypal Sandbox IPN模拟器获得'验证'回复。 我找到并尝试了一些样品,但我无法工作。所以我想我必须错过一些非常明显的东西。 下面是我最近的尝试,我尝试了前缀和后缀'cmd = _notify-validate'以及ASCII和UTF8编码。 在所有情况下,从模拟器中获取参数字符串,然后从请求中获得空的共鸣。
如果有人能够发现我的错误,那将会使我的星期五。 感谢
public partial class IPNListner : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
byte[] parameters = Request.BinaryRead(Request.ContentLength);
string body = Verify(true, parameters);
}
private string Verify(bool isSandbox, byte[] parameters)
{
string response = "";
try
{
string url = isSandbox ?
"https://www.sandbox.paypal.com/cgi-bin/webscr" : "https://www.paypal.com/cgi-bin/webscr";
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
//must keep the original intact and pass back to PayPal with a _notify-validate command
string data = Encoding.ASCII.GetString(parameters);
data += "&cmd=_notify-validate";
webRequest.ContentLength = data.Length;
//Send the request to PayPal and get the response
using (StreamWriter streamOut = new StreamWriter(webRequest.GetRequestStream(), System.Text.Encoding.ASCII))
{
streamOut.Write(data);
streamOut.Close();
}
using (StreamReader streamIn = new StreamReader(webRequest.GetResponse().GetResponseStream()))
{
response = streamIn.ReadToEnd();
streamIn.Close();
}
}
catch { }
return response;
}
}
答案 0 :(得分:0)
好吧,我是傻瓜,设置沙箱帐户使用我的IPN列表,它工作正常。怀疑我在使用paypal IPN模拟器时应该使用www.developer.paypal.com地址。上面的代码适用于Sandbox我相信它会正常工作。