C#PayPalCheckoutSDK否定测试返回HTTP 404

时间:2019-06-06 14:07:45

标签: paypal paypal-sandbox paypal-rest-sdk

我们正在尝试将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。

BrainTreeHttp.HttpException with statuscode 404[1]

我们已经抓挠了很长时间,并且已经进行了许多测试以使它起作用。我们一直在寻找可能在PayPal Developer仪表板中切换的选项,并设法在沙盒帐户配置中找到了这一点:

PayPal Negative Testing toggle in sandbox account settings

当我们将其设置为关闭时,我们真的很高兴将其打开,并看到负面测试终于奏效了。

不幸的是,由于我们仍然收到空的404响应,因此这对PayPal响应绝对为零。

有什么线索使我们无法通过负面测试吗?

0 个答案:

没有答案