Skip to main content

authenticate Method

Overview

The authenticate method executes the 3D Secure authentication step. For frictionless flows, it completes silently. For challenge flows, it presents the bank's authentication page.

Business Use Case: After initiating 3DS with preAuthenticate, this handles the actual authentication, managing customer interaction with the bank's page.

Purpose

Flow TypeWhat Happens
FrictionlessCompletes without customer action
ChallengePresents bank challenge page

Request Fields

FieldTypeRequiredDescription
merchantOrderIdstringYesYour unique order reference
amountMoneyYesTransaction amount
paymentMethodPaymentMethodYesCard details
authenticationDataobjectNoExisting 3DS data from preAuthenticate
returnUrlstringNoURL to redirect after authentication

Response Fields

FieldTypeDescription
connectorTransactionIdstringConnector's authentication ID
statusstringAUTHENTICATED, FAILED, PENDING
authenticationDataobject3DS results (ECI, CAVV)
redirectionDataobjectChallenge URL if needed
statusCodenumberHTTP status code

Example

SDK Setup

const { PaymentMethodAuthenticationClient } = require('hyperswitch-prism');

const authClient = new PaymentMethodAuthenticationClient({
connector: 'stripe',
apiKey: 'YOUR_API_KEY',
environment: 'SANDBOX'
});

Request

const request = {
merchantOrderId: "order_001",
amount: {
minorAmount: 10000,
currency: "USD"
},
paymentMethod: {
card: {
cardNumber: { value: "4242424242424242" },
cardExpMonth: { value: "12" },
cardExpYear: { value: "2027" }
}
},
returnUrl: "https://your-app.com/3ds/return"
};

const response = await authClient.authenticate(request);

Response - Frictionless

{
connectorTransactionId: "pi_3Oxxx...",
status: "AUTHENTICATED",
authenticationData: {
eci: "05",
cavv: "AAABBIIFmA=="
},
statusCode: 200
}

Response - Challenge Required

{
connectorTransactionId: "pi_3Oxxx...",
status: "PENDING",
redirectionData: {
url: "https://acs.bank.com/3ds/challenge",
method: "POST"
},
statusCode: 200
}

Next Steps