我正在使用带有wisepad 3阅读器的Stripe终端。读者在发现阶段被发现,但尚未建立连接。我们暂时不使用位置。
文档中写道: https://docs.stripe.com/terminal/quickstart?reader=wp3
要连接到读取器,您的后端需要通过向 SDK 提供 ConnectionToken 中的密钥来授予 SDK 权限,以便通过您的 Stripe 帐户使用该读取器。您的后端应该只为其信任的客户端创建连接令牌。如果您使用的是 Stripe Connect,您还应该将连接令牌的范围限定到相关的连接帐户。如果使用位置,您应该在创建连接令牌时传递位置 ID 以控制对读取器的访问。
从文档看来,使用位置似乎是可选的。但在连接代码的配置中,需要提供位置ID。我想知道是否可以在不使用位置 ID 的情况下连接阅读器。
我当前的连接代码是:
private fun connectToReader(reader: Reader, result: MethodChannel.Result) {
val bluetoothReaderListener = TerminalBluetoothReaderListener()
val connectionConfig = ConnectionConfiguration.BluetoothConnectionConfiguration(
locationId = "",
autoReconnectOnUnexpectedDisconnect = true,
bluetoothReaderListener = bluetoothReaderListener
)
Terminal.getInstance().connectReader(reader, connectionConfig, object : ReaderCallback {
override fun onSuccess(connectedReader: Reader) {
Log.d("StripeTerminal", "Reader connected: ${connectedReader.serialNumber}")
notifyFlutterReaderConnection(true)
result.success("Reader connected successfully: ${connectedReader.serialNumber}")
}
override fun onFailure(e: TerminalException) {
Log.e("StripeTerminal", "Error connecting to reader: ${e.message}")
notifyFlutterReaderConnection(false)
result.error("CONNECT_ERROR", "Error connecting to reader: ${e.message}", null)
}
})
}
是的,位置 ID 是必需的。首先,您必须在 Stripe 帐户终端仪表板中添加位置。 然后,如果您的后端未实现获取位置 ID 的端点,那么您的团队必须实现它。 https://docs.stripe.com/api/terminal/locations/retrieve 之后,您可以通过调用后端 api 从前端后端获取位置 ID。
根据您使用的阅读器类型,您可以按照以下步骤注册您的阅读器:
https://docs.stripe.com/terminal/fleet/register-readers?terminal-sdk-platform=android