Summary of Issue

When testing 3DS with the Braintree Payment Gateway, users can get stuck in an infinite loop with the challenge window that appears.

Steps to Reproduce

  1. Set site to development mode
  2. Connect Braintree payment gateway
  3. Ensure that taxes are off
  4. Create plan that costs 2099
    1. https://developer.paypal.com/braintree/docs/reference/general/processor-responses/authorization-responses#code-2099 
  5. Subscribe to that plan (ex. 4111 1111 1111 1111)
  6. Get 3ds challenge window
  7. Enter success criteria for challenge window
  8. Observe that challenge window comes back
  9. This is expected behavior with 3DS transactions in Development mode.

Explanation

In development mode, the Braintree 3DS test does not work exactly like it will in production. Because of the nature of how Braintree has set up their testing environment and the error codes being associated with amounts, it is not possible to exactly mimic production behavior on development mode. As seen here: https://developer.paypal.com/braintree/docs/reference/general/processor-responses/authorization-responses#code-2099

 

Workaround
The recommended procedure for testing 3DS with that gateway is to first ensure that it works with our test gateway. This will ensure that the code and tokens are being returned correctly. Once that is confirmed and the challenge windows show and pass appropriately, we recommended testing with Braintree to see that their challenge window appears (with using the $2099 amount). In this case, you will get stuck in an infinite loop within the Braintree challenge window but you can confirm that Braintree is correctly configured to generate the challenge as expected.

As a side note, you cannot test updating billing information with Braintree and a 3DS challenge since it does not have an "amount" associated with it.