Stripe payments 如何将Stripe终端物理设备BBPOS Chipper 2x连接到Android应用程序以开始使用终端功能

Stripe payments 如何将Stripe终端物理设备BBPOS Chipper 2x连接到Android应用程序以开始使用终端功能,stripe-payments,stripe-terminal,Stripe Payments,Stripe Terminal,我在Github问题、stripe终端存储库中提到过这个问题 我正在使用BBPOS削片机2x设备, 想要连接到android应用程序(由stipe终端android repo提供) 我已经在android设备上安装了演示客户端应用程序,想连接到reader。 根据stripe团队给出的示例, 我在那里跟踪如下 1) 部署我们的示例后端-我已经在Odoo-ERP-12中创建了python服务器。 已创建路由作为连接令牌,在localhost:port上运行 class TokenClass(htt

我在Github问题、stripe终端存储库中提到过这个问题

我正在使用BBPOS削片机2x设备, 想要连接到android应用程序(由stipe终端android repo提供)

我已经在android设备上安装了演示客户端应用程序,想连接到reader。 根据stripe团队给出的示例, 我在那里跟踪如下

1) 部署我们的示例后端-我已经在Odoo-ERP-12中创建了python服务器。
已创建路由作为连接令牌,在localhost:port上运行

class TokenClass(http.Controller):
    @http.route(['/connection_token'], type='json', auth="public")
    def get_stripe_terminal_token(self, **post):
        # server-side code
        stripe.api_key = "sk_test_encrypted_key_can't_show"
        response_create_token = stripe.terminal.ConnectionToken.create()
        print("response_create_token = ", response_create_token)
        return response_create_token
当我尝试使用postman时,它工作并返回response\u create\u令牌

(二)

将服务器的url添加为

(三) 由于无法连接到物理阅读器,我尝试连接模拟阅读器

在这里,我面临着错误

我在给出后端url后绑定了应用程序,并安装在我的物理android手机上,但无法连接到物理设备,尽管在单击
Discover Reader
->单击设备id->它尝试连接但失败并返回到与主屏幕相同的屏幕后出现

我的日志如下:


        at android.os.Looper.loop(Looper.java:201)
        at android.app.ActivityThread.main(ActivityThread.java:6806)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
2019-10-31 17:36:59.339 24668-24668/com.stripe.example.javaapp D/StrictMode: StrictMode policy violation; ~duration=121 ms: android.os.strictmode.DiskReadViolation
        at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1504)
        at android.app.SharedPreferencesImpl.awaitLoadedLocked(SharedPreferencesImpl.java:256)
        at android.app.SharedPreferencesImpl.getBoolean(SharedPreferencesImpl.java:325)
        at com.stripe.example.javaapp.fragment.TerminalFragment.onCreate(TerminalFragment.java:46)
        at androidx.fragment.app.Fragment.performCreate(Fragment.java:2586)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:838)
        at androidx.fragment.app.FragmentTransition.addToFirstInLastOut(FragmentTransition.java:1197)
        at androidx.fragment.app.FragmentTransition.calculateFragments(FragmentTransition.java:1080)
        at androidx.fragment.app.FragmentTransition.startTransitions(FragmentTransition.java:119)
        at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1866)
        at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1824)
        at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1727)
        at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManagerImpl.java:2663)
        at androidx.fragment.app.FragmentManagerImpl.dispatchResume(FragmentManagerImpl.java:2625)
        at androidx.fragment.app.FragmentController.dispatchResume(FragmentController.java:268)
        at androidx.fragment.app.FragmentActivity.onResumeFragments(FragmentActivity.java:479)
        at androidx.fragment.app.FragmentActivity.onPostResume(FragmentActivity.java:468)
        at androidx.appcompat.app.AppCompatActivity.onPostResume(AppCompatActivity.java:195)
        at android.app.Activity.performResume(Activity.java:7430)
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3816)
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3856)
        at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:51)
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:201)
        at android.app.ActivityThread.main(ActivityThread.java:6806)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
2019-10-31 17:36:59.367 24668-24801/com.stripe.example.javaapp D/libEGL: eglInitialize: enter
2019-10-31 17:36:59.367 24668-24801/com.stripe.example.javaapp I/Adreno: QUALCOMM build                   : 791494e, Id7006ec082
    Build Date                       : 12/09/18
    OpenGL ES Shader Compiler Version: EV031.24.02.00
    Local Branch                     : 
    Remote Branch                    : refs/tags/AU_LINUX_ANDROID_LA.UM.7.3.R1.09.00.00.423.045
    Remote Branch                    : NONE
    Reconstruct Branch               : NOTHING
