I am trying to implement stripe tap to pay on my NFC enabled mobile phone. My reference link is https://stripe.com/docs/terminal/payments/connect-reader?terminal-sdk-platform=android&reader-type=tap-on-mobile
My app is build using kotlin and while implementing the feature on one of my activity, I got struck with the error Account not enabled for Tap on Mobile functionality
Can someone help me to fix this error, currently my stripe account is in test mode.
Note: One more thing I am trying to implement this feature from a country that is not in the list of Availability countries of terminal, Does this make any error , If so let me know if I can do the development globaly
I have added my code below
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState);
Terminal.initTerminal(
applicationContext,
LogLevel.VERBOSE,
TokenProvider(), // This will return stripe token (test account)
TerminalEventListener()
);
val config = DiscoveryConfiguration(
timeout = 1000,
discoveryMethod = DiscoveryMethod.LOCAL_MOBILE,
isSimulated = false,
location = "xxxxxxxxxxxxxxx"
);
discoveryCancelable = Terminal.getInstance().discoverReaders(
config,
discoveryListener = object : DiscoveryListener {
override fun onUpdateDiscoveredReaders(readers: List<Reader>) {
val firstReader = readers.first();
Log.d("Response Tap", "Finished onUpdateDiscoveredReaders");
val config = ConnectionConfiguration.LocalMobileConnectionConfiguration("xxxxxxxxxxxxxxx");
Terminal.getInstance().connectLocalMobileReader(
firstReader,
config,
object : ReaderCallback {
override fun onSuccess(reader: Reader) {
// I guess here the mobile will wait for card to tap on my mobile
Log.d("Response Tap", "Connected to mobile device")
}
override fun onFailure(e: TerminalException) {
Log.d("Response Tap", "Error ReaderCallback : " e.errorMessage)
// Error ReaderCallback : Account not enabled for Tap on Mobile functionality
}
}
);
}
},
object : Callback {
override fun onSuccess() {
Log.d("Response Tap", "Finished discovering readers")
}
override fun onFailure(e: TerminalException) {
Log.d("Response Tap", "Error on Connection : " e.errorMessage)
}
})
}
CodePudding user response:
For that error, you will have to reach out to Stripe support to get your account enabled for that tap to pay feature. However, if your account is not located in one of the Terminal-supported countries, that's another issue. You can request an invite to test out Terminal if you're located outside of the available countries.
CodePudding user response:
It seems to me that this is only available on iPhones and for the US region. The documentation describes this in more detail, the link can be found in more detail.
(US / iPhone) Tap to pay on iPhone
I did not find information about this functionality in the android application, here most likely the support service would give you a clearer answer.