Мы пытаемся интегрировать отрицательное тестирование PayPal в нашу систему, чтобы мы могли тестировать сбои платежей, как описано здесь:
https://developer.paypal.com/docs/api/request-headers/
Мы находимся в среде .NET Core C #,поэтому мы используем пакет nuget PayPalCheckoutSdk 1.0.0:
https://www.nuget.org/packages/PayPalCheckoutSdk/1.0.0/
В соответствии с документацией PayPal, как описано в первой ссылке выше, нам нужно добавить заголовок HTTP в запрос передотправив его в PayPal для активации отрицательного тестирования (здесь мы хотим проверить сбой из-за превышения кредитной карты):
PayPal-Mock-Response: {\"mock_application_codes\": \"INSTRUMENT_DECLINED\"}
Итак, вот что мы делаем, чтобы проверить это в случае авторизацииЗаказ PayPal:
var request = new OrdersAuthorizeRequest(order.Id);
request.Prefer("return=representation");
request.RequestBody(new OrderActionRequest());
// Enable PayPal negative testing.
request.Headers.Add(
"PayPal-Mock-Response",
$"{{\"mock_application_codes\": \"INSTRUMENT_DECLINED\"}}");
// When the header is present, this call returns
// an empty response with HTTP status code 404.
var response = await client.Execute(request);
Обратите внимание, что мы находимся в среде Песочницы, поскольку мы знаем, что отрицательное тестирование не работает в реальной среде.
Если мы не добавляем заголовок,вызов работает отлично, и авторизация проходит.Но как только заголовок включен в запрос, вместо получения ожидаемого ответа об ошибке от PayPal, мы получаем пустой ответ с кодом состояния HTTP 404.
Мыдавно почесал голову и много раз тестировал, чтобы заставить это работать.Мы искали, возможно, вариант переключения где-то на панели инструментов PayPal Developer, и нам удалось найти это довольно глубоко в конфигурации учетной записи песочницы:
Когда мы обнаружили, что это было отключено, мы были очень рады включить его и увидеть, что отрицательное тестирование наконец заработало.
К сожалению, это никак не повлияло на ответы от PayPal, так как мы все еще становимся пустыми 404ответы.
Любая подсказка, почему мы не можем заставить работать отрицательное тестирование?