应用内结算购买验证的后端服务器

时间:2019-05-06 05:42:19

标签: in-app-billing android-inapp-purchase

BillingClient queryPurchases方法的google文档指出以下内容:

“出于安全考虑,建议您通过调用以下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,并通过服务器与之建立了通信,并进行了一些初步测试,但是我研究的越多,对它的需求的质疑就越多。如果您的代码可以反编译,那么您在后端进行的任何验证都肯定会被应用程序的代码所破坏。

我的理解是google将这些购买内容缓存在本地设备上,并定期刷新该缓存,而queryPurchases则从该缓存中提取购买内容。

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

1 个答案:

答案 0 :(得分:0)

Google play处理交易并保存购买记录,您的后端出示购买收据,并得到Google的回复,用户无法在Google的计费系统上注入虚假记录,而这正是您后端所依赖的,如果用户确实确实在应用程序项目中购买了您并且其信用卡已由Google收取,则该记录是可靠的,即使用户反编译了您的应用程序,用户也无法对其进行更改,除了暴露为恶意的演员。在应用程序计费系统中实施良好的应用程序是防水的,即使不是不可能的游戏也极其困难。