PayPal Express Checkout 退货 - 安全标头无效
Posted
技术标签:
【中文标题】PayPal Express Checkout 退货 - 安全标头无效【英文标题】:PayPal Express Checkout returns - Security header is not valid 【发布时间】:2012-01-04 08:36:17 【问题描述】:这可能已经被问了一千次了……但我确定我所有的端点和凭据都是正确的。昨天还在工作。
Security error:
Error no: 10002
Error message: Security header is not valid
现在我正在测试沙盒服务器。
每当我在浏览器中尝试 testURL 时,我都会收到带有令牌的 ACK=Success,但在运行代码时会收到“安全标头无效”错误。
几个小时前它还在工作,但由于某种原因,我现在一直收到同样的错误。
使用沙盒帐户中的用户/密码和签名
https://api-3t.sandbox.paypal.com/nvp
USER=xxxxxxxxxxxxxxxxxxxx
PWD=XXXXXXXXXXXXX
SIGNATURE=XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
我有以下测试代码:
String testURL = "https://api-3t.sandbox.paypal.com/nvp?USER=xxxxxxxxxxxxxxxxxxxx&PWD=XXXXXXXXXXXXX&SIGNATURE=XXXXXXXXXXXXXXXXXXXXXXXXXXXXX&VERSION=84.0-2276209&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_AMT=15&RETURNURL=https%3a%2f%2fdomain.com%2fCheckout.aspx&CANCELURL=https%3a%2f%2fdomain.com%2fCheckout.aspx&METHOD=SetExpressCheckout";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(testURL);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
//Send the request to PayPal and get the response
StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
streamOut.Write(testURL);
streamOut.Close();
// get resposne
StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream());
string strResponse = HttpUtility.UrlDecode(streamIn.ReadToEnd());
streamIn.Close();
HTTPREsponse 代码发送时
TIMESTAMP=2011-11-22T23:25:34Z&CORRELATIONID=392047cb78388&ACK=Failure&VERSION=84.000000&BUILD=2271164&L_ERRORCODE0=10002&L_SHORTMESSAGE0=Security error&L_LONGMESSAGE0=Security header is not valid&L_SEVERITYCODE0=Error
HttpResponse 如果我只是在浏览器中复制粘贴 testURL
TOKEN=EC%2d4JW15968AV8121546&TIMESTAMP=2011%2d11%2d22T22%3a59%3a27Z&CORRELATIONID=c790299fd9ac7&ACK=Success&VERSION=84%2e000000&BUILD=2271164
我试过不对测试url中的变量进行UrlEncode...同样的问题
提前致谢
【问题讨论】:
【参考方案1】:好的,这可能是 Paypal 方面的一个错误。
如果我从
更改 testUrlString testURL = "https://api-3t.sandbox.paypal.com/nvp?USER=XXX&PWD=YYY&SIGNATURE=ZZZ&VERSION=.......&METHOD=SetExpressCheckout";
到
String testURL = "https://api-3t.sandbox.paypal.com/nvp?&x=y&USER=XXX&PWD=YYY&SIGNATURE=ZZZ&VERSION=.......&METHOD= SetExpressCheckout";
有效
查看带有随机第一个查询字符串变量的粗体部分。 PayPal 似乎忽略了从代码隐藏发送的第一个查询字符串参数(如果之前没有 x=y,则为 user=xxx)。
【讨论】:
以上是关于PayPal Express Checkout 退货 - 安全标头无效的主要内容,如果未能解决你的问题,请参考以下文章
PayPal Express Checkout 通行证 transactionID
如何访问 Paypal Express Checkout 的响应?
如何为 PayPal Express Checkout 配置 IPN?
paypal express checkout - 400 错误请求