C# Paypal API响应:安全标头无效
这是我正在构建并发送给Paypal的字符串C# Paypal API响应:安全标头无效,c#,visual-studio,paypal,httpwebresponse,C#,Visual Studio,Paypal,Httpwebresponse,这是我正在构建并发送给Paypal的字符串 string paypalMessage = "https://api-3t.sandbox.paypal.com/nvp?"; paypalMessage += "USER=" + USER; paypalMessage += "&PWD=" + PWD; paypalMessage += "&VERSION=" + VERSION; paypalMes
string paypalMessage = "https://api-3t.sandbox.paypal.com/nvp?";
paypalMessage += "USER=" + USER;
paypalMessage += "&PWD=" + PWD;
paypalMessage += "&VERSION=" + VERSION;
paypalMessage += "&SIGNATURE=" + SIGNATURE;
paypalMessage += "&METHOD=" + METHOD;
paypalMessage += "&IPADDRESS=" + IPADDRESS;
paypalMessage += "&ACCT=" + ACCT;
paypalMessage += "&EXPDATE=" + EXPDATE;
paypalMessage += "&CVV2=" + CVV2;
paypalMessage += "&FIRSTNAME=" + FIRSTNAME;
paypalMessage += "&LASTNAME=" + LASTNAME;
paypalMessage += "&STREET=" + STREET;
paypalMessage += "&CITY=" + CITY;
paypalMessage += "&STATE=" + STATE;
paypalMessage += "&COUNTRYCODE=" + COUNTRYCODE;
paypalMessage += "&ZIP=" + ZIP;
paypalMessage += "&AMT=" + AMT;
return paypalMessage;
当我将此信息发送给paypal时,我从paypal得到的回复如下:
时间戳=2014%2d05%2d06T19%3a55%3a28Z&CORRELATIONID=e06f3f16478d1&ACK=Failure&VERSION=113%2e0&BUILD=10762035&L_ERRORCODE0=10002&L_SHORTMESSAGE0=Security%20错误&L_LONGMESSAGE0=Security%20头%20无效&L_SEVERITYCODE0=Error
“安全标头无效”是什么意思?我的谷歌搜索告诉我这是一个安全问题,但我知道用户和PWD都是正确的。签名是我登录Paypal开发者网站后从帐户中提取的。这是错的吗
编辑:
在检查回复的同时做一些研究,如果我使用沙盒进行测试,这是否意味着我需要使用附加到实际paypal开发者帐户的已创建沙盒帐户中的用户/PWD/签名?这就是我在sandbox和live之间来回工作所需要更改的全部内容吗?每当您收到此消息时,都意味着使用了无效的API凭据。确保API凭据中没有添加空格,并且完整签名已复制 另一个选项是端点和凭据不匹配 如果您使用沙盒凭据和实时端点,那么您将收到此消息。如果您对沙盒端点使用实时凭据,情况也是如此。
在这篇文章中,我有到PayPal开发者文档的链接。它详细介绍了如何上线 它并不总是意味着无效的API凭据或错误的端点 如果您对此信息绝对确定,请检查您提出请求时使用的编码-它应该是UTF-8,不带字节顺序标记(BOM),例如 这是而不是默认值,在检查了一个小时后,它帮助了我
当然,也要确保所有参数都是url编码的是的,安全头无效意味着API凭据无效。如果你试图使用沙盒服务器,你需要使用开发者帐户中的creds。我发现这正是我的问题。有一个沙盒凭据必须与沙盒端点匹配。
var requestEncoding = new UTF8Encoding(false); // UTF-8 without BOM
using (var streamWriter = new StreamWriter(request.GetRequestStream(), requestEncoding))
{
streamWriter.Write(requestBody);
}