Ответ API Paypal: недопустимый заголовок безопасности

Это строка, которую я создаю и отправляю в 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 = сбой & версия = 113% 2E0 & builde = 10762035 & l_shortmessage0 = 10002 & l_shortmessage0 = Security% 20Error & l_longmessage0 = Security% 20Header% 20is% 20Нота% 20valid & l_severitycode0 = ошибка

Что означает этот «заголовок безопасности недействителен»? Мои поиски в Google говорят мне, что это связано с безопасностью, но я знаю, что USER и PWD верны. Подпись — это то, что я снял с учетной записи после входа на веб-сайт Paypal Developer. Это неправильно?

РЕДАКТИРОВАТЬ:

Проводя некоторые исследования при проверке ответов, если я тестирую с помощью Sandbox, значит ли это, что мне нужно использовать USER/PWD/SIGNATURE из созданной учетной записи Sandbox, которая привязана к моей фактической учетной записи разработчика PayPal? Будет ли это все, что мне нужно изменить, чтобы работать между песочницей и живой игрой?


person Soulzityr    schedule 06.05.2014    source источник
comment
Да, недействительный заголовок безопасности означает недействительные учетные данные API. Если вы пытаетесь использовать сервер песочницы, вам необходимо использовать учетные данные из вашей учетной записи разработчика.   -  person Aaron    schedule 07.05.2014


Ответы (2)


Всякий раз, когда вы получаете это сообщение, это означает, что были использованы недопустимые учетные данные API. Убедитесь, что в ваших учетных данных API нет добавленных пробелов и что была скопирована полная подпись.

Другой вариант заключается в том, что ваши конечные точки и ваши учетные данные не совпадают.

Если вы используете учетные данные Sandbox и активные конечные точки, вы получите это сообщение. То же самое, если вы используете действующие учетные данные для конечных точек песочницы.

Вот ссылка на другую публикацию Stack с той же проблемой

В посте есть ссылки на документацию для разработчиков PayPal. Подробности будут опубликованы.

person pp_MSI_Jenn    schedule 06.05.2014
comment
Я узнал, что это моя точная проблема. Существуют учетные данные песочницы, которые должны соответствовать конечной точке песочницы. - person Soulzityr; 07.05.2014

Это не всегда означает недействительные учетные данные API или неправильную конечную точку.

Если вы абсолютно уверены в этой информации, проверьте кодировку, с которой вы делаете запрос - это должна быть UTF-8 без метки порядка байтов (BOM), например

var requestEncoding = new UTF8Encoding(false); // UTF-8 without BOM

using (var streamWriter = new StreamWriter(request.GetRequestStream(), requestEncoding))
{
    streamWriter.Write(requestBody);
}

Это не значение по умолчанию, и оно помогло мне после часа проверки всего

Конечно, убедитесь, что все ваши параметры также закодированы в URL.

person Vladislav Bolshakov    schedule 18.04.2016