I’m implementing 3DS 2.0 integration with Braintree subscriptions. Braintree’s documentation is not clear enough to answer my questions, and Braintree support is not helping at all. Here are the questions that I have:
Looks like Braintree doesn’t know how to answer these questions or for some reason doesn’t want to do this. Very poor support. I would really appreciate any feedback.
I was in contact with Braintree having similar questions. I think I can answer your questions. This is my view of the situation:
The best moment is when you know the subscription price. You should charge the vaulted card to the amount specified during card verification (with some exceptions such as small amounts that won't need verification). If you skip verification you seem to be liable for frauds instead of the bank. If you verified for a lower amount than you try to charge, I suppose the bank can reject the transaction.
You can't verify the card with an amount of $0. I tried that. My assumption here is that you don't verify vaulted cards. Once you know the amount, you pick a card from the vault, verify it for the amount and update subscription with a nonce obtained from 3DS.
You should perform validation again when the amount increases. My view here is that you can skip 3DS for later payments with a higher amount, but you are fully liable for potential frauds. If you perform 3DS with a new amount, the liability is shifted to the bank.
Yes, this seems correct.
Yes, you should reverify with 3DS. Verification always requires you to specify amount so use the new amount for verification.
I received a response for this a minute ago from Braintree. It should not be a problem. When upgrading a subscription, you verify the card against the monthly price. The prorated amount will be smaller than that. And banks won't care much if you charge a smaller amount than verified.
I use monthly subscription amount here.
Just update the subscription with the new amount. However, I think you will be again liable for frauds if you skip 3DS.
developers.braintree.com is full of examples. For 3DS, see https://developers.braintreepayments.com/guides/3d-secure/client-side/javascript/v3
I had similar questions and Braintree support team was quick and very helpful to answer them.