Hold then Capture Card Test Cases
These detailed test cases can be used to check your Hold then Capture card integration with PayMongo. This step is optional but we highly recommend running these cases. These test cases were developed along with our internal QA team to account for every possible flow through the system.
Recommended Test Cases
For the Hold then Capture card feature, the test cases applied in the General Card Integration Test Cases section apply to manual capture payments but with capture_type
set to manual
. The failed scenarios will show up on authorization. You can also add the following failed scenarios in your testing:
Non-3DS Authorization
Note 1: No 3DS URL is returned upon attachment.
Note 2: Upon attachment, the Payment Intent status value is awaiting_capture
.
Note 3: No 3DS URL is returned upon attachment and the Payment is paid.
Test Input | Expected Response | Notes |
---|---|---|
5555444444444457 with payment_intent.capture_type = manual | Successful non-3DS authorization
| As of the moment, this will currently not happen in production since we currently block non-3DS payments to minimize risk Payment Intent status value can be verified by GET /payment_intents/id using your test keys. |
4200000000000018 with payment_intent.capture_type = manual | Failed non-3DS authorization An error with the subcode Payment Intent status value is A Payment object with a | Payment failed code should show the reason for the failure. Failed subcode for failed Payment and Payment Intent should be |
Any of the successful authorization cases and captured amount <= payment intent amount | Successful manual capture payment Upon triggering the capture endpoint (with the amount in capture <= payment intent amount), the Payment Intent status value should become A Payment object with the
| A successful authorization is needed to test a successful capture |
capture amount > payment intent amount | Failed manual capture payment Upon triggering the capture endpoint (with amount in capture > payment intent amount), an error response is returned with the error subcode A Payment object stays at
| A successful authorization is needed to test a failed capture |
3DS Authorization
Note 1: Upon attachment, the Payment Intent status value is awaiting_next_action
and a redirect URL is returned.
Note 2: Open the redirect URL and select Authorize Test Payment
to proceed with authorization and manual capture. An Authentication Complete message is returned on the webpage.
Note 3: Open the redirect URL and select Fail Test Payment
to proceed with authorization and manual capture. An Authentication failed or cancelled message is returned on the webpage.
Test Input | Expected Response | Notes |
---|---|---|
4120000000000007 with payment_intent.capture_type = | 3DS payment with successful authentication and successful authorization Proceed doing Note 1 and 2. Payment Intent status value should become | This shows a successful 3DS authorization |
5234000000000106 with payment_intent.capture_type = | 3DS payment with successful authentication and failed authorization Proceed doing Note 1 and 2. Payment Intent status value should become A Payment object with Failed subcode for failed Payment and Payment Intent should be | This shows a 3DS payment that passed authentication but failed in the authorization step. |
4120000000000007 with payment_intent.capture_type = | 3DS payment with failed authentication Proceed doing Note 1 and 3. Payment Intent status value should stay as No Payment object is attached to the Payment Intent. | This shows a 3DS authorization that failed in the authentication step. |
Any of the successful authorization cases and captured amount <= payment intent amount | Successful manual capture payment Proceed doing Note 1 and 2. Payment Intent status value should become Upon triggering the capture endpoint (with the amount in capture <= Payment Intent amount), the Payment Intent status value should become A Payment object with | A successful authorization is needed to test a successful capture |
capture amount > payment intent amount | Failed manual capture payment Proceed doing Note 1 and 2. Payment Intent status value should become Upon triggering the capture endpoint (with amount in capture > payment intent amount), an error response is returned with the error subcode A Payment object stays at | A successful authorization is needed to test a failed capture |
Updated 8 days ago