这是我正在构建并发送给Paypal的字符串。
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获得的回复:
TIMESTAMP = 2014%2d05%2d06T19%3a55%3a28Z&安培;的correlationID = e06f3f16478d1&安培; ACK =失败&安培; VERSION = 113%2E0&安培; BUILD = 10762035&安培; L_ERRORCODE0 = 10002&安培; L_SHORTMESSAGE0 =安全%20error&安培; L_LONGMESSAGE0 =安全%20header%图20是%20not%20valid&安培; L_SEVERITYCODE0 =错误
这个"安全标头无效"意思?我的谷歌搜索告诉我它的安全性,但我知道USER和PWD都是正确的。 Signature是我登录Paypal Developer网站后从帐户中取出的。这是错的吗?
编辑:
在检查回复时进行一些研究,如果我使用Sandbox进行测试,是否意味着我需要使用附加到我的实际paypal开发者帐户的已创建Sandbox帐户中的USER / PWD / SIGNATURE?这是否需要改变才能在沙箱和现场之间来回切换?
答案 0 :(得分:0)
每当收到此消息时,或者意味着使用了无效的API凭据。确保您的API凭据中没有添加的空格,并且已复制完整的签名。
另一个选项是您的端点和凭据不匹配。
如果您使用沙盒凭据和实时终端,则会收到此消息。如果您使用沙盒端点的实时凭据,则相同。
Here is a link to another Stack Post with the Same Issue
在帖子中,我有PayPal开发者文档的链接。详细信息上线。
答案 1 :(得分:0)
它并不总是指无效的API凭据或错误的端点
如果您对此信息完全确定,请检查您提出请求的编码 - 它应为UTF-8 不带字节顺序标记(BOM),例如
var requestEncoding = new UTF8Encoding(false); // UTF-8 without BOM
using (var streamWriter = new StreamWriter(request.GetRequestStream(), requestEncoding))
{
streamWriter.Write(requestBody);
}
这是不一个默认值,经过一个小时的检查后,它帮助了我
当然,请确保所有参数都经过网址编码