microg / microg/GmsCore

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

Open
#1,245 16 comments 6 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Java
Stars
14.6k
Forks
3.2k
Avg merge
12d 11h
Merged PRs (30d)
4

Description

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
  • #1162 (comment): mBank (pl.mbank) @Natalcia's comment from 2020-11-26
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 to GmsWalletPaySvc and GmsWalletOwSvc instead, also there exists a workaround (downgrade to an older app version before Google Pay integration) No longer an issue as of 2020-11-26, apparently was addressed earlier on the application side, per @ArchangeGabriel's comment
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

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating GmsTapAndPaySvc and GmsTapAndPayImpl, then inspect the TapAndPay transactions shown in the logcat. Compare the unimplemented API behavior with the calls made by Vivid Money; done means the card-linked account screen no longer hangs when those calls occur, with regression coverage for the relevant transactions.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, java
Domain
api, mobile
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.