Android In-App结算安全问题?

时间:2012-06-25 14:05:16

标签: android billing in-app

在我们为Android应用程序设计InApp Billing的过程中,我们提出了以下方案;

  1. 客户已植根/可操作设备(因此市场应用+我的应用无法信任)
  2. 客户购买产品
  3. 购买状态0(购买)发送到我们的后台(所有都已检查并确定),我们给予积分。
  4. 客户退款购买
  5. 客户已操纵我们的应用或市场应用以在本地确认退款,从而阻止退款通知到达我们的后台服务器。
  6. 这种情况可能吗?我们如何解决这个问题?

    enter image description here

2 个答案:

答案 0 :(得分:0)

首先:如果用户要求退款,您还会收到一封电子邮件。

第二:应用内结算的购买不能直接由用户退还。如果用户想要退款,他必须与您联系,然后您可以手动继续使用您的Google电子钱包帐户退款。

所以我认为你的情景很可能发生。

其次,如果可能,我建议您使用托管购买,在这种情况下,如果用户要求退款,谷歌市场会记住它,您可以使用RESTORE_TRANSACTION检查是否发生了一些退款(但同样:您必须授予退款)。

答案 1 :(得分:0)

问这个问题已经7年了,但我仍然会提供答案,因为它可能对某些人有用。

图中缺少的部分是BackOfficeServer,它在向用户授予信用(商品)之前执行服务器端验证。由于客户端上的任何内容(无论您的应用程序还是应用程序商店)都不可信任,因此您唯一的解决方案是将BackOfficeServer与Google提供的Purchase Verification API集成在一起。仅当您收到他们的答复说购买有效时,您才可以授予商品。

退款同样适用。如果用户发出退款,您将需要撤消货物。为此,您只能再次信任BackOfficeServer。 Google提供了可以满足该要求的Real time Developer NotificationsVoid API