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 方面的一个错误。

如果我从

更改 testUrl

String 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 错误请求

Paypal Express Checkout / React - 发送产品信息

paypal express checkout set paypal费用另加