Android w zakupie aplikacji: weryfikacja podpisu nie powiodła się

Przez kilka dni próbowałem rozwiązać ten problem, używając kodu demo Dungeons dostarczonego z SDK. Próbowałem odpowiedzieć na Google, ale nie mogę go znaleźć.

W demie Dungeons przekazałem mój klucz publiczny z konsoli dev.Podpisano apk i przesłano do konsoli bez publikowania.Testowanie dla obuandroid.test.purchased i lista produktów utworzona na konsoli z opublikowaną subskrypcją (główna funkcja, którą chcę dla mojej aplikacji).

Ale wciąż mam błądSignature verification failed a następnie podpis nie pasuje do danych. Jak mogę to rozwiązać?

public static ArrayList<VerifiedPurchase> verifyPurchase(String signedData, String signature)
{
    if (signedData == null) {
        Log.e(TAG, "data is null");
        return null;
    }
    if (Consts.DEBUG) {
        Log.i(TAG, "signedData: " + signedData);
    }
    boolean verified = false;
    if (!TextUtils.isEmpty(signature)) {

        String base64EncodedPublicKey = "MIIBIjA....AQAB";
        PublicKey key = Security.generatePublicKey(base64EncodedPublicKey);
        verified = Security.verify(key, signedData, signature);
        if (!verified) {
            Log.w(TAG, "signature does not match data.");
            return null;
        }
    }
}

public static boolean verify(PublicKey publicKey, String signedData, String signature)
{
    if (Consts.DEBUG) {
        Log.i(TAG, "signature: " + signature);
    }
    Signature sig;
    try {
        sig = Signature.getInstance(SIGNATURE_ALGORITHM);
        sig.initVerify(publicKey);
        sig.update(signedData.getBytes());
        if (!sig.verify(Base64.decode(signature))) {
            Log.e(TAG, "Signature verification failed.");
            return false;
        }
        return true;
    } catch (NoSuchAlgorithmException e) {
        Log.e(TAG, "NoSuchAlgorithmException.");
    } catch (InvalidKeyException e) {
        Log.e(TAG, "Invalid key specification.");
    } catch (SignatureException e) {
        Log.e(TAG, "Signature exception.");
    } catch (Base64DecoderException e) {
        Log.e(TAG, "Base64 decoding failed.");
    }
    return false;
}

questionAnswers(14)

yourAnswerToTheQuestion