繁体   English   中英

安全的Android应用内购买

[英]Secure in-app purchase for Android

我遵循了一些使用应用程序内购买的教程,并且所有这些都可以正常工作。 但是在此示例情况下是否可以安全地使用它:

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

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

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

通过这种方法,您将获得交易的响应。

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

如果responseCode为RESULT_OK,则表示事务成功。

您可以参考此链接

您可以从服务接收有关购买的信息到服务器。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM