安全的Android应用内购买

时间:2013-03-07 10:20:14

标签: android in-app-purchase

我已经按照一些使用应用内购买的教程进行了操作,并且我已经完成了这一切。但是,对于这个示例案例,是否可以安全地使用它:

  

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

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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

您可以参考this link

答案 2 :(得分:0)

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

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

您从服务中获得的结果中包含数据和签名。 Key是您可以在Developer Console中找到的公共RSA密钥。