Android in app purchase: Signature verification failed

后端 未结 14 813
说谎
说谎 2020-11-28 02:27

I have tried for several days to solve this problem, using the Dungeons demo code that comes with the SDK. I\'ve tried to Google for an answer but can\'t find one.

14条回答
  •  无人及你
    2020-11-28 03:12

    I have the same problem and follow @Deadolus said based on https://www.gaffga.de/implementing-in-app-billing-for-android/

    The key point is we need to make the SKU is consumable even the inventory query result is failed. Below is the sample how i did that.

    IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
            public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
                Log.d(TAG, "Query inventory finished.");
    
                // Have we been disposed of in the meantime? If so, quit.
                if (mHelper == null) return;
    
                // Is it a failure?
                if (result.isFailure()) {
                    try {
                        Purchase purchase = new Purchase("inapp", "{\"packageName\":\"PACKAGE_NAME\","+
                                "\"orderId\":\"transactionId.android.test.purchased\","+
                                "\"productId\":\"android.test.purchased\",\"developerPayload\":\"\",\"purchaseTime\":0,"+
                                "\"purchaseState\":0,\"purchaseToken\":\"inapp:PACKAGE_NAME :android.test.purchased\"}",
                                "");
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                    mHelper.consumeAsync(purchase, null);
                    complain("Failed to query inventory: " + result);
                    return;
                }
    
                Log.d(TAG, "Query inventory was successful.");
    
                /*
                 * Check for items we own. Notice that for each purchase, we check
                 * the developer payload to see if it's correct! See
                 * verifyDeveloperPayload().
                 */                   
            }
        };
    

    Replace PACKAGE_NAME in the code above with the package name of your app.

提交回复
热议问题