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​