Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Google Pay/Wallet TapAndPay API calls prevent parts of banking apps (e.g. Vivid Money) from loading, issues related to isReadyToPay() already resolved #1245

Open
GeographicCone opened this issue Oct 23, 2020 · 16 comments

Comments

@GeographicCone
Copy link

GeographicCone commented Oct 23, 2020

Vivid 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

Unconfirmed

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
@deviant
Copy link

deviant commented Nov 24, 2020

Regardless 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

@GeographicCone
Copy link
Author

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?

@deviant
Copy link

deviant commented Nov 24, 2020

GitHub automatically cross-links mentioned issues.

@GeographicCone
Copy link
Author

GitHub automatically cross-links mentioned issues.

Correct. And the issue you opened is referenced here too, so what is your point?

@GeographicCone
Copy link
Author

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.

@ArchangeGabriel
Copy link
Contributor

N26 3.53 works for me even without the lastest microG (and it does still work with the new version, just tested).

@GeographicCone
Copy link
Author

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?

@ArchangeGabriel
Copy link
Contributor

Yeah indeed, should have said that this new version revamped “Actions” into “Card”. So they definitively fixed it on the app side.

@GeographicCone GeographicCone changed the title Banking apps (e.g. Vivid Money, N26) partly not loading due to Google Pay (~ Wallet) API calls Banking and payment apps partly not loading due to Google Pay/Wallet API calls (e.g. Vivid Money; N26 now resolved) Nov 26, 2020
@GeographicCone
Copy link
Author

@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.

@surfaceflinger
Copy link

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

@selurvedu
Copy link

A dummy isReadyToPay() API fixed the payment option screens in Uber (see #994 (comment)) and a few other apps. Viva Marvin!

@mar-v-in
Copy link
Member

  • 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.

@surfaceflinger
Copy link

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?

@GeographicCone GeographicCone changed the title Banking and payment apps partly not loading due to Google Pay/Wallet API calls (e.g. Vivid Money; N26 now resolved) Google Pay/Wallet TapAndPay API calls prevent parts of banking apps (e.g. Vivid Money) from loading, issues related to isReadyToPay() already resolved Dec 1, 2020
@GeographicCone
Copy link
Author

@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.

@ghost
Copy link

ghost commented Jan 20, 2021

I want to add TransferWise as not working. I think its exactly the same issue, cause i tried to do a transaction with 1€ and it works, but not with 2 or more.
(They offer Google Pay only from 2€ upwards).

@surfaceflinger
Copy link

btw I've found workaround for mBank. Just mark old card as lost/whatever and request new one. After it arrives don't activate Google Pay from mBank and it will just work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants