Authentication
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
:
- Kotlin
- Swift
val authentication = Wallet.getInstance().getAuthenticationService()
import PaysafeWallet
let authentication = Wallet.instance.authenticationService
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.
This operation might require Strong Customer Authentication (SCA). Please read Strong Customer Authentication for more information on the process.
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.
Parameter | Data type | Description | Example |
---|---|---|---|
clientIdentifier | String | Required. The client identifier token. | "C4JTpgmp3:XqIOmHdk" |
brandIdentity | String | Required. The identity of the partner using the Embedded Wallet. | "finley" |
request | PasswordTokenRequest | Required. An object containing the customer's credentials for authentication. | PasswordTokenRequest(username: "username", password: "password") |
scaDetails | ScaAuthenticationEventRequest | SCA authentication properties used to complete the process. | ScaAuthenticationEventRequest(eventId: "7cebe19b-4a96-4d7b-badd-c07eaee786fc", walletOperationID: "03f44a74-937d-430d-b06e-09b42b0f2b0e") |
PasswordTokenRequest
Parameter | Data type | Description | Example |
---|---|---|---|
username | String | Required. The username that is associated with the user's account. | "johnDoe123" |
password | String | Required. 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.
- Kotlin
- Swift
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
}
let passwordTokenRequest = Wallet.PasswordTokenRequest(
username: "johnDoe123",
password: "Pa$$w0rd."
)
authentication.loginWithPassword(clientIdentifier: "C4JTpgmp3:XqIOmHdk",
brandIdentity: "finley",
request: passwordTokenRequest,
completion: { loginResult in
switch loginResult {
case .success(let authToken):
Wallet.instance.authenticate(with: .init(accessToken: authToken))
case .failure(let error):
// Handle error
}
})