Google Pay/Wallet TapAndPay API calls prevent parts of banking apps (e.g. Vivid Money) from loading, issues related to isReadyToPay() already resolved
See original GitHub issueVivid Money
Description
Vivid Money is a German fintech offering bank services managed via an Android app. A customer can have multiple bank accounts. Most of the app functionality works fine with MicroG, however an account (“pocket”) screen never completes loading if a card is linked to the account. There is no error message shown to the user. Other account screens load immediately and can be used without problems.
- Package name: vivid.money
- Package version: 1.20.0.480 (Nov 24, 2020)
- MicroG version: 0.2.14.204215 (latest GitHub release build as of Nov 25, 2020)
- To reproduce, one has to log in to the app and tap on an account with a card linked to it; by default this is the Main pocket label.
Cause
ADB logcat inspection reveals the likely cause to be the Google Pay (formerly Google Wallet) integration, specifically the TapAndPay API calls:
D GmsTapAndPaySvc: onBind: Intent { act=com.google.android.gms.tapandpay.service.BIND pkg=com.google.android.gms }
D GmsTapAndPaySvc: bound by: GetServiceRequest{serviceId=TAP_AND_PAY, gmsVersion=12451000, packageName='vivid.money', extras=Bundle[{}]}
D GmsTapAndPayImpl: onTransact [unknown]: 21, android.os.Parcel@2bd3dc, 16
D GmsTapAndPayImpl: onTransact [unknown]: 21, android.os.Parcel@55e6ce5, 16
When other account screens load succesfully there are no such calls logged.
Workaround
The app allows the opening of several sub-accounts and reassigning the card to any of them, with immediate effect. Thus, you can link the card to an account other than the one you want to view or make changes to, open the account screen, which will now work, and relink the card back to the original account once you’re finished.
Related Issues
It seems similar issues affected a number of other apps relating to banking and payments in the past. Some of them have already been resolved. This is to keep track of all of them:
Confirmed
Resolved
- #626:
Revolut (com.revolut.revolut)Resolved as of 2020-11-03 per comment - #987:
Yandex Taxi (ru.yandex.taxi); #994:Uber (com.ubercab); #1006:Uber Eats (com.ubercab.eats)Resolved as of 2020-11-27 per @selurvedu’s comment (note: some of the earlier discussion for these issues related to Mapbox problems, which are unrelated) - #1162 (comment):
Vinted.pl (pl.vinted) Last confirmed 2020-10-20 (recently), however an update to MicroG as of 2020-11-25 might have fixed this issue.Resolved as of 2020-11-26 per @Natalcia’s comment - #1207:
N26 Bank (de.number26.android), another German fintech, however the issue there is related toNo longer an issue as of 2020-11-26, apparently was addressed earlier on the application side, per @ArchangeGabriel’s commentGmsWalletPaySvc
andGmsWalletOwSvc
instead, also there exists a workaround (downgrade to an older app version before Google Pay integration)
Unconfirmed
- #372: Google Assistant (com.google.android.googlequicksearchbox) Last confirmed 2017-12-07 (3 years ago). Might also be outside of the scope of the MicroG project since the issue pertains to a Google app.
- #971: First Bus (com.firstgroup.first.bus) Last confirmed 2019-11-11 (a year ago).
Current Status
According to @mar-v-in’s comment, the current situation is (emphasis mine):
- The Wallet Payment API isReadyToPay() dummy always returns that payment via Google Wallet Payment API is not available, so this should fix all apps that use that API for checkout / payment
- The SafeParcel unknown fields are not an issue (though I could probably get rid of some of them easily so that logs are not spammed that much).
- Banking apps sometimes use the TapAndPay API which allows them to add your bank account to Google Pay / Android Pay. This API is not yet implemented and probably causing issues here. As I guess one needs a bank account with that bank to try out, I can try to provide test builds, but debugging that way obviously is much harder.
What follows:
- Before reporting any issues that might be related to Google Pay/Wallet, make sure to update to version 0.2.14.204215 of 2020-11-25 or newer, and check if the issue is still present, as many of them should be resolved with this version
- When posting logcat dumps, ignore anything related to
SafeParcel
- The TapAndPay API is not expected to work as of now
Issue Analytics
- State:
- Created 3 years ago
- Reactions:5
- Comments:16 (3 by maintainers)
A dummy isReadyToPay() API fixed the payment option screens in Uber (see https://github.com/microg/GmsCore/issues/994#issuecomment-734960495) and a few other apps. Viva Marvin!