Android应用内非托管服务器验证

Android应用内非托管服务器验证,android,transactions,in-app-billing,Android,Transactions,In App Billing,我想在我的应用程序中首次使用应用内购买。我使用一个非托管项(它是一个虚拟monney),我想在服务器端用我的公钥验证事务 为了做到这一点,我使用了。我设置了一个“signatureValidator”,在“validate(stringsigneddata,stringsignature)”上调用它。这是工作,我收到签名数据和签名,我返回“假”表示“这不是一个正确的购买”。我用这个启动了我的WS(异步),如果可以,我调用“BillingService.confirmNotifications()

我想在我的应用程序中首次使用应用内购买。我使用一个非托管项(它是一个虚拟monney),我想在服务器端用我的公钥验证事务

为了做到这一点,我使用了。我设置了一个“signatureValidator”,在“validate(stringsigneddata,stringsignature)”上调用它。这是工作,我收到签名数据和签名,我返回“假”表示“这不是一个正确的购买”。我用这个启动了我的WS(异步),如果可以,我调用“BillingService.confirmNotifications()”,否则我什么都不做

但我的问题是:如果服务器不验证事务,我不会调用“confirmNotification”,但事务仍然是验证的,客户必须付费。我如何才能等待服务器响应并取消(或只是不确认)事务它不正常

谢谢

编辑,我添加了一些代码:

private void requestPurchase(String purchaseId) {
    mPurchaseId = purchaseId;
    // request my purchase
    BillingController.requestPurchase(this, mPurchaseId, false, null);
}

// Receipt the answer of my purchase
@Override
public boolean validate(String signedData, String signature) {
    // when a purchased need to be checked
    mProgressDialog = ProgressDialog.show(this, null, getString(R.string.loading), true, false);
    RequestHelper.getInstance().executeRequest(getRequestCheckReceipt(signedData, signature);
    return false;
}


// Receipt the answer of my WS
@Override
public void onRequestReceived(Request request) {
    if (mProgressDialog != null) {
            mProgressDialog.dismiss();
            mProgressDialog = null;
    }
    if(request.isOk()) {
        BillingService.confirmNotifications(this, new String[] { mPurchaseId };);
    }
}

好的,现在使用新的API(v3),我将我的对象更改为“托管”,当服务器告诉我密钥正确时,我会使用它。我认为您还需要添加一些服务器端代码。我不认为,服务器端非常简单:只检查签名的数据并返回true或false。