5 Billing & refund - failure scenarios (API only)
These tests are only relevant if your integration does not require the user to be redirected via a Bango or Payment provider flow. This will be dependent on Payment Provider requirements.
5.1 Insufficient credit
To use Bango's test payment provider 'TestPay' to test this scenario generate a userId using the following details:
identificationMethodKey | GBR_BANGO |
---|---|
MSISDN | 447710900121 |
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 202 (Accepted) should be returned with the following body: { "responseCode": "USER_INSUFFICIENT_CREDIT", "responseMessage": "The user does not have enough credit for this payment" } |
5.2 User barred
To use Bango's test payment provider 'TestPay' to test this scenario generate a userId using the following details:
identificationMethodKey | GBR_BANGO |
---|---|
MSISDN | 447710900122 |
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 202 (Accepted) should be returned with the following body: { "responseCode": "USER_BARRED", "responseMessage": "The user is not allowed to use this payment method", } |
5.3 User not enabled
To use Bango's test payment provider 'TestPay' to test this scenario generate a userId using the following details:
identificationMethodKey | GBR_BANGO |
---|---|
MSISDN | 447710900123 |
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 202 (Accepted) should be returned with the following body: { "responseCode": "USER_NOT_ENABLED", "responseMessage": "The biller has not enabled this user for payments", } |
5.4 User suspended
To use Bango's test payment provider 'TestPay' to test this scenario generate a userId using the following details:
identificationMethodKey | GBR_BANGO |
---|---|
MSISDN | 447710900124 |
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 202 (Accepted) should be returned with the following body: { "responseCode": "USER_SUSPENDED", "responseMessage": "The user is temporarily not allowed to use this payment method", } |
5.5 Spend limit
To use Bango's test payment provider 'TestPay' to test this scenario generate a userId using the following details:
identificationMethodKey | GBR_BANGO |
---|---|
MSISDN | 447710900125 |
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 202 (Accepted) should be returned with the following body: { "responseCode": "USER_SPEND_LIMIT", "responseMessage": "The user has reached their spend limit" } |
5.6 Speed limit
This scenario can be tested using Prefer Headers.
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction Include the following headers in the request:
| An HTTP response code 202 (Accepted) should be returned with the following body: { "responseCode": "SPEED_LIMIT", "responseMessage": "The biller has rejected a payment request too soon after the previous one for this user", } |
5.7 Not Available
This scenario can be tested using Prefer Headers.
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction Include the following headers in the request:
| An HTTP response code 202 (Accepted) should be returned with the following body: { "responseCode": "NOT_AVAILABLE", "responseMessage": "No valid payment methods were found." } |
5.8 Price not supported
This scenario can be tested using Prefer Headers.
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction Option 1: Include the following headers in the request:
Option 2: Include a price over the maximum allowed | An HTTP response code 202 (Accepted) should be returned with the following body: { "responseCode": "PRICE_NOT_SUPPORTED", "responseMessage": "Price not supported on suggested payment methods." } |
5.9 Transaction declined (start)
To use Bango's test payment provider 'TestPay' to test this scenario generate a userId using the following details:
identificationMethodKey | GBR_BANGO |
---|---|
MSISDN | 447710900129 |
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 202 (Accepted) should be returned with the following body: { "responseCode": "DECLINED", "responseMessage": "The biller declined the payment request", } |
5.10 Transaction declined (commit)
To use Bango's test payment provider 'TestPay' to test this scenario generate a userId using the following details:
identificationMethodKey | GBR_BANGO |
---|---|
MSISDN | 447710900130 |
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Commit the transaction Send a valid PUT request to https://api.bango.net/v5/transaction/{Bango-transaction-id} | An HTTP response code 202 (Accepted) should be returned with the following body: { "responseCode": "DECLINED", "responseMessage": "The biller declined the payment request", } |
5.11 Transaction declined (cancel)
To use Bango's test payment provider 'TestPay' to test this scenario generate a userId using the following details:
identificationMethodKey | GBR_BANGO |
---|---|
MSISDN | 447710900131 |
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Cancel the transaction Send a valid DELETE request to https://api.bango.net/v5/transaction/{Bango-transaction-id} | An HTTP response code 202 (Accepted) should be returned with the following body: { "responseCode": "DECLINED", "responseMessage": "The biller declined the payment request", } |
5.12 Transaction declined (refund)
To use Bango's test payment provider 'TestPay' to test this scenario generate a userId using the following details:
identificationMethodKey | GBR_BANGO |
---|---|
MSISDN | 447710900132 |
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Commit the transaction Send a valid PUT request to https://api.bango.net/v5/transaction/{Bango-transaction-id} | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", } |
3 | Refund the transaction Send a valid DELETE request to https://api.bango.net/v5/transaction/{Bango-transaction-id} | An HTTP response code 202 (Accepted) should be returned with the following body: { "responseCode": "DECLINED", "responseMessage": "The biller declined the payment request", } |
5.13 Connect error (start)
To use Bango's test payment provider 'TestPay' to test this scenario generate a userId using the following details:
identificationMethodKey | GBR_BANGO |
---|---|
MSISDN | 447710900133 |
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 502 (Bad Gateway) should be returned with the following body: { "responseCode": "CONNECT_ERROR", "responseMessage": "Connection error submitting the payment request to the biller", } |
5.14 Connect error (commit)
To use Bango's test payment provider 'TestPay' to test this scenario generate a userId using the following details:
identificationMethodKey | GBR_BANGO |
---|---|
MSISDN | 447710900134 |
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Commit the transaction Send a valid PUT request to https://api.bango.net/v5/transaction/{Bango-transaction-id} | An HTTP response code 502 (Bad Gateway) should be returned with the following body: { "responseCode": "CONNECT_ERROR", "responseMessage": "Connection error submitting the payment request to the biller", } |
5.15 Connect error (cancel)
To use Bango's test payment provider 'TestPay' to test this scenario generate a userId using the following details:
identificationMethodKey | GBR_BANGO |
---|---|
MSISDN | 447710900135 |
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Cancel the transaction Send a valid DELETE request to https://api.bango.net/v5/transaction/{Bango-transaction-id} | An HTTP response code 502 (Bad Gateway) should be returned with the following body: { "responseCode": "CONNECT_ERROR", "responseMessage": "Connection error submitting the payment request to the biller", } |
5.16 Connect error (refund)
To use Bango's test payment provider 'TestPay' to test this scenario generate a userId using the following details:
identificationMethodKey | GBR_BANGO |
---|---|
MSISDN | 447710900136 |
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Commit the transaction Send a valid PUT request to https://api.bango.net/v5/transaction/{Bango-transaction-id} | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", } |
3 | Refund the transaction Send a valid DELETE request to https://api.bango.net/v5/transaction/{Bango-transaction-id} | An HTTP response code 502 (Bad Gateway) should be returned with the following body: { "responseCode": "CONNECT_ERROR", "responseMessage": "Connection error submitting the payment request to the biller", } |
5.17 Connect timeout (start)
This scenario can be tested using Prefer Headers.
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction Include the following header in the request:
| An HTTP response code 202 (Accepted) should be returned with the following body: { "responseCode": "CONNECT_TIMEOUT", "responseMessage": "Connection timeout submitting the payment request to the biller", } |
5.18 Connect timeout (commit)
This scenario can be tested using Prefer Headers.
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Commit the transaction Send a valid PUT request to https://api.bango.net/v5/transaction/{Bango-transaction-id} Include the following header in the request:
| An HTTP response code 504 (Gateway timeout) should be returned with the following body: { "responseCode": "CONNECT_TIMEOUT", "responseMessage": "Connection timeout submitting the payment request to the biller", } |
5.19 Connect timeout (cancel)
This scenario can be tested using Prefer Headers.
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Cancel the transaction Send a valid DELETE request to https://api.bango.net/v5/transaction/{Bango-transaction-id} Include the following header in the request:
| An HTTP response code 504 (Gateway timeout) should be returned with the following body: { "responseCode": "CONNECT_TIMEOUT", "responseMessage": "Connection timeout submitting the payment request to the biller", } |
5.20 Connect timeout (refund)
This scenario can be tested using Prefer Headers.
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Commit the transaction Send a valid PUT request to https://api.bango.net/v5/transaction/{Bango-transaction-id} | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", } |
3 | Refund the transaction Send a valid DELETE request to https://api.bango.net/v5/transaction/{Bango-transaction-id} Include the following header in the request:
| An HTTP response code 504 (Gateway timeout) should be returned with the following body: { "responseCode": "CONNECT_TIMEOUT", "responseMessage": "Connection timeout submitting the payment request to the biller", } |
5.21 Billing provider error (start)
To use Bango's test payment provider 'TestPay' to test this scenario generate a userId using the following details:
identificationMethodKey | GBR_BANGO |
---|---|
MSISDN | 447710900141 |
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 202 (Accepted) should be returned with the following body: { "responseCode": "FAILURE", "responseMessage": "The biller returned an unspecified failure", } |
5.22 Billing provider error (commit)
To use Bango's test payment provider 'TestPay' to test this scenario generate a userId using the following details:
identificationMethodKey | GBR_BANGO |
---|---|
MSISDN | 447710900142 |
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Commit the transaction Send a valid PUT request to https://api.bango.net/v5/transaction/{Bango-transaction-id} | An HTTP response code 202 (Accepted) should be returned with the following body: { "responseCode": "FAILURE", "responseMessage": "The biller returned an unspecified failure", } |
5.23 Billing provider error (cancel)
To use Bango's test payment provider 'TestPay' to test this scenario generate a userId using the following details:
identificationMethodKey | GBR_BANGO |
---|---|
MSISDN | 447710900143 |
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Cancel the transaction Send a valid DELETE request to https://api.bango.net/v5/transaction/{Bango-transaction-id} | An HTTP response code 202 (Accepted) should be returned with the following body: { "responseCode": "FAILURE", "responseMessage": "The biller returned an unspecified failure", } |
5.24 Billing provider error (refund)
To use Bango's test payment provider 'TestPay' to test this scenario generate a userId using the following details:
identificationMethodKey | GBR_BANGO |
---|---|
MSISDN | 447710900144 |
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Commit the transaction Send a valid PUT request to https://api.bango.net/v5/transaction/{Bango-transaction-id} | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", } |
3 | Refund the transaction Send a valid DELETE request to https://api.bango.net/v5/transaction/{Bango-transaction-id} | An HTTP response code 202 (Accepted) should be returned with the following body: { "responseCode": "FAILURE", "responseMessage": "The biller returned an unspecified failure", } |
5.25 Invalid userId (start)
To use Bango's test payment provider 'TestPay' to test this scenario generate a userId using the following details:
identificationMethodKey | GBR_BANGO |
---|---|
MSISDN | 447710900145 |
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 400 (Bad request) should be returned with the following body: { "responseCode": "INVALID_BANGOUSERID", "responseMessage": "Invalid bangoUserId." } |
5.26 Partial commit invalid amount
To use Bango's test payment provider 'TestPay' to test this scenario generate a userId using the following details:
identificationMethodKey | GBR_BANGO |
---|---|
MSISDN | 447710900120 |
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction { "bangoUserId": "123456789", "externalTransactionId": "{your-transaction-id}", "paymentMethods": [ "OPERATORBILLING", ], "paymentItems": [ { "priceList": [ { "grossAmount": "0.99", "taxAmount": "0.00", "currencyIso3": "USD" }, ], "itemName": "Item title", "itemDescription": "Item description", "itemCategory": "1", "externalPaymentItemId": "{your-payment-item-id}", "submerchantReferenceKey": "{your-submerchant-reference-key}" } ], "extensionData": { "callbackUrl": "https://{callback-url}", "notificationUrl": "https://{notification-url}" } } | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Partially commit the transaction with an invalid amount Send a PUT request to https://api.bango.net/v5/transaction/{Bango-transaction-id} with a grossAmount or taxAmount higher than the POST { "bangoUserId": "123456789", "externalTransactionId": "{your-transaction-id}", "paymentMethods": [ "OPERATORBILLING", ], "paymentItems": [ { "priceList": [ { "grossAmount": "1.59", "taxAmount": "0.00", "currencyIso3": "USD" }, ], "itemName": "Item title", "itemDescription": "Item description", "itemCategory": "1", "externalPaymentItemId": "{your-payment-item-id}", "submerchantReferenceKey": "{your-submerchant-reference-key}" } ], "extensionData": { "callbackUrl": "https://{callback-url}", "notificationUrl": "https://{notification-url}" } } | An HTTP response code 400 (Bad Request) should be returned with the following body: { "responseCode": "BAD_REQUEST", "responseMessage": "Price is higher than the one in the original request." } |
5.27 Partial refund invalid amount (1st attempt)
To use Bango's test payment provider 'TestPay' to test this scenario generate a userId using the following details:
identificationMethodKey | GBR_BANGO |
---|---|
MSISDN | 447710900120 |
NOTE: Partial refunds are not supported by all payment providers.
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction { "bangoUserId": "123456789", "externalTransactionId": "{your-transaction-id}", "paymentMethods": [ "OPERATORBILLING", ], "paymentItems": [ { "priceList": [ { "grossAmount": "10.99", "taxAmount": "1.00", "currencyIso3": "USD" }, ], "itemName": "Item title", "itemDescription": "Item description", "itemCategory": "1", "externalPaymentItemId": "{your-payment-item-id}", "submerchantReferenceKey": "{your-submerchant-reference-key}" } ], "extensionData": { "callbackUrl": "https://{callback-url}", "notificationUrl": "https://{notification-url}" } } | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Commit the transaction Send a valid PUT request to https://api.bango.net/v5/transaction/{Bango-transaction-id} No body required | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", } |
3 | Partially refund the transaction with invalid amount Send a DELETE request to https://api.bango.net/v5/transaction/{Bango-transaction-id} with a grossAmount and or taxAmount higher than the POST. { "bangoUserId": "123456789", "externalTransactionId": "{your-transaction-id}", "paymentMethods": [ "OPERATORBILLING", ], "paymentItems": [ { "priceList": [ { "grossAmount": "12.59", "taxAmount": "1.20", "currencyIso3": "USD" }, ], "itemName": "Item title", "itemDescription": "Item description", "itemCategory": "1", "externalPaymentItemId": "{your-payment-item-id}", "submerchantReferenceKey": "{your-submerchant-reference-key}" } ], "extensionData": { "callbackUrl": "https://{callback-url}", "notificationUrl": "https://{notification-url}" } } | An HTTP response code 202 (Accepted) should be returned with the following body: { "responseCode": "BAD_REQUEST", "responseMessage": "Price is higher than the one in the original request." } |
5.28 Partial refund invalid amount (2nd attempt)
To use Bango's test payment provider 'TestPay' to test this scenario generate a userId using the following details:
identificationMethodKey | GBR_BANGO |
---|---|
MSISDN | 447710900120 |
NOTE: Partial refunds are not supported by all payment providers.
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction { "bangoUserId": "123456789", "externalTransactionId": "{your-transaction-id}", "paymentMethods": [ "OPERATORBILLING", ], "paymentItems": [ { "priceList": [ { "grossAmount": "10.99", "taxAmount": "1.00", "currencyIso3": "USD" }, ], "itemName": "Item title", "itemDescription": "Item description", "itemCategory": "1", "externalPaymentItemId": "{your-payment-item-id}", "submerchantReferenceKey": "{your-submerchant-reference-key}" } ], "extensionData": { "callbackUrl": "https://{callback-url}", "notificationUrl": "https://{notification-url}" } } | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Commit the transaction Send a valid PUT request to https://api.bango.net/v5/transaction/{Bango-transaction-id} No body required | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", } |
3 | Partially refund the transaction Send a DELETE request to https://api.bango.net/v5/transaction/{Bango-transaction-id} with a grossAmount and or taxAmount lower than the POST. { "bangoUserId": "123456789", "externalTransactionId": "{your-transaction-id}", "paymentMethods": [ "OPERATORBILLING", ], "paymentItems": [ { "priceList": [ { "grossAmount": "2.59", "taxAmount": "0.20", "currencyIso3": "USD" }, ], "itemName": "Item title", "itemDescription": "Item description", "itemCategory": "1", "externalPaymentItemId": "{your-payment-item-id}", "submerchantReferenceKey": "{your-submerchant-reference-key}" } ], "extensionData": { "callbackUrl": "https://{callback-url}", "notificationUrl": "https://{notification-url}" } } | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "REFUNDED", "responseMessage": "The transaction was refunded successfully." } The requested amount will be refunded to the user. |
4 | Partially refund the transaction with invalid amount Send a DELETE request to https://api.bango.net/v5/transaction/{Bango-transaction-id} with a grossAmount and or taxAmount lower than the POST but higher than the remaining amount. { "bangoUserId": "123456789", "externalTransactionId": "{your-transaction-id}", "paymentMethods": [ "OPERATORBILLING", ], "paymentItems": [ { "priceList": [ { "grossAmount": "8.50", "taxAmount": "0.90", "currencyIso3": "USD" }, ], "itemName": "Item title", "itemDescription": "Item description", "itemCategory": "1", "externalPaymentItemId": "{your-payment-item-id}", "submerchantReferenceKey": "{your-submerchant-reference-key}" } ], "extensionData": { "callbackUrl": "https://{callback-url}", "notificationUrl": "https://{notification-url}" } } | An HTTP response code 202 (Accepted) should be returned with the following body: { "responseCode": "CANT_REFUND", "responseMessage": "It’s not possible to refund this transaction." } |
5.29 Partial refund uncaptured transaction
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Refund the transaction Send a DELETE request to https://api.bango.net/v5/transaction/{Bango-transaction-id} with a grossAmount and or taxAmount lower than the POST { "bangoUserId": "123456789", "externalTransactionId": "{your-transaction-id}", "paymentMethods": [ "OPERATORBILLING", ], "paymentItems": [ { "priceList": [ { "grossAmount": "8.50", "taxAmount": "0.90", "currencyIso3": "USD" }, ], "itemName": "Item title", "itemDescription": "Item description", "itemCategory": "1", "externalPaymentItemId": "{your-payment-item-id}", "submerchantReferenceKey": "{your-submerchant-reference-key}" } ], "extensionData": { "callbackUrl": "https://{callback-url}", "notificationUrl": "https://{notification-url}" } } | An HTTP response code 400 (Bad request) should be returned with the following body: { "responseCode": "BAD_REQUEST", "responseMessage": "Cannot do partial refund for uncaptured transaction" } |
5.30 Refund not supported
This scenario can be tested using Prefer Headers.
Test | Action | Expected result |
---|---|---|
1 | Make a Delete request for a committed transaction Include the following headers in the request:
| An HTTP response code 202 (Accepted) should be returned with the following body: { "responseCode": "CANT_REFUND", "responseMessage": "It’s not possible to refund this transaction." } |
5.31 Already refunded (cancel)
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Cancel the transaction Send a valid DELETE request to https://api.bango.net/v5/transaction/{Bango-transaction-id} | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", } |
3 | Attempt to cancel the transaction again Send a valid DELETE request to https://api.bango.net/v5/transaction/{Bango-transaction-id} | An HTTP response code 202 (Accepted) should be returned with the following body: { "responseCode": "ALREADY_REFUNDED", "responseMessage": "The transaction has already been refunded." } |
5.32 Already refunded (refund)
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Commit the transaction Send a valid PUT request to https://api.bango.net/v5/transaction/{Bango-transaction-id} | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", } |
3 | Refund the transaction Send a valid DELETE request to https://api.bango.net/v5/transaction/{Bango-transaction-id} | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "REFUNDED", "responseMessage": "The transaction was refunded successfully." } |
4 | Attempt to refund the transaction again Send a valid DELETE request to https://api.bango.net/v5/transaction/{Bango-transaction-id} | An HTTP response code 202 (Accepted) should be returned with the following body: { "responseCode": "ALREADY_REFUNDED", "responseMessage": "The transaction has already been refunded." } |
5.33 Transaction not found (commit)
Test | Action | Expected result |
---|---|---|
1 | Send a PUT request to https://api.bango.net/v5/transaction/{Invalid-bango-transaction-id} with an invalid bango transaction id | An HTTP response code 404 (Not found) should be returned with the following body: { "responseCode": "NOT_FOUND", "responseMessage": "Invalid transaction id." } |
5.34 Transaction not found (cancel/refund)
Test | Action | Expected result |
---|---|---|
1 | Send a DELETE request to https://api.bango.net/v5/transaction/{Invalid-bango-transaction-id} with an invalid bango transaction id | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "NOT_FOUND", "responseMessage": "Invalid transaction id." } |
5.35 User exceeded limit
This scenario can be tested using Prefer Headers.
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction Include the following headers in the request:
| An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "USER_EXCEEDED_LIMIT", "responseMessage": "User exceeded limit on suggested payment methods." } |
5.36 Unauthorized (start)
This scenario can be tested using Prefer Headers.
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction Include the following headers in the request:
| An HTTP response code 401 (Unauthorized) should be returned with the following body: { "responseCode": "UNAUTHORIZED", "responseMessage": "Invalid access credentials." } |
5.37 Unauthorized (commit)
This scenario can be tested using Prefer Headers.
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Commit the transaction Send a valid PUT request to https://api.bango.net/v5/transaction/{Bango-transaction-id} Include the following headers in the request:
| An HTTP response code 401 (Unauthorized) should be returned with the following body: { "responseCode": "UNAUTHORIZED", "responseMessage": "Invalid access credentials." } |
5.38 Unauthorized (cancel)
This scenario can be tested using Prefer Headers.
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Cancel the transaction Send a valid DELETE request to https://api.bango.net/v5/transaction/{Bango-transaction-id} Include the following headers in the request:
| An HTTP response code 401 (Unauthorized) should be returned with the following body: { "responseCode": "UNAUTHORIZED", "responseMessage": "Invalid access credentials." } |
5.39 Unauthorized (refund)
This scenario can be tested using Prefer Headers.
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Commit the transaction Send a valid PUT request to https://api.bango.net/v5/transaction/{Bango-transaction-id} | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", } |
3 | Refund the transaction Send a DELETE request to https://api.bango.net/v5/transaction/{Bango-transaction-id} Include the following headers in the request:
| An HTTP response code 401 (Unauthorized) should be returned with the following body: { "responseCode": "UNAUTHORIZED", "responseMessage": "Invalid access credentials." } |
5.40 Service unavailable (start)
This scenario can be tested using Prefer Headers.
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction Include the following headers in the request:
| An HTTP response code 503 (Service unavailable) should be returned with the following body: { "responseCode": "SERVICE_UNAVAILABLE", "responseMessage": "The server is undergoing maintenance and is not available. Please, try again later." } |
5.41 Service unavailable (commit)
This scenario can be tested using Prefer Headers.
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Commit the transaction Send a valid PUT request to https://api.bango.net/v5/transaction/{Bango-transaction-id} Include the following headers in the request:
| An HTTP response code 503 (Service unavailable) should be returned with the following body: { "responseCode": "SERVICE_UNAVAILABLE", "responseMessage": "The server is undergoing maintenance and is not available. Please, try again later." } |
5.42 Service unavailable (cancel)
This scenario can be tested using Prefer Headers.
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Cancel the transaction Send a valid DELETE request to https://api.bango.net/v5/transaction/{Bango-transaction-id} Include the following headers in the request:
| An HTTP response code 503 (Service unavailable) should be returned with the following body: { "responseCode": "SERVICE_UNAVAILABLE", "responseMessage": "The server is undergoing maintenance and is not available. Please, try again later." } |
5.43 Service unavailable (refund)
This scenario can be tested using Prefer Headers.
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Commit the transaction Send a valid PUT request to https://api.bango.net/v5/transaction/{Bango-transaction-id} | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", } |
3 | Refund the transaction Send a DELETE request to https://api.bango.net/v5/transaction/{Bango-transaction-id} Include the following headers in the request:
| An HTTP response code 503 (Service unavailable) should be returned with the following body: { "responseCode": "SERVICE_UNAVAILABLE", "responseMessage": "The server is undergoing maintenance and is not available. Please, try again later." } |
5.44 Internal error (start)
This scenario can be tested using Prefer Headers.
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction Include the following headers in the request:
| An HTTP response code 500 (Internal error) should be returned with the following body: { "responseCode": "INTERNAL_ERROR", "responseMessage": "The server encountered an unexpected condition which prevented it from fulfilling the request." } |
5.45 Internal error (commit)
This scenario can be tested using Prefer Headers.
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Commit the transaction Send a valid PUT request to https://api.bango.net/v5/transaction/{Bango-transaction-id} Include the following headers in the request:
| An HTTP response code 500 (Internal error) should be returned with the following body: { "responseCode": "INTERNAL_ERROR", "responseMessage": "The server encountered an unexpected condition which prevented it from fulfilling the request." } |
5.46 Internal error (cancel)
This scenario can be tested using Prefer Headers.
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Cancel the transaction Send a valid DELETE request to https://api.bango.net/v5/transaction/{Bango-transaction-id} Include the following headers in the request:
| An HTTP response code 500 (Internal error) should be returned with the following body: { "responseCode": "INTERNAL_ERROR", "responseMessage": "The server encountered an unexpected condition which prevented it from fulfilling the request." } |
5.47 Internal error (refund)
This scenario can be tested using Prefer Headers.
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", "transactionId": "{Bango-transaction-id}" } |
2 | Commit the transaction Send a valid PUT request to https://api.bango.net/v5/transaction/{Bango-transaction-id} | An HTTP response code 200 (OK) should be returned with the following body: { "responseCode": "OK", "responseMessage": "Success.", } |
3 | Refund the transaction Send a DELETE request to https://api.bango.net/v5/transaction/{Bango-transaction-id} Include the following headers in the request:
| An HTTP response code 500 (Internal error) should be returned with the following body: { "responseCode": "INTERNAL_ERROR", "responseMessage": "The server encountered an unexpected condition which prevented it from fulfilling the request." } |
5.48 Invalid SubmerchantReferanceKey
If you have sub-merchants configured on your account, passing in an invalid value will return a Bad Request response.
To use Bango's test payment provider 'TestPay' to test this scenario generate a userId using the following details:
identificationMethodKey | GBR_BANGO |
---|---|
MSISDN | 447710900120 |
Test | Action | Expected result |
---|---|---|
1 | Start a transaction Send a valid POST request to https://api.bango.net/v5/transaction { "bangoUserId": "123456789", "externalTransactionId": "{your-transaction-id}", "paymentMethods": [ "OPERATORBILLING", ], "paymentItems": [ { "priceList": [ { "grossAmount": "0.99", "taxAmount": "0.00", "currencyIso3": "USD" }, ], "itemName": "Item title", "itemDescription": "Item description", "itemCategory": "1", "externalPaymentItemId": "{your-payment-item-id}", "submerchantReferenceKey": "{invalid-submerchant-reference-key}" } ], "extensionData": { "callbackUrl": "https://{callback-url}", "notificationUrl": "https://{notification-url}" } } | An HTTP response code 400 (Bad Request) should be returned with the following body: { "responseCode": "BAD_REQUEST", "responseMessage": "Invalid request." } |