我正在开发一个应用程序,该应用程序利用Google Play应用内结算V3销售有效期为一段时间的商品。用户进行购买后,我会将购买数据发送到我们的服务器并立即使用,如果成功的话。然后,服务器授予对该特定用户的额外服务的访问权限,直到该期间结束。注意:我没有使用应用内订阅。
我正在测试沙盒模式下测试用户的购买情况,不会付款。他们中的大多数是成功的,这种流程很好。但是,有时,我的购买会立即被Google取消。在我的Google Checkout帐户的订单历史记录中,我看到以下行:
“为了您的保护,Google取消了此订单。该交易是 被认为是欺诈性的。“。
即使发生这种情况,我也会看到我在购买数据中收到"purchaseState": 0
,表示成功。此外,尝试使用此产品也会导致成功(调用IInAppBillingService.consumePurchase(version, package, token)
返回0)。稍后查询我的库存表明我没有购买(因此没有退款/取消),我可以再次自由购买相同的商品。这与正常的,未解除状态的行为相同。
答案 0 :(得分:1)
Google拥有欺诈检测系统,有助于识别不可靠的付款。例如,如果有人使用被盗的信用卡或多个帐户等使用相同的信用卡。在这种情况下,支付交易甚至会在它开始之前(在联系支付提供商之前)与您的问题中的消息一起停止。在5月,这个欺诈检测系统无法可靠地检测测试帐户,这就是您可以看到此消息的原因。现在它稍好一些。在现实生活中,这种情况非常罕见。Google经常在测试之外以相同的方式取消订单 沙箱?
成功购买和消费的商品仍然可以 因控制范围以外的原因取消(即退款) 开发者?
这是一个棘手的问题,因为取消的内容不是项目,而是与此项目相关联的付款交易。从理论上讲,交易也可以在以后取消,但必须有充分的理由。使用被盗信用卡的相同示例在此处有效。在现实生活中,我以前从未见过它。
是否可以了解有关产品的取消 已被消费?
虽然我自己从未尝试过,但我不相信消费的产品可以取消。正如我所说,相关的支付交易可能会被取消,但不会被消费的产品。这是因为消费的产品可以再次出售,而且还没有付款的连接。如果产品未被消费,将被置于取消状态,如果分配给它的支付交易被取消。
希望这有帮助。
答案 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相同 建立定期检查所购商品的状态可能是明智的,如果取消,则更新服务器上的购买。