stripe/stripe-terminal-ios

Reader seems frozen due to completion block on `.cancel` being ignored

Closed this issue · 2 comments

jp7 commented

Summary

Completion block on .cancel on SCPCancelable seems to be ignored.

Code to reproduce

Using the Stripe Terminal Example App

See Video: https://drive.google.com/file/d/1v0q7v2U_N1OBljzDipmWOeQCEuh4byZf/view?usp=drive_link

We were able to reproduce this issue by leaving the card in the reader, then trying to create a payment intent and cancel. This seems to happen after a few tries.

There could be other ways to reproduce this issue since a similar problem was found in production and it's unlikely the customer left their card in the reader.

When this happens it looks like the reader ignores all other commands and/or is waiting for the cancel to be completed which doesn't happen. I believe the only way to get out of this state is to toss the app out of memory OR by powering off the reader

iOS version

iPad iOS 16.6.1

Installation method

Ran the example app

SDK version

Version on example app - 3.2.1 , but we have seen a similar issue in our Prod app which is using an older version (SDK beta 9)

Other information

Logs from example App:

Screenshot 2024-02-28 at 9 24 16 AM

Might be similar to this ticket: #103

Thanks for the clear repro steps and video using the example app and all 🙏 Just ack'ing that we've been able to repro with those steps and are investigating it now. I suspect there's a conflict with the cancel handling and the "card left in reader" logic causing trouble here. Will update when we know more.

The fix for this issue will ship in our next release, 3.5.0, currently scheduled for April 8th. Thanks again for the detailed report.