应用内结算 - 在我们确认通知()之前,市场是否继续向我们发送信息?

时间:2012-03-14 16:12:24

标签: android google-play

我继续使用谷歌提供的应用内结算示例,我想用我服务器上的实现替换他们的安全类(正如他们所推荐的那样)。看起来我必须在我的服务器上调用实现来替换以下内容:

/**
 * Verifies that the data was signed with the given signature, and calls
 * {@link ResponseHandler#purchaseResponse(Context, PurchaseState, String, String, long)}
 * for each verified purchase.
 * @param startId an identifier for the invocation instance of this service
 * @param signedData the signed JSON string (signed, not encrypted)
 * @param signature the signature for the data, signed with the private key
 */
private void purchaseStateChanged(int startId, String signedData, String signature) {
    // Instead of using the local version included on the client,
    // this should be an http call to our server which has the 
    // implementation.
    ArrayList<Security.VerifiedPurchase> purchases;
    purchases = Security.verifyPurchase(signedData, signature);
    if (purchases == null) {
        return;
    }


    // Then the rest gets executed after the http response comes back.
    ...

    confirmNotifications(startId, notifyIds);

所以我要替换上面的内容,当我从服务器得到响应时,我会运行confirmNotifications()位等。但是这里有很多东西可能出错,网络可能会丢失等等。所以我假设市场会一直向我发送消息,直到我成功执行confirmNotifications()位?

当我开始在我的服务器上进行验证时,有些事情发生了变化,我感到有些害怕,我得到了一大堆信用卡收费的用户,但看不到内容显示在他们的设备上。

另外,我认为我的应用程序盗版的线程非常低,但我担心将我的市场公钥嵌入客户端。如果我将来某天确实有一个受欢迎的游戏,攻击者可以查看我的一些旧应用程序并将其从中获取(不确定如果他们获得公钥会有多大的危险)。

由于

1 个答案:

答案 0 :(得分:0)

是的,市场将继续发送您从未提交过确认通知的事件的通知,正如文档所说:

  

CONFIRM_NOTIFICATIONS:   此请求确认您的应用程序已收到购买状态更改的详细信息。 Google Play会向您的应用发送购买状态更改通知,直到您确认收到它们为止。

here