其实已经用了一年时间了,中间只有小半个月出现了无法通过SafetyNet测试的情况,算是很稳定的了,记个笔记防止自己忘记
Google NFC Pay以及安全机制介绍
Google Pay分为两种。一种是类似于支付宝/Paypal形式的应用内支付,由应用内置SDK来作为支付渠道,常见于Google Play Store中的应用内购和海外软件中的第三方支付渠道。这种情况对手机并没有什么要求,登陆Google帐号,有支持的支付方式就可以了。另一种是Google Pay in-store Payment,也就是类似于Apple Pay的NFC支付。
和Apple Pay不一样的是,由于Google Pay有前面提到的为应用内购而设计的方案,所以在Google Pay中添加新的银行卡时不会像Apple Pay一样直接启用NFC支付。在Google Pay应用中找到你的支付方式,可以选择你需要启用NFC支付的信用卡作为你的in-store Payment card。启用NFC支付需要和Apple Pay/ Fitbit Pay等NFC支付方式一样经过来自发卡行的验证,通常都是像你留给银行的手机号或者邮箱发送验证码来确认。启用NFC支付后,Google Pay应用中对是否开启NFC支付的卡都有明显的提示,并对剩余没有设置NFC支付的卡留有开启支付的按钮(顺带一提,Google NFC Pay支持将Paypal设为付款方式,付款卡为Paypal中的默认支付卡)
但是,Google对开启in-store Payment的设备有很高的要求,只要是root过的设备就无法启用NFC支付,更别说Xposed了(相比之下Apple Pay即使在越狱的情况下也可以直接使用真的是太简单了)。在Magisk作为root权限来源后,隐藏root变得更为简单,但xposed通常仍然难以逃过Google SafetyNet的检测。SafetyNet会随着谷歌服务在后台自动更新,无法关闭,所以只能尝试躲避检测而不能去关闭SafetyNet。SafetyNet也会随着Google Pay Service在后台更新,这个和Play Store中的Google Pay应用更新没有关系,Google Pay应用的更新不会对你SafetyNet测试结果产生影响,但过低版本的Google Pay应用会造成无法使用NFC Pay。在成功启用后NFC支付后设备失去安全环境也会导致失去Google NFC Pay功能,但设备一旦恢复到安全状态,也可以不再设置直接继续支付(因此早期大家都建议在需要支付时使用Magisk关闭root功能重启手机,完成支付后再开启root,但那样太麻烦了)
设备环境
- OnePlus 7 Pro/ GM1917
- Android Version: 9
- Kernel Version: 4.14.83-perf+
- Build Number: Oxygen OS 9.5.13.GM21AA
软件环境
- Magisk Manager 7.4.0 (253)
- Magisk 20.1 (20100)
- EdXposed Framework 90.0-v0.4.5.1_beta(4463)(YAHFA)
- 都是写文章时的最新版
Magisk设置
- 进入设置,启用Magisk Hide
- 模块中下载并启用"MagiskHide Props Config",这个模块在提示有更新时应及时更新
- 设置中启用自定义Magisk Manager包名
- 一定不要使用特别简短或者简单的单词作为包名,这个影响比较大
- 侧栏进入Magisk Hide功能区,添加以下内容作为隐藏目标
- Google Pay (com.google.android.apps.walletnfcrel)
- Google Play服务 (com.google.android.gms),默认点中后只会选择一部分服务,这是可以的,当然你全点上也OK
EdXposed设置
- 在Magisk模块中添加并启用"Riru-EdXposed"
- 设置中启用黑名单机制
- 将Google Pay,Goole Play服务和Google服务框架拉入黑名单
至此,你的设备应该已经可以正常设置并使用NFC支付了。如果还是无法使用,很有可能谷歌刚刚更新了SafetyNet,有一个有效的解决方案是在Edxposed的模块商店中搜索"HiddenCore Module"下载并启用。一般都可以绕过SafetyNet检测,但建议只是在上述方法无效的情况下以及MagiskHide Props Config没有发布更新前的应急方法。
转载请标注来源