2019-10-31 17:36:59.367 24668-24801/com.stripe.example.javaapp I/Adreno: Build Config                     : S P 6.0.7 AArch64
2019-10-31 17:36:59.356 24668-24668/com.stripe.example.javaapp W/RenderThread: type=1400 audit(0.0:2912): avc: denied { search } for name="proc" dev="debugfs" ino=15061 scontext=u:r:untrusted_app:s0:c214,c256,c512,c768 tcontext=u:object_r:qti_debugfs:s0 tclass=dir permissive=0
2019-10-31 17:36:59.369 24668-24801/com.stripe.example.javaapp I/Adreno: PFP: 0x016ee180, ME: 0x00000000
2019-10-31 17:36:59.356 24668-24668/com.stripe.example.javaapp W/RenderThread: type=1400 audit(0.0:2913): avc: denied { search } for name="ctx" dev="debugfs" ino=15090 scontext=u:r:untrusted_app:s0:c214,c256,c512,c768 tcontext=u:object_r:qti_debugfs:s0 tclass=dir permissive=0
2019-10-31 17:36:59.372 24668-24801/com.stripe.example.javaapp I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0
2019-10-31 17:36:59.372 24668-24801/com.stripe.example.javaapp I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0
2019-10-31 17:36:59.372 24668-24801/com.stripe.example.javaapp D/libEGL: eglInitialize: exit(res=1)
2019-10-31 17:36:59.372 24668-24801/com.stripe.example.javaapp I/OpenGLRenderer: Initialized EGL, version 1.4
2019-10-31 17:36:59.372 24668-24801/com.stripe.example.javaapp D/OpenGLRenderer: Swap behavior 2
2019-10-31 17:36:59.366 24668-24668/com.stripe.example.javaapp W/RenderThread: type=1400 audit(0.0:2914): avc: denied { search } for name="ctx" dev="debugfs" ino=15090 scontext=u:r:untrusted_app:s0:c214,c256,c512,c768 tcontext=u:object_r:qti_debugfs:s0 tclass=dir permissive=0
2019-10-31 17:36:59.446 24668-24801/com.stripe.example.javaapp E/LB: fail to open file: No such file or directory
2019-10-31 17:37:06.854 24668-24781/com.stripe.example.javaapp I/example.javaap: ProcessProfilingInfo new_methods=3482 is saved saved_to_disk=1 resolve_classes_delay=8000
2019-10-31 17:37:06.934 24668-24668/com.stripe.example.javaapp D/StripeTerminal: class=Terminal message=discoverReaders
2019-10-31 17:37:06.941 24668-24668/com.stripe.example.javaapp D/LeakCanary: Watching instance of androidx.constraintlayout.widget.ConstraintLayout with key d5987f8e-6735-45d6-bafb-3b4664621210
2019-10-31 17:37:06.946 24668-24668/com.stripe.example.javaapp D/LeakCanary: Watching instance of com.stripe.example.javaapp.fragment.TerminalFragment with key 44046d24-f3bb-440b-b42d-e3d1564b4792
2019-10-31 17:37:06.987 24668-24819/com.stripe.example.javaapp W/example.javaap: Accessing hidden field Lsun/misc/Unsafe;->theUnsafe:Lsun/misc/Unsafe; (light greylist, reflection)
2019-10-31 17:37:06.992 24668-24819/com.stripe.example.javaapp D/StripeTerminal: class=BbposBluetoothAdapter message=discoverReaders
2019-10-31 17:37:06.999 24668-24819/com.stripe.example.javaapp D/BluetoothAdapter: isLeEnabled(): ON
2019-10-31 17:37:07.001 24668-24694/com.stripe.example.javaapp D/BluetoothLeScanner: onScannerRegistered() - status=0 scannerId=8 mScannerId=0
2019-10-31 17:37:12.007 24668-24787/com.stripe.example.javaapp D/LeakCanary: Checking retained object because found new object retained
2019-10-31 17:37:12.025 24668-24787/com.stripe.example.javaapp I/example.javaap: Explicit concurrent copying GC freed 13030(986KB) AllocSpace objects, 21(420KB) LOS objects, 49% free, 3MB/6MB, paused 33us total 17.944ms
2019-10-31 17:37:12.130 24668-24787/com.stripe.example.javaapp D/LeakCanary: No retained objects
2019-10-31 17:37:12.132 24668-24787/com.stripe.example.javaapp D/LeakCanary: Checking retained object because found new object retained
2019-10-31 17:37:12.132 24668-24787/com.stripe.example.javaapp D/LeakCanary: No retained objects
2019-10-31 17:37:17.596 24668-24668/com.stripe.example.javaapp D/StripeTerminal: class=Terminal message=connectReader serial_number=CHB204909002990
2019-10-31 17:37:17.597 24668-24668/com.stripe.example.javaapp D/StripeTerminal: class=BbposDeviceController message=stopBLEScan
2019-10-31 17:37:17.598 24668-24668/com.stripe.example.javaapp D/BluetoothAdapter: isLeEnabled(): ON
2019-10-31 17:37:17.613 24668-24819/com.stripe.example.javaapp D/StripeTerminal: class=BbposBluetoothAdapter message=connectReader
2019-10-31 17:37:17.613 24668-24819/com.stripe.example.javaapp D/StripeTerminal: class=TerminalListenerProxy message=onConnectionStatusChange(CONNECTING)
2019-10-31 17:37:17.613 24668-24819/com.stripe.example.javaapp I/ConnectionStatusChange: CONNECTING
2019-10-31 17:37:17.615 24668-24819/com.stripe.example.javaapp D/StripeTerminal: class=BbposDeviceController message=connectBT(CHB204909002990)
2019-10-31 17:37:17.628 24668-24819/com.stripe.example.javaapp D/BluetoothGatt: connect() - device: 2F:24:66:C2:B6:51, auto: false
2019-10-31 17:37:17.628 24668-24819/com.stripe.example.javaapp D/BluetoothGatt: registerApp()
2019-10-31 17:37:17.628 24668-24819/com.stripe.example.javaapp D/BluetoothGatt: registerApp() - UUID=6b0743d3-4dcf-4dbf-94a0-3936cb31de6e
2019-10-31 17:37:17.629 24668-24694/com.stripe.example.javaapp D/BluetoothGatt: onClientRegistered() - status=0 clientIf=8
2019-10-31 17:37:18.713 24668-24694/com.stripe.example.javaapp D/BluetoothGatt: onClientConnectionState() - status=0 clientIf=8 device=2F:24:66:C2:B6:51
2019-10-31 17:37:18.714 24668-24694/com.stripe.example.javaapp D/BluetoothGatt: discoverServices() - device: 2F:24:66:C2:B6:51
2019-10-31 17:37:19.156 24668-24694/com.stripe.example.javaapp D/BluetoothGatt: onConnectionUpdated() - Device=2F:24:66:C2:B6:51 interval=6 latency=0 timeout=500 status=0
2019-10-31 17:37:19.270 24668-24694/com.stripe.example.javaapp D/BluetoothGatt: onSearchComplete() = Device=2F:24:66:C2:B6:51 Status=0
2019-10-31 17:37:19.271 24668-24694/com.stripe.example.javaapp D/BluetoothGatt: setCharacteristicNotification() - uuid: 0000ffa1-0000-1000-8000-00805f9b34fb enable: true
2019-10-31 17:37:19.333 24668-24694/com.stripe.example.javaapp D/BluetoothGatt: onConnectionUpdated() - Device=2F:24:66:C2:B6:51 interval=36 latency=0 timeout=500 status=0
2019-10-31 17:37:19.776 24668-24668/com.stripe.example.javaapp D/AudioManager: getStreamVolume isRestricted mode = 0
2019-10-31 17:37:19.901 24668-24842/com.stripe.example.javaapp D/BluetoothGatt: configureMTU() - device: 2F:24:66:C2:B6:51 mtu: 132
2019-10-31 17:37:19.923 24668-24844/com.stripe.example.javaapp I/example.javaap: Explicit concurrent copying GC freed 3921(313KB) AllocSpace objects, 0(0B) LOS objects, 50% free, 3MB/6MB, paused 81us total 48.123ms
2019-10-31 17:37:19.965 24668-24840/com.stripe.example.javaapp D/BluetoothGatt: onConfigureMTU() - Device=2F:24:66:C2:B6:51 mtu=132 status=0
2019-10-31 17:37:19.971 24668-24668/com.stripe.example.javaapp D/StripeTerminal: class=BbposDeviceControllerListener message=onBTConnected(CHB204909002990)
2019-10-31 17:37:19.972 24668-24668/com.stripe.example.javaapp D/StripeTerminal: class=BbposDeviceController message=getDeviceInfo
2019-10-31 17:37:20.033 24668-24842/com.stripe.example.javaapp I/example.javaap: Explicit concurrent copying GC freed 513(95KB) AllocSpace objects, 0(0B) LOS objects, 50% free, 3MB/6MB, paused 1.133ms total 60.700ms
2019-10-31 17:37:20.073 24668-24842/com.stripe.example.javaapp I/example.javaap: Waiting for a blocking GC Explicit
2019-10-31 17:37:20.100 24668-24843/com.stripe.example.javaapp I/example.javaap: Explicit concurrent copying GC freed 294(101KB) AllocSpace objects, 0(0B) LOS objects, 49% free, 3MB/6MB, paused 70us total 43.071ms
2019-10-31 17:37:20.100 24668-24842/com.stripe.example.javaapp I/example.javaap: WaitForGcToComplete blocked Explicit on HeapTrim for 27.202ms
2019-10-31 17:37:20.128 24668-24842/com.stripe.example.javaapp I/example.javaap: Explicit concurrent copying GC freed 27(47KB) AllocSpace objects, 0(0B) LOS objects, 50% free, 3MB/6MB, paused 40us total 27.659ms
2019-10-31 17:37:20.150 24668-24842/com.stripe.example.javaapp I/example.javaap: Explicit concurrent copying GC freed 12(31KB) AllocSpace objects, 0(0B) LOS objects, 49% free, 3MB/6MB, paused 31us total 20.194ms
2019-10-31 17:37:20.167 24668-24842/com.stripe.example.javaapp I/example.javaap: Explicit concurrent copying GC freed 17(47KB) AllocSpace objects, 0(0B) LOS objects, 49% free, 3MB/6MB, paused 23us total 15.970ms
2019-10-31 17:37:20.232 24668-24842/com.stripe.example.javaapp I/example.javaap: Explicit concurrent copying GC freed 34(47KB) AllocSpace objects, 0(0B) LOS objects, 49% free, 3MB/6MB, paused 77us total 41.024ms
2019-10-31 17:37:20.345 24668-24842/com.stripe.example.javaapp I/example.javaap: Explicit concurrent copying GC freed 47(63KB) AllocSpace objects, 0(0B) LOS objects, 49% free, 3MB/6MB, paused 53us total 18.881ms
2019-10-31 17:37:20.361 24668-24842/com.stripe.example.javaapp I/example.javaap: Explicit concurrent copying GC freed 8(32KB) AllocSpace objects, 0(0B) LOS objects, 49% free, 3MB/6MB, paused 23us total 15.718ms
2019-10-31 17:37:20.379 24668-24842/com.stripe.example.javaapp I/example.javaap: Explicit concurrent copying GC freed 10(31KB) AllocSpace objects, 0(0B) LOS objects, 50% free, 3MB/6MB, paused 23us total 16.111ms
2019-10-31 17:37:20.461 24668-24842/com.stripe.example.javaapp I/example.javaap: Explicit concurrent copying GC freed 24(48KB) AllocSpace objects, 0(0B) LOS objects, 49% free, 3MB/6MB, paused 69us total 36.040ms
2019-10-31 17:37:20.572 24668-24842/com.stripe.example.javaapp I/example.javaap: Explicit concurrent copying GC freed 28(47KB) AllocSpace objects, 0(0B) LOS objects, 49% free, 3MB/6MB, paused 83us total 21.329ms
2019-10-31 17:37:20.577 24668-24668/com.stripe.example.javaapp D/StripeTerminal: class=BbposDeviceControllerListener message="onReturnDeviceInfo([Hashtable: {firmwareVersion, bootloaderVersion, hardwareVersion, pinKsn, trackKsn, macKsn, serialNumber, deviceSettingVersion, uid, productID, isCharging, isSupportedTrack3, isSupportedTrack2, isSupportedTrack1, batteryPercentage, emvKsn, terminalSettingVersion, formatID, vendorID, batteryLevel, bID, productId, isSupportedNfc, isUsbConnected}])"
2019-10-31 17:37:20.579 24668-24668/com.stripe.example.javaapp I/StripeTerminal: class=BbposBluetoothAdapter reader_software_version=1.00.03.34-SZZZ_Generic_v37-30000
2019-10-31 17:37:20.579 24668-24668/com.stripe.example.javaapp D/StripeTerminal: class=TerminalListenerProxy message=onConnectionStatusChange(CONNECTED)
2019-10-31 17:37:20.579 24668-24668/com.stripe.example.javaapp I/ConnectionStatusChange: CONNECTED
2019-10-31 17:37:20.580 24668-24819/com.stripe.example.javaapp D/StripeTerminal: class=ConnectionTokenManager message=refreshToken
2019-10-31 17:37:20.580 24668-24795/com.stripe.example.javaapp I/example.javaap: Rejecting re-init on previously-failed class java.lang.Class<com.stripe.example.javaapp.network.ApiClient>: java.lang.ExceptionInInitializerError: 
2019-10-31 17:37:20.580 24668-24795/com.stripe.example.javaapp I/example.javaap:     at java.lang.String com.stripe.example.javaapp.network.ApiClient.createConnectionToken() (ApiClient.java:46)
2019-10-31 17:37:20.580 24668-24795/com.stripe.example.javaapp I/example.javaap:     at void com.stripe.example.javaapp.network.TokenProvider.fetchConnectionToken(com.stripe.stripeterminal.callable.ConnectionTokenCallback) (TokenProvider.java:16)
2019-10-31 17:37:20.580 24668-24795/com.stripe.example.javaapp I/example.javaap:     at void com.stripe.stripeterminal.ConnectionTokenManager$refreshToken$1.run() (ConnectionTokenManager.kt:71)
2019-10-31 17:37:20.580 24668-24795/com.stripe.example.javaapp I/example.javaap:     at java.lang.Object java.util.concurrent.Executors$RunnableAdapter.call() (Executors.java:458)
2019-10-31 17:37:20.580 24668-24795/com.stripe.example.javaapp I/example.javaap:     at void java.util.concurrent.FutureTask.run() (FutureTask.java:266)
2019-10-31 17:37:20.580 24668-24795/com.stripe.example.javaapp I/example.javaap:     at void java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) (ThreadPoolExecutor.java:1167)
2019-10-31 17:37:20.580 24668-24795/com.stripe.example.javaapp I/example.javaap:     at void java.util.concurrent.ThreadPoolExecutor$Worker.run() (ThreadPoolExecutor.java:641)
2019-10-31 17:37:20.580 24668-24795/com.stripe.example.javaapp I/example.javaap:     at void java.lang.Thread.run() (Thread.java:764)
2019-10-31 17:37:20.583 24668-24819/com.stripe.example.javaapp D/StripeTerminal: class=BbposBluetoothAdapter message=disconnectReader
2019-10-31 17:37:20.583 24668-24819/com.stripe.example.javaapp D/StripeTerminal: class=BbposDeviceController message=disconnectBT
2019-10-31 17:37:20.594 24668-24842/com.stripe.example.javaapp I/example.javaap: Explicit concurrent copying GC freed 472(45KB) AllocSpace objects, 0(0B) LOS objects, 49% free, 3MB/6MB, paused 67us total 18.625ms
2019-10-31 17:37:20.689 24668-24840/com.stripe.example.javaapp D/BluetoothGatt: onClientConnectionState() - status=19 clientIf=8 device=2F:24:66:C2:B6:51
2019-10-31 17:37:20.738 24668-24819/com.stripe.example.javaapp I/example.javaap: Explicit concurrent copying GC freed 207(105KB) AllocSpace objects, 0(0B) LOS objects, 49% free, 3MB/6MB, paused 70us total 45.357ms
2019-10-31 17:37:20.739 24668-24819/com.stripe.example.javaapp D/BluetoothGatt: cancelOpen() - device: 2F:24:66:C2:B6:51
2019-10-31 17:37:20.740 24668-24819/com.stripe.example.javaapp D/BluetoothGatt: cancelOpen() - device: 2F:24:66:C2:B6:51
2019-10-31 17:37:20.740 24668-24840/com.stripe.example.javaapp D/BluetoothGatt: cancelOpen() - device: 2F:24:66:C2:B6:51
2019-10-31 17:37:20.741 24668-24840/com.stripe.example.javaapp D/BluetoothGatt: close()
2019-10-31 17:37:20.741 24668-24840/com.stripe.example.javaapp D/BluetoothGatt: unregisterApp() - mClientIf=8
2019-10-31 17:37:20.743 24668-24668/com.stripe.example.javaapp D/StripeTerminal: class=BbposDeviceControllerListener message=onBTDisconnected()
2019-10-31 17:37:20.743 24668-24668/com.stripe.example.javaapp D/StripeTerminal: class=TerminalListenerProxy message=onConnectionStatusChange(NOT_CONNECTED)
2019-10-31 17:37:20.743 24668-24668/com.stripe.example.javaapp I/ConnectionStatusChange: NOT_CONNECTED
2019-10-31 17:37:20.744 24668-24819/com.stripe.example.javaapp E/StripeTerminal: NETWORK_ERROR.CONNECTION_TOKEN_PROVIDER_ERROR: java.lang.NoClassDefFoundError: com.stripe.example.javaapp.network.ApiClient
    com.stripe.stripeterminal.model.external.TerminalException
        at com.stripe.stripeterminal.ConnectionTokenManager.waitForToken(ConnectionTokenManager.kt:102)
        at com.stripe.stripeterminal.ConnectionTokenManager.getToken(ConnectionTokenManager.kt:49)
        at com.stripe.stripeterminal.TerminalSession$ConnectReaderOperation.run$stripeterminal_release(TerminalSession.kt:499)
        at com.stripe.stripeterminal.TerminalSession$enqueueOperation$1.run(TerminalSession.kt:208)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)
