在Google Play应用内结算中消费已取消购买

时间:2013-05-29 08:24:25

标签: android google-play in-app-billing google-play-services

我正在开发一个应用程序,该应用程序利用Google Play应用内结算V3销售有效期为一段时间的商品。用户进行购买后,我会将购买数据发送到我们的服务器并立即使用,如果成功的话。然后,服务器授予对该特定用户的额外服务的访问权限,直到该期间结束。注意:我没有使用应用内订阅。

我正在测试沙盒模式下测试用户的购买情况,不会付款。他们中的大多数是成功的,这种流程很好。但是,有时,我的购买会立即被Google取消。在我的Google Checkout帐户的订单历史记录中,我看到以下行:

  

“为了您的保护,Google取消了此订单。该交易是   被认为是欺诈性的。“。

即使发生这种情况,我也会看到我在购买数据中收到"purchaseState": 0,表示成功。此外,尝试使用此产品也会导致成功(调用IInAppBillingService.consumePurchase(version, package, token)返回0)。稍后查询我的库存表明我没有购买(因此没有退款/取消),我可以再次自由购买相同的商品。这与正常的,未解除状态的行为相同。

  1. Google是否经常在测试沙箱之外以相同的方式取消订单?
  2. 成功购买和消费的物品是否仍可以在开发商无法控制的范围内取消(即退款)?
  3. 是否可以了解已经消费的产品的取消?

2 个答案:

答案 0 :(得分:1)

  

Google经常在测试之外以相同的方式取消订单   沙箱?

Google拥有欺诈检测系统,有助于识别不可靠的付款。例如,如果有人使用被盗的信用卡或多个帐户等使用相同的信用卡。在这种情况下,支付交易甚至会在它开始之前(在联系支付提供商之前)与您的问题中的消息一起停止。在5月,这个欺诈检测系统无法可靠地检测测试帐户,这就是您可以看到此消息的原因。现在它稍好一些。在现实生活中,这种情况非常罕见。

  

成功购买和消费的商品仍然可以   因控制范围以外的原因取消(即退款)   开发者?

这是一个棘手的问题,因为取消的内容不是项目,而是与此项目相关联的付款交易。从理论上讲,交易也可以在以后取消,但必须有充分的理由。使用被盗信用卡的相同示例在此处有效。在现实生活中,我以前从未见过它。

  

是否可以了解有关产品的取消   已被消费?

虽然我自己从未尝试过,但我不相信消费的产品可以取消。正如我所说,相关的支付交易可能会被取消,但不会被消费的产品。这是因为消费的产品可以再次出售,而且还没有付款的连接。如果产品未被消费,将被置于取消状态,如果分配给它的支付交易被取消。

希望这有帮助。

答案 1 :(得分:0)

我正在设置相同类型的应用程序 用户可以购买商品,它将在我的服务器上被跟踪,最后被消费,因此用户可以再购买相同的商品。

我正在跟踪有关购买的所有信息,我试图取消已经消费的订单。我可以确认订单的状态会发生变化(在10分钟或更短时间后,您也会收到有关取消订单的电子邮件)。

使用productId和purchaseToken调用PurchaseAPI的此网址将返回购买信息:

https://www.googleapis.com/androidpublisher/v2/applications/<app.package.name>/purchases/products/<productId>/tokens/<purchaseToken>?access_token=<myToken>

您第一次得到类似的回复:

{
  "kind": "androidpublisher#productPurchase",
  "purchaseTimeMillis": "1458047931024",
  "purchaseState": 0,
  "consumptionState": 1,
  "developerPayload": "mypurchasetoken"
}

取消后,purchaseState将会改变:

{
  "kind": "androidpublisher#productPurchase",
  "purchaseTimeMillis": "1458047931024",
  "purchaseState": 1,
  "consumptionState": 1,
  "developerPayload": "mypurchasetoken"
}

这与我第一次进行产品验证的GET相同 建立定期检查所购商品的状态可能是明智的,如果取消,则更新服务器上的购买。