Forcing desired responses from the Bango Payment Merchant API
To help you test your store, in many cases you can specify in a Bango Payment API request the kind of response you want. For example, when sending an initial request to identify a user, you can force an OK
response that returns a Bango ID straight away. You can use this mechanism to trigger testing scenarios that you don't usually encounter naturally or can't simulate, such as failures by payment providers.
To force certain responses, include one or two special HTTP headers in the API request:
Prefer
: specifies which HTTP status code to respond withpreference-extension
: specifies values you need in the response body, to disambiguate responses with the same HTTP status codeCheck Bango Payment / Merchant API reference to see whether you can use a Prefer
header to force a particular response. If you can't, you may alternatively be able to use Bango TestPay to force that response.
Never include a Prefer
or preference-extension
header in production.
Prefer
headerSyntax | Prefer: status=NNN |
---|---|
Examples | Prefer: status=200
Prefer: status=404 |
Use this header with a Bango Payment API request to force a response with the specified HTTP status code. For example, if you specify Prefer: status=401
with an API request you'll always receive an HTTP 401 response, and the response body will specify responseCode
as UNAUTHORIZED
to match the appropriate API definition.
Some HTTP status codes correspond to more than one responseCode
in the response body. For example, HTTP status 202 might mean a responseCode
of USER_CANCELLED
or NOT_AVAILABLE
or others, depending on the API in use. To choose which responseCode
to receive, include the preference-extension
header.
preference-extension
headerSyntax | preference-extension: responseCode=XXX[;action=YYY] |
---|---|
Examples | preference-extension: responseCode=CLIENT_ACTION_REQUIRED;action=REDIRECT
preference-extension: responseCode=USER_CANCELLED
preference-extension: responseCode=PRICE_NOT_SUPPORTED |
Use this header together with Prefer
to select the response you want if the HTTP status code matches multiple possible responses. See Bango Payment / Merchant API reference for details of status codes and how they relate to responseCode
values.
Force UNAUTHORIZED
:
Request headers | Prefer: status=401 |
---|---|
Example response | {
"responseCode": "UNAUTHORIZED",
"responseMessage": "Invalid access credentials."
}
|
Force CLIENT_ACTION_REQUIRED
with action REDIRECT
(for those API calls supporting this response):
Request headers | Prefer: status=202
preference-extension: responseCode=CLIENT_ACTION_REQUIRED;action=REDIRECT |
---|---|
Example response | {
"responseCode": "CLIENT_ACTION_REQUIRED",
"responseMessage": "An action is required in the client.",
"sessionId": "9c7b9891-c871-4dd5-bdcc-ac25ff2412b7",
"bangoUserId": null,
"parameters":
{
"action": "REDIRECT",
"url": "http://www.example.com/id/parameter=6bd6305c"
}
}
|
Force DECLINED
(for those API calls supporting this response):
Request headers | Prefer: status=202
preference-extension: responseCode=DECLINED |
---|---|
Example response | {
"responseCode": "DECLINED",
"responseMessage": "The payments provider declined the payment request."
}
|