首页 > 解决方案 > 用于应用内计费购买验证的后端服务器

问题描述

BillingClient queryPurchases 方法的谷歌文档说明如下:

“出于安全考虑,建议通过调用以下 API 在您的后端(如果有的话)进行购买验证:https ://developers.google.com/android-publisher/api-ref/purchases/products/get ”

链接在这里:

https://developer.android.com/reference/com/android/billingclient/api/BillingClient.html#queryPurchases(java.lang.String)

我已经设置了一个 API,从我的服务器与它建立了通信,并进行了一些初步测试,但我越研究它,我就越质疑它的必要性。如果您的代码可以反编译,那么您在后端进行的任何验证都肯定会在您的应用程序代码中被破坏。

我的理解是,谷歌在本地设备上缓存这些购买并定期刷新缓存,这个缓存是 queryPurchases 从中提取购买的地方。

通过对这些购买进行后端验证,我将试图阻止哪种类型的攻击?

标签: in-app-billingandroid-inapp-purchase

解决方案


Google play 处理交易并保存购买记录,您的后端提供购买收据并从 Google 获得响应,用户无法在 Google 的计费系统中注入虚假记录,这就是您的后端所依赖的,如果用户确实在应用程序中购买了您,并且他们的信用卡被 Google 收取了费用,那么该记录是可靠的,即使用户反编译了您的应用程序,他们也无法更改它,除了被暴露为恶意行为者之外,他们不会获得任何收益. 一个在应用程序计费系统中实施良好的系统是无懈可击的,如果不是不可能的话,也是非常困难的。


推荐阅读