How to connect Stripe-terminal-physical-device BBPOS-Chipper 2x, to Android app for starting use of terminal-features

0

I have mentioned this issue on Github-issues, on stripe-terminal-repository.

I am using BBPOS-Chipper 2x Device, wanted to connect to android-app(provided by stipe-terminal-android repo).

I have installed demo client app on android-device, wanted to connect to reader. from examples given by stripe-team here, I have followed steps mentioned there as follows.

1) Deploy our example backend- I have created python-server in Odoo-ERP-12.
created route as connection_token, running on 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

when I try this using postman, it works and returns response_create_token.

2) Run the example application

added url of server as

3) Connect to Simulated reader as I can't connect to physical reader, I tried connecting simulated reader.

and here I am facing error.

I have bundled app after giving backend-url and installed on my physical android phone, but can't connect to physical device, though it appears after clicking Discover Reader-> clicked on device-id -> it tried connecting but failed and returned to same screen as home screen.

my logs are follows:

Screenshot from 2019-10-31 17-41-38


        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

Edit:

added url of server as it was empty-string previously.

I am using python-webserver, and connecting to it using my machine's ip-address on same network.

public static final String BACKEND_URL = "http://10.45.20.83:8077/connection_token"; I tried using phone's hotspot and it works in postman, but not in android-app. I am attaching screenshots of same.

screenshot (1)

GET and POST both works in Postman, Expecting same on android app.

When phone connects to bluetooth device it throws error in red-line as in following screenshot.

Screenshot from 2019-11-01 18-01-42 Screenshot from 2019-11-01 17-57-30

c) at createConnectionToken() in ApiClient.java, debugging logs are as follows, after selecting device.


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
stripe-payments
stripe-terminal
asked on Stack Overflow Nov 4, 2019 by ganeshdeshmukh • edited Nov 4, 2019 by ganeshdeshmukh

1 Answer

0

Follow these steps and it should work fine:

  1. Clone this stripe example backend repository Stripe backend example
  2. Create a .env file using vi .env
  3. Add STRIPE_TEST_SECRET_KEY=your-api-key to your .env file
  4. Now run your server locally ruby web.rb
  5. After you successfully run the backend, run http://localhost:4567/ on your browser to see if the server is running.
  6. Now go to your android studio and change the backend URL in ApiClient.kt or ApiClient.java file to BACKEND_URL = "http://10.0.2.2:4567/"
  7. Run your android app and it should be able to discover devices.

Let me know if you still face any issues

answered on Stack Overflow Nov 6, 2019 by Vignan S

User contributions licensed under CC BY-SA 3.0