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 Note 1 and 2 is applied. | 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 card_expired should be returned upon attachment of the Payment Method.Payment Intent status value is awaiting_payment_method .A Payment object with a failed status is attached to the Payment Intent (in the Payments array section of the Payment Intent object). | Payment failed code should show the reason for the failure. Failed subcode for failed Payment and Payment Intent should be card_expired . |
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 succeeded .A Payment object with the paid status is attached to the Payment Intent (in the Payments array section of the Payment Intent object).Note 2 and 3 is applied. | 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 allowed_amount_exceeded .A Payment object stays at awaiting_capture status and no failed or paid payment is created.Note 2 and 3 is applied. | 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 = manual | 3DS payment with successful authentication and successful authorization Proceed doing Note 1 and 2. Payment Intent status value should become awaiting_capture . | This shows a successful 3DS authorization |
5234000000000106 with payment_intent.capture_type = manual | 3DS payment with successful authentication and failed authorization Proceed doing Note 1 and 2. Payment Intent status value should become awaiting_payment_method .A Payment object with failed status is attached to the Payment Intent (in the Payments array section of the Payment Intent object).Failed subcode for failed Payment and Payment Intent should be generic_decline . | This shows a 3DS payment that passed authentication but failed in the authorization step. |
4120000000000007 with payment_intent.capture_type = manual and pressing failed authentication in the test authentication page | 3DS payment with failed authentication Proceed doing Note 1 and 3. Payment Intent status value should stay as awaiting_payment_method .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 awaiting_capture .Upon triggering the capture endpoint (with the amount in capture <= Payment Intent amount), the Payment Intent status value should become succeeded .A Payment object with paid status is attached to the Payment Intent (in the Payments array section of the Payment Intent object). | 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 awaiting_capture .Upon triggering the capture endpoint (with amount in capture > payment intent amount), an error response is returned with the error subcode allowed_amount_exceeded .A Payment object stays at awaiting_capture status and no failed or paid Payment is created. | A successful authorization is needed to test a failed capture |
Updated almost 2 years ago