2019-10-31 17:37:20.750 24668-24668/com.stripe.example.javaapp D/LeakCanary: Watching instance of androidx.constraintlayout.widget.ConstraintLayout with key 1074ed5b-ca8a-4e0b-8f55-20fdc493f0b8
2019-10-31 17:37:20.753 24668-24668/com.stripe.example.javaapp D/LeakCanary: Watching instance of com.stripe.example.javaapp.fragment.discovery.DiscoveryFragment with key 281a9e67-0069-4035-b606-6db85c0ad9ef
2019-10-31 17:37:25.756 24668-24668/com.stripe.example.javaapp D/LeakCanary: Already scheduled retained check, ignoring (found new object retained)
2019-10-31 17:37:25.758 24668-24787/com.stripe.example.javaapp D/LeakCanary: Checking retained object because found new object retained
2019-10-31 17:37:25.800 24668-24787/com.stripe.example.javaapp I/example.javaap: Explicit concurrent copying GC freed 5340(377KB) AllocSpace objects, 27(540KB) LOS objects, 50% free, 3MB/6MB, paused 92us total 41.713ms
2019-10-31 17:37:25.904 24668-24787/com.stripe.example.javaapp D/LeakCanary: No retained objects
2019-10-31 17:37:59.205 24668-24796/com.stripe.example.javaapp D/StripeTerminal: class=LogFlusher message="Reporting traces" num_traces=3
2019-10-31 17:38:00.753 24668-24796/com.stripe.example.javaapp D/StripeTerminal: class=LogFlusher message="Sent 3 traces"
2019-10-31 17:38:00.754 24668-24796/com.stripe.example.javaapp D/StripeTerminal: class=LogFlusher message="Reporting events" num_events=3
2019-10-31 17:38:01.460 24668-24796/com.stripe.example.javaapp D/StripeTerminal: class=LogFlusher message="Sent 3 events"
2019-10-31 17:38:17.710 24668-24668/com.stripe.example.javaapp I/StripeTerminal: class=TerminalLifecycleObserver message=applicationDidEnterBackground appId=com.stripe.example.javaapp
2019-10-31 17:38:17.964 24668-24668/com.stripe.example.javaapp W/StripeTerminal: class=TerminalLifecycleObserver message=application


