braintree/braintree-web

Request: Include 3DS error codes in verifyPayload

daelmaak opened this issue · 2 comments

General information

  • SDK version: 3.96.0
  • Environment: all

Issue description

When user is required to complete a challenge, and fails the challenge, we don't get the 3DS error code back in the payload produced by verifyCard.

Detailed description

After user submits the challenge, https://api.sandbox.braintreegateway.com/merchants/{merchantId}/client_api/v1/payment_methods/{methodId}/three_d_secure/authenticate_from_jwt is called. That endpoint can return response like this:

{
    "errors": [
        {
            "attribute": "three_d_secure_token",
            "message": "Failed to authenticate, please try a different form of payment.",
            "model": "transaction",
            "type": "user",
            "code": "81571"
        }
    ],
    "threeDSecureInfo": {
        "liabilityShifted": false,
        "liabilityShiftPossible": true
    }
}

This response contains the 3DS code "code": "81571" and nicely shows what went wrong. However this code is not present in the verifyPayload so we can't use it. I also didn't find any other property that'd communicate it precisely.

@daelmaak Thanks for writing in.

The payload should have the lookup.transStatus and lookup.transStatusReason properties on the threeDSecureInfo returned in the verifyCard payload.

If you are having trouble getting those values returned feel free to write into our Tech Support team for more integration issues.

Hi @jplukarski , yes those properties are indeed in the payload object but don't convey the same information I am requesting, eg.:

    "lookup": {
        "transStatus": "N",
        "transStatusReason": "01"
      },

It just informs about the generic status but doesn't convey the precise "text" nor "explanation" as defined in the docs.