First of all, device info before I continue with my query:
Manufacturer: OnePlus
Model name: OnePlus Nord
codename: avicii
Android version: 12
/e/os version: 1.18-s-20231207360611-stable-avicii
build number: e_avicii-user 12 SQ3A.220705.004.eng.root.20231207.201937 dev-keys
device rooted? yes
Maybe it is a futile effort on my side but I wondered if I can successfully get Google Wallet / Google Pay working. The error which I got before attempting to troubleshoot and which I still get to this day:
Not yet supported:
com.google.android.gms.pay.homescreen.VIEW_HOME
First of all, like with anything custom ROM, I did some basic research. It turns out that since November this year, Google changed their API and thus no longer wants to support the “old way” of SafetyNet. Not only the device needs to pass SafetyNet test, it also needs to pass the Google Play Integrity API check successfully. So in order to have Google Pay working, my device needs to pass this check. For this, I need to hide the fact that my device has unlocked bootloader and a custom ROM installed. For this reason, I rooted my device via Magisk.
- Install Magisk and follow the official Magisk’s github page for further help / instructions.
- Install https://github.com/chiteroman/PlayIntegrityFix/releases Magisk module
- Denylist inside Magisk the Google Wallet, microG frameworks+droidguard+fakestore.
- Cleared cache of those apps.
- Rebooted the device.
Theoretically, this should do the job but I got the following error as per screenshot. So I digged further and deeper. It turns out that not only they changed the API, they’re also actively snooping fingerprints and blocking the ones which they think might be abused. So this in end-effect means the default fingerprint of the aforementioned magisk module will not pass the Google Play Integrity Check. You need to create (more precisely spoof) your own one, link to XDA here.
So I spoofed my own one (in fact, several others based on stock ROM dumps made by the Android community here https://dumps.tadiphone.dev/dumps/) but I still can’t pass the check. For reference, this is the app I used to check if my device passes. On other like-minded apps, the error is the same.
-9: Integrity API error (-9): Binding to the service in the Play Store has failed. This can be due to having an old Play Store version installed on this device. Ask the user to update Play Store.
What can I do from here? As far as I know, I can’t really update FakeStore (com.android.vending) nor any other microG component via F-Droid nor any other source since the .apk’s are incompatible (I think the reason is that /e/os developers use their own signing keys hence why the incompatibility). And any microG updates come first of all with OTA updates once a month (which means I could then retry at spoofing the fingerprint for the Google Pay but I’m afraid the PlayStore would get old as well).
Does anyone else have any ideas? I tried looking through Reddit, XDA and other forums but I can’t find anything useful.