_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.
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.
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.
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:
GmsWalletPaySvc and GmsWalletOwSvc instead, also there exists a workaround (downgrade to an older app version before _Google Pay_ integration)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:
SafeParcelRegardless of the above, perhaps it'd still be good to have a single issue where all problems related to Google Pay can be tracked and discussed.
You could have added this to the other issue where I listed all related bugs I could find instead of opening a new one, then :p
You could have added this to the other issue where I listed all related bugs I could find instead of opening a new one, then :p
I was considering it but decided it would beneficial to provide a better description.
Going by the same logic, why didn't you post yours in #372, #626, or #971?
GitHub automatically cross-links mentioned issues.
GitHub automatically cross-links mentioned issues.
Correct. And the issue you opened is referenced here too, so what is your point?
Changelog for the new MicroG version 0.2.14.204215 released yesterday (Nov 25, 2020) includes the following:
- Wallet API: Stub isReadyToPay()
- This fixes some apps that waited indefinitely during payment process and/or when displaying payment options
I checked and this does not resolve the issue with vivid.money account screen not loading if a card is attached to the account.
As for de.number26.android, I can't verify it since I'm using an older version that has always fully worked, while it works. However, since the issue there is different (actions screen not loading, possibly because it includes the functionality to top up with another credit card), the new MicroG release _might_ have fixed it for N26 and in some other apps.
N26 3.53 works for me even without the lastest microG (and it does still work with the new version, just tested).
N26 3.53 works for me even without the lastest microG (and it does still work with the new version, just tested).
That's some great news, thank you! I updated too now and yes, it seems it does. There's no _Actions_ tab anymore, but there's _Card_ and _Card Settings_, which both seem to work. And if it worked even earlier, they must have addressed it on the application side too I guess. I'll edit the original post to reflect that.
So the question is are there any other apps still affected, or is this a Vivid-specific issue at this point?
Yeah indeed, should have said that this new version revamped “Actions” into “Card”. So they definitively fixed it on the app side.
@Natalcia FYI the issue you reported in #1162, which I also linked to here, might be fixed in the newest MicroG version (0.2.14.204215), if you want to check. Tagging you just to let you know.
Thanks for tag. It's still broken in pl.mbank
11-26 19:46:34.282 699 2324 I WifiHAL : event received NL80211_CMD_VENDOR, vendor_id = 0x1374, subcmd = 0xd
11-26 19:46:34.282 927 927 I cnss-daemon: nl80211 response handler invoked
11-26 19:46:34.282 927 927 I cnss-daemon: nl80211_response_handler: cmd 103, vendorID 4980, subcmd 13 received
11-26 19:46:34.286 1348 2082 E LightsService: Light requested not available on this device. 2
11-26 19:46:34.441 5094 5121 D GmsMeasureBrokerSvc: bound by: GetServiceRequest{serviceId=MEASUREMENT, gmsVersion=12451000, packageName='pl.mbank', extras=Bundle[{}]}
11-26 19:46:34.465 5094 5121 D SafeParcel: Unknown field id 2 in com.google.android.gms.measurement.internal.EventParcel, skipping.
11-26 19:46:34.465 5094 5121 D SafeParcel: Unknown field id 3 in com.google.android.gms.measurement.internal.EventParcel, skipping.
11-26 19:46:34.465 5094 5121 D SafeParcel: Unknown field id 4 in com.google.android.gms.measurement.internal.EventParcel, skipping.
11-26 19:46:34.465 5094 5121 D SafeParcel: Unknown field id 5 in com.google.android.gms.measurement.internal.EventParcel, skipping.
11-26 19:46:34.467 5094 5121 D GmsMeasureSvcImpl: f1: pl.mbank
11-26 19:46:36.283 699 2324 I WifiHAL : event received NL80211_CMD_VENDOR, vendor_id = 0x1374, subcmd = 0xd
11-26 19:46:36.284 927 927 I cnss-daemon: nl80211 response handler invoked
11-26 19:46:36.284 927 927 I cnss-daemon: nl80211_response_handler: cmd 103, vendorID 4980, subcmd 13 received
Vinted spams logcat with SafeParcel Unknown field id 2, 3, 4, 5 just like mBank but everything loads properly now.
Here are complete mBank logs from launching to trying to view cards. https://del.dog/yucylodiby.log
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!
I can test mBank. If you would provide test builds could I just swap apks in Magisk modules directory and data from older version would be used without any problems?
@mar-v-in Thank you for everything!
I can happily test any new builds but realistically it is like you're saying, debugging would be difficult. So if you're not planning on opening an account with Vivid,1 then it'd best to find another app using the TapAndPay API and exhibiting the same issue.
Anecdotally, it seems a number of other banks use this functionality but you'd have to be a customer of that particular bank to know about it, and test it with. And, as it hasn't been more widely reported as a problem, it should probably be considered a very low priority issue at this point (since isReadyToPay() has been implemented).
If it turns out there aren't more users of other apps affected by this, I'll just contact Vivid and try to convince them to address it on their end (as it should have been in the first place).
Thanks again!
1) Just for the record, it's free to use, and there's a €20 sign-up bonus.
I also updated the original post to reflect all the new information and keep it relevant.
Most helpful comment