Skip to main content

Authentication

note

This API is available only to merchants with standaloneWallet access and walletSetup scope to the config token.

Introduction
Feature in development

The Authentication service is responsible for issuing and managing access tokens:

  • loginWithPassword - Used to obtain an access token by providing username and password.

Use the following code to obtain an instance of AuthenticationService:

val authentication = Wallet.getInstance().getAuthenticationService()

Login with password

Use loginWithPassword to obtain an access token and then pass it to the authenticate method of the wallet. loginWithPassword requires two specific parameters clientIdentifier and brandIdentity, both of which are provided by Paysafe.

info

This operation might require Strong Customer Authentication (SCA). Please read Strong Customer Authentication for more information on the process.

note

If SCA is required, Wallet.WalletError.scaRequired(authenticationEvent: SCAAuthenticationEventResponse, errorID: String?) / ScaRequiredException(authenticationEvent: ScaAuthenticationEventResponse, errorId: String?) will be thrown. Follow the steps outlined in Submit the SCA Authentication to confirm the event. After the SCA event is accepted, make another request providing scaDetails parameter.

ParameterData typeDescriptionExample
clientIdentifierStringRequired. The client identifier token."C4JTpgmp3:XqIOmHdk"
brandIdentityStringRequired. The identity of the partner using the Embedded Wallet."finley"
requestPasswordTokenRequestRequired. An object containing the customer's credentials for authentication.PasswordTokenRequest(username: "username", password: "password")
scaDetailsScaAuthenticationEventRequestSCA authentication properties used to complete the process.ScaAuthenticationEventRequest(eventId: "7cebe19b-4a96-4d7b-badd-c07eaee786fc", walletOperationID: "03f44a74-937d-430d-b06e-09b42b0f2b0e")

PasswordTokenRequest

ParameterData typeDescriptionExample
usernameStringRequired. The username that is associated with the user's account."johnDoe123"
passwordStringRequired. The password that is associated with the user's account."Pa$$w0rd."

After calling loginWithPassword, you'll receive a Token object containing the access token, which should be used to authenticate the wallet.

try {

// Login
val token = authentication.loginWithPassword(
clientIdentifier = "C4JTpgmp3:XqIOmHdk",
brandIdentity = "finley",
request = PasswordTokenRequest(
username = "johnDoe123@example.com",
password = "PaS#w0rd."
)
)

// Authenticate the wallet sdk
Wallet.getInstance().authenticate(AuthenticationConfiguration(token.accessToken))

// Your are done. Start using the wallet services
} catch (e: DataException) {
// Handle invalid credentials error
}