按照以下步骤操作,它应该可以正常工作:

  • 克隆此条带示例后端存储库
  • 使用
    vi.env
  • STRIPE\u TEST\u SECRET\u KEY=api密钥添加到
    .env
    文件中
  • 现在在本地运行服务器
    ruby web.rb
  • 成功运行后端后,运行
    http://localhost:4567/
    ,查看服务器是否正在运行
  • 现在转到android studio,将
    ApiClient.kt
    ApiClient.java
    文件中的后端URL更改为
    backend\u URL=”http://10.0.2.2:4567/“
  • 运行android应用程序,它应该能够发现设备

  • 如果您仍然面临任何问题,请告诉我

    后端\u URL不应具有
    /connection\u令牌
    ,它应该是
    公共静态最终字符串后端\u URL=http://192.168.43.12:8077/
    我建议您在本地运行后端服务器,看看是否能够获得connection-token。您好,谢谢您的回复。,若要发出post请求从客户端获取令牌,我需要指定路由,以便指定路由,只有服务器的IP地址不起作用,因为我们需要点击特定的路由
    connection\u-token
    ,若要获取令牌,请参阅docs link-@VignanS,我尝试了您的答案方法,没有使用路由`/connection\u-token`,但它不起作用。顺便说一句,IOS演示是否有效,因为我看到你的个人资料是IOS开发人员,你是否使用过条带终端IOS的IOS应用程序?hello@Vignan,谢谢你的回复,但我在Github上解决了这个问题,我在你的第6步中,在
    BACKEND\u URL="http://10.0.2.2:4567/
    ,我在字符串末尾缺少“/”aka
    斜杠,这不是我们在邮递员或任何地方通常使用的,但我的上级搜索发现,我们必须在路线末尾添加额外的
    /
    ,以使其正常工作。现在它开始工作了,我现在正在进行“android集成”和定制我们的应用程序,以满足交付案例的需要。再次感谢。
    
    D/BluetoothGatt: cancelOpen() - device: 2F:24:66:C2:B6:51
    D/BluetoothGatt: close()
        unregisterApp() - mClientIf=8
    D/StripeTerminal: class=BbposDeviceControllerListener message=onBTDisconnected()
    D/StripeTerminal: class=TerminalListenerProxy message=onConnectionStatusChange(NOT_CONNECTED)
    I/ConnectionStatusChange: NOT_CONNECTED
    E/StripeTerminal: NETWORK_ERROR.CONNECTION_TOKEN_PROVIDER_ERROR: java.lang.NoClassDefFoundError: com.stripe.example.javaapp.network.ApiClient
        com.stripe.stripeterminal.model.external.TerminalException
            at com.stripe.stripeterminal.ConnectionTokenManager.waitForToken(ConnectionTokenManager.kt:102)
            at com.stripe.stripeterminal.ConnectionTokenManager.getToken(ConnectionTokenManager.kt:49)
            at com.stripe.stripeterminal.TerminalSession$ConnectReaderOperation.run$stripeterminal_release(TerminalSession.kt:499)
            at com.stripe.stripeterminal.TerminalSession$enqueueOperation$1.run(TerminalSession.kt:208)
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458)
            at java.util.concurrent.FutureTask.run(FutureTask.java:266)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
            at java.lang.Thread.run(Thread.java:764)
    D/LeakCanary: Watching instance of androidx.constraintlayout.widget.ConstraintLayout with key a11abdb3-1406-41c9-914a-c4928f7e03a6
    D/LeakCanary: Watching instance of com.stripe.example.javaapp.fragment.discovery.DiscoveryFragment with key d4e4eff8-2d72-46a0-a5b7-205bf0b2da3d
    I/Choreographer: Skipped 139 frames!  The application may be doing too much work on its main thread.
    W/Looper: Slow Looper: doFrame is 2325ms late because of 2 msg, msg 1 took 496ms (late=5ms h=android.view.Choreographer$FrameHandler c=android.view.Choreographer$FrameDisplayEventReceiver), msg 2 took 1844ms (late=499ms h=android.os.Handler c=androidx.fragment.app.FragmentManagerImpl$2)
    W/Looper: Slow Looper: doFrame is 467ms late because of 6 msg, msg 1 took 464ms (late=2325ms h=android.view.Choreographer$FrameHandler c=android.view.Choreographer$FrameDisplayEventReceiver)
    D/LeakCanary: Checking retained object because found new object retained
    I/example.javaap: Explicit concurrent copying GC freed 5606(395KB) AllocSpace objects, 27(540KB) LOS objects, 49% free, 3MB/6MB, paused 62us total 30.116ms
    D/LeakCanary: No retained objects
    
    rest-logs are on [Github-issues][1].
    
    my doubt is where to create new file `ReaderActivity.java`, as I haven't created it yet.
    [documentation-link](https://stripe.com/docs/terminal/readers/connecting/bbpos-chipper2xbt#connect-reader)
    
    
      [1]: https://github.com/stripe/stripe-terminal-android/issues/77