I found a workaround that allowed me to bind a card in GPay and make a payment on Anrdoid 10.
It does not allow to pass safetynet or make ctsprofile true - it only makes GPay work.
I am not an author of this hack do I know who made it - credit to the guys on 4pda forums. Also I am not an android developer and don't exactly know how most things work.
The workaround is:
0. (Optional) Before applying workaround I cleared all data google play services, google pay and google services framework.
1. Download GooglePay_fix (
this file), unzip it and find a file dg.db. For some reason I wasn't able to attach it to this post.
2. Delete everything in your device's /data/data/com.google.android.gms/app_dg_cache and change this folder's attributes to read-only: 444 or r--r--r--
3. Go to /data/data/com.google.android.gms/databases/ and delete dg.db and dg.db-journal.
4. Copy downloaded dg.db in /data/data/com.google.android.gms/databases/ and assign it read only attributes (444 or r--r--r--).
5. Compare checksums of both files. If they don't match then do steps 3-4 again until they do.
6. Reboot.
7. (Optional) Bind a card in GPay again and try to make a payment with it.
8. (Optional) Restrain yourself from checking SafetyNet - it will be false.
Its only 2 hours after I applied this and so far I only did 2 payments with ~40 minutes between them. It may break down in the future.
Also I don't know if it fixes any other apps that depend on SafetyNet.