因此,我尝试实施Paypal Express结帐并继续收到上述错误。
我的NV如下:
METHOD=SetExpressCheckout&
VERSION=204.0&
USER=mylogicn&
PWD=mypwd&
SIGNATURE=mysignature&
PAYMENTREQUEST_0_AMT=26.65&
PAYMENTREQUEST_0_CURRENCYCODE=GBP&
RETURNURL=https://www.example.com/Basket/NotificationProcessor.ashx?type=paypalsuccess&
CANCELURL=https://www.example.com/Basket/NotificationProcessor.ashx?type=paypalfailure&
PAYMENTREQUEST_0_PAYMENTACTION=Sale
显然某些信息已经改变。 我无法找到任何特别错误的请求但是总是会返回10001,并带有超时处理请求。
我希望此前有人遇到此问题,并有解决方案。
编辑: 这是将请求组合在一起并检索响应的代码:
string[][,] nv = new string[11][,]
{
new string[,]{{"METHOD", "SetExpressCheckout" }},
new string[,]{{"VERSION", "204.0" }},
new string[,]{{"USER", "myuser"}},
new string[,]{{"PWD", "mypwd"}},
new string[,]{{"SIGNATURE","mysig"}},
new string[,]{{"PAYMENTREQUEST_0_AMT", "26.65"}},
new string[,]{{"PAYMENTREQUEST_0_CURRENCYCODE","GBP"}},
new string[,]{{"RETURNURL", "https://www.example.com/Basket/NotificationProcessor.ashx?type=paypalsuccess"}},
new string[,]{{"CANCELURL", "https://www.example.com/Basket/NotificationProcessor.ashx?type=paypalfailure"}},
new string[,]{{"PAYMENTREQUEST_0_PAYMENTACTION", "Sale"}},
new string[,]{{"NOSHIPPING", "1"}},
};
string q = "?";
foreach(string[,] s in nv)
{
q += s[0,0] + "=" + s[0,1] + "&";
}
q = q.TrimEnd('&');
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://api-3t.sandbox.paypal.com/nvp" + q);
req.Method = "POST";
HttpWebResponse response = (HttpWebResponse)req.GetResponse();
var encoding = ASCIIEncoding.ASCII;
if (response.StatusCode == HttpStatusCode.OK)
{
using (var reader = new System.IO.StreamReader(response.GetResponseStream(), encoding))
{
string response = reader.ReadToEnd();
}
}
Paypals回应:
TIMESTAMP=2016%2d07%2d11T11%3a10%3a55Z&
CORRELATIONID=dcd0f848a9bb9&
ACK=Failure&
L_ERRORCODE0=10001&
L_SHORTMESSAGE0=Internal%20Error&
L_LONGMESSAGE0=Timeout%20processing%20request
答案 0 :(得分:0)
错误10001是未处理的异常,表示没有更好的错误消息可用。
根据PayPal documentation
您必须将请求中的所有请求字段值编码为PayPal和 解码响应中的所有字段值。您必须编码和解码 个人价值观; 不对整个邮件进行编码或解码。 浏览器经常尝试编码和解码消息 重定向到他们或从他们;但是,您必须验证编码和 解码正确完成,仅适用于字段值。
可能由于编码而发生。试着摆脱它,看看它是否有帮助。
答案 1 :(得分:0)
这里的问题是使用POST。只需删除req.Method = "POST"
即可解决问题。