ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

使用Google Checkout Polling API验证Android应用内购买时出现延迟

2019-10-11 19:35:44  阅读:220  来源: 互联网

标签:android google-checkout api in-app-purchase


我正在尝试使用Google Checkout API从我的服务器验证Android应用内购买.根据此其他查询(App on Android market – HTTP notifications don’t come),我没有回调,因此我正在使用轮询API.

它工作正常,除了我可以在民意测验收到有关购买的通知之前延迟5或6分钟,即使登录到浏览器中的商户帐户的用户已经可以看到所有信息.查看API文档,这意味着可能需要更长的时间,因为它指出“使用轮询API,您可以检索不到180天且至少30分钟的所有通知”.

这种延误是典型的吗(我在英国)?还是建议使用轮询API来验证Android应用内购买吗?

解决方法:

我认为,尝试通过服务器上的Google Checkout轮询API验证GP LVL和/或IAB信息不是最佳方法.如果您有服务器,还有更好的选择.

如文章Securing Android LVL Applications中所述,最好的方法是在受信任的服务器上验证许可证信息.它是这样的:

>不要使用Google演示代码; it is not robust (does not check for all error conditions),甚至可以用伪造响应之类的脚本替换(尽管,如果您按以下方式实现服务器端检查,则还是无关紧要的).直接使用com.android.vending.licensing.请勿在您的应用程序中包含Google Developer Console应用程序密钥,您在那里不需要它.
>您的应用向您的服务器询问ILicensingService.checkLicense()调用的随机数.您的服务器会为您的应用提供安全的随机随机数.您的应用使用该随机数调用ILicensingService.checkLicense().
> Android GP LVL Servce通过ILicenseResultListener.verifyLicense()回调您的应用,复制签名的数据和签名. (提示:已签名的数据包含随机数,因此此处甚至无法进行重放攻击.)
>您的应用将签名的数据以及签名传递到服务器.
>您的服务器是唯一知道您的Google Developer Console应用程序密钥的实例.它根据签名的数据验证签名.
>验证结果将有助于您做出有关访问服务器数据的身份验证决定.
>确保您不经常检查许可证. Google希望您遵守许可回复随附的有效时间戳(他们声称该时间戳甚至反映了15分钟的退款期限).显然,只有将有效性存储在服务器端并且服务器允许应用程序跳过步骤2中的测试,这才是安全的.

唯一的区别是,IAB也是如此.不幸的是,IAB V3不适用于getPurchases()的随机数.原因可能是the IAB Service itself (and not just the Google app-side reference code) uses caching extensively.不过,对于购买,您可以将developerPayload传递给com.android.vending.billing.IInAppBillingService.getBuyIntent(),它将包含在getPurchases()返回的签名数据中.因此,只要您没有应用内购买的到期条件或某种隐式(基于时间)或服务器管理的显式到期条件,该API仍然足够安全;然后服务器将要求应用程序消费过期的物品,即使失败,也不是问题,因为服务器仍然知道该信息,并且可以要求应用程序一次又一次地消费这些物品.

我希望我可以对此主题有所启发.

标签:android,google-checkout,api,in-app-purchase
来源: https://codeday.me/bug/20191011/1895026.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有