Мы используем более одной учетной записи в приложении, и когда я пытаюсь переключить учетные записи в приложении и перед вызовом Terminal.initTerminal() я делаю:
Terminal.getInstance().clearCachedCredentials();
и я отключаю устройство чтения
Невозможно инициализировать терминал, когда я пытаюсь к Terminal.initTerminal(), затем отображается исключение/ошибка:
java.lang.IllegalStateException: вы можете вызвать initTerminal только перед запросом экземпляра терминала для первый раз. Если вы пытаетесь сменить учетную запись в своем приложении, обратитесь к документации методаcleCachedCredentials.
Не знаю, проблема ли это или полоса не позволяет нам менять учетные записи в приложении.
Я хотел бы знать, есть ли способ обновить токен подключения. Если кто-то знает, пожалуйста, дайте мне знать. Я потратил на это много времени. Спасибо
Я видел это: https://github.com/stripe/stripe-termin ... /issues/88. но я не могу решить проблему.
Мой код =
private fun initializeTerminal(idUserAppInstitution: Int, token: String, result: MethodChannel.Result) {
// Set the token globally in ApiClient
ApiClient.setToken(token)
val tokenProvider = TokenProvider(idUserAppInstitution)
if (!Terminal.isInitialized()) {
try {
// Initialize the terminal, passing the idUserAppInstitution to TokenProvider
Terminal.initTerminal(applicationContext, LogLevel.VERBOSE, tokenProvider, TerminalEventListener())
terminalInitialized = true
result.success("Stripe Initialized")
} catch (e: TerminalException) {
terminalInitialized = false
result.error("INITIALIZATION_ERROR", "Error initializing Terminal: ${e.message}", null)
}
} else {
terminalInitialized = true
result.success("Stripe Already Initialized")
}
}
package com.example.np_casse
import android.util.Log // Import the Log class for debugging purposes
import com.stripe.stripeterminal.external.callable.ConnectionTokenCallback
import com.stripe.stripeterminal.external.callable.ConnectionTokenProvider
import com.stripe.stripeterminal.external.models.ConnectionTokenException
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
class TokenProvider(private val idUserAppInstitution: Int) : ConnectionTokenProvider {
// Override the fetchConnectionToken method
override fun fetchConnectionToken(callback: ConnectionTokenCallback) {
// Use ApiClient directly to get the service
val backendService = ApiClient.service
// Call the getConnectionToken method from the BackendService
backendService.getConnectionToken(idUserAppInstitution).enqueue(object : Callback {
override fun onResponse(call: Call, response: Response) {
if (response.isSuccessful) {
val connectionToken = response.body()
if (connectionToken != null && connectionToken.secret != null) {
// Log the response for debugging
Log.d("TokenProvider", "Successfully fetched connection token: ${connectionToken.secret}")
callback.onSuccess(connectionToken.secret)
} else {
val errorMessage = "Response body or secret is null"
Log.e("TokenProvider", errorMessage)
callback.onFailure(ConnectionTokenException(errorMessage))
}
} else {
// Capture detailed error info from the response
val errorMessage = response.errorBody()?.string() ?: "Unknown error"
val statusCode = response.code()
Log.e("TokenProvider", "Error fetching connection token. Status: $statusCode, Error: $errorMessage")
callback.onFailure(ConnectionTokenException("Failed to fetch connection token: $errorMessage"))
}
}
override fun onFailure(call: Call, t: Throwable) {
// Handle network or other failures
Log.e("TokenProvider", "Network failure: ${t.message}", t)
callback.onFailure(ConnectionTokenException("Failed to fetch connection token: ${t.message}"))
}
})
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... e-terminal
Изменить токен подключения/переключить учетную запись в терминале Stripe ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение