braintree / braintree-web-drop-in

Braintree Drop-in for the web
MIT License
200 stars 126 forks source link

3DS 2.0 VerifyCard Issue. #577

Closed VBJeffrey closed 4 years ago

VBJeffrey commented 4 years ago

Hi there!

We were just about to update our vaulting processes to match the new SCA regulations. The docs show that there should be an option which can be used to verify Cards with 3DSecure 2.0 without passing a specific amount. This feature would be quite critical for all who want to vault a payment method and reuse it later (ex. after a service has been provided) because the amount was unknown during the booking flow.

However: We really tried every verification option and always get the same error while verifying a card, even if we set the challengeRequested: true option.

code: "THREEDS_MISSING_VERIFY_CARD_OPTION"
details: undefined
message: "verifyCard options must include an amount.

Thank you for any help and inputs. Would be great if we could resolve this issue.

Recurring transactions

https://developers.braintreepayments.com/guides/3d-secure/migration/javascript/v3#recurring-transactions

The recommended flow for recurring billing would be to request a cardholder challenge to establish SCA when the card is first authorized as part of storing it to the Braintree vault. This can be with a verification, or the first transaction of a recurring billing event. By applying 3D Secure to the first transaction or verification, you signal to the card issuer that you have established a mandate between you and your customer to charge their payment method for subsequent recurring payments as detailed in your terms and conditions. Such subsequent transactions are exempt from PSD2 SCA requirements.

Establishing SCA on verifications will be useful for scenarios where the cardholder will not be present when the charge is issued, and the amount isn’t known when the payment method is stored. For example, if you have a metered billing flow and invoice customers at the end of a month based on their usage, you can use 3D Secure on your initial card verification to establish a mandate to create future merchant initiated transactions (MIT)

.

Requesting a cardholder challenge

https://developers.braintreepayments.com/guides/3d-secure/migration/javascript/v3#requesting-a-cardholder-challenge

To override the default behavior of 3DS 2 and request the cardholder's bank to issue an authentication challenge, pass challengeRequested: true on the verifyCard() call.

I was just assuming that we would have to do the following somehow, even with the dropin ui. But in regards to:

As far as your actual question goes, it should automatically run the vaulted nonce through the 3ds flow:

Considering the above recommends we override the default behavior and force an auth challenge, how would the dropin ui know to do that? Forgive my ignorance, perhaps I'm just not understanding this correctly. I'm fairly new to working with Braintree.

crookedneighbor commented 4 years ago

0.00 verifications with 3DS are something we're working on. Contact our support team to request to be part of the beta: https://help.braintreepayments.com/

jerome-offeo commented 4 years ago

Hi! Would like to find out if this has been implemented as I'm still getting a verifyCard options must include an amount. message even though an amount of 0.00 has been explicitly set. If not, is there an expected time frame it would be implemented?

crookedneighbor commented 4 years ago

@jerome-offeo contact our support team to be part of the beta: https://help.braintreepayments.com/

christianverardi commented 3 years ago

Hi, I'm having the same issue trying to verifyCard with an amount of 0.00. Are you going to allow this scenario?

crookedneighbor commented 3 years ago

Same answer, reach out to our support team to be part of the beta: https://help.braintreepayments.com/

crookedneighbor commented 3 years ago

@christianverardi Actually, now I recall there should already be support for this, but you'll have to pass the amount in as a string, so use "0.00" instead of a number 0.00.