I’m integrating Tap to Pay on Android with the Mobile Payments SDK (2.6.0, via the
Flutter plugin). Authorization works. the SDK is authorized, the location has card
processing enabled.
But when I call startPayment(), Square’s screen opens with the right amount and says
“Connect hardware to take card payments” instead of asking the customer to tap. After
about a minute it fails with a timeout, since no card can ever be presented.
When I check getReaders() just before starting the payment, there IS a Tap to Pay
reader, but it’s unusable:
status = readerUnavailable
unavailableReason = secureConnectionToSquareFailure
supportedInputMethods = (empty)
So the reader can’t establish its secure connection to Square, and because it supports
no input methods, the SDK falls back to asking for external hardware.
Setup: Samsung SM-G781B, Android 13. NFC on, developer options off, no other Square
readers paired. The merchant account is US-based, but the device is physically in
India. Same behaviour in debug and release builds.
My question: is this because the device is outside a supported region? The Tap to Pay
on Android docs don’t mention any country requirements. Or does
secureConnectionToSquareFailure point to a network or device attestation problem I
should be debugging instead?