1

我遵循了一些使用应用内购买的教程,并且我得到了这一切。但是在这个示例案例中是否可以安全地使用它:

该应用程序可免费下载,并具有一些聊天功能。它每天可以发送 100 条消息。该应用程序每年可以发送额外的 x 条消息。

这里的问题是:服务器如何知道用户买了东西?是否有 Google 服务可供使用和检查?因为通过允许应用程序向服务器发送消息“嘿,我刚买了这个”似乎是错误的。

4

3 回答 3

1

作为 IAP 的一部分,您需要一个 BroadcastReceiver 来接收来自 Google 的通知。其中一个通知是 com.android.vending.billing.PURCHASE_STATE_CHANGED。该通知包括一个数据块和一个签名。将两者准确地传输到您的服务器。Google Play 将为您提供一个公钥,然后您可以使用它来验证服务器上数据块的签名(在 php 中,openssl_verify 有效)。一旦您验证了服务器上的数据,您就可以解析数据块 (json) 以获取订单列表,包括他们的产品标识符,这些产品标识符告诉您用户购买了什么。从那里开始,您自己的协议必须包含一个设备/用户/合同标识符来验证服务器。很难在不了解您的计划的情况下就这部分提出建议。

于 2013-03-07T16:42:25.417 回答
0

在这种方法上,您将获得交易的响应。

@Override
    public void onRequestPurchaseResponse(RequestPurchase request,
            ResponseCode responseCode) {

如果 responseCode 为 RESULT_OK 则表示交易成功。

你可以参考这个链接

于 2013-03-07T11:47:37.263 回答
0

从服务接收后,您可以将有关购买的信息转发到您的服务器。

您可以使用openssl_verify ($data, $signature, $key)

数据和签名包含在您从服务中获得的结果中。密钥是您可以在开发者控制台中找到的公共 RSA 密钥。

于 2013-10-10T09:38:51.250 回答