我们正在尝试将PayPal否定测试集成到我们的系统中,以便我们可以测试付款失败,如下所述:
https://developer.paypal.com/docs/api/request-headers/
我们处于.NET Core C#环境中,因此我们使用的是PayPalCheckoutSdk 1.0.0 nuget包:
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仪表板中切换的选项,并设法在沙盒帐户配置中找到了这一点:
当我们将其设置为关闭时,我们真的很高兴将其打开,并看到负面测试终于奏效了。
不幸的是,由于我们仍然收到空的404响应,因此这对PayPal响应绝对为零。
有什么线索使我们无法通过负面测试吗?