簡體   English   中英

簽名驗證失敗 - Android應用內購買

[英]Signature verification failed - Android in-app purchase

我已經在Android應用程序上實現了應用程序計費,雖然它可以正常使用測試常量,但卻打破了真正的產品。

我已將該應用程序上傳為Google Play上的草稿,創建並發布了產品,在設備上安裝了完全相同的應用程序(包括正確的base64EncodedPublicKey)並使用了正確的測試帳戶(設備上的主要帳戶和我設置的帳戶)在我的開發者帳戶上)

流程是我上Google Play活動,在那里我可以看到產品及其詳細信息,我按下購買,介紹測試帳戶密碼,它退出活動,收到祝賀消息和

產品簽名驗證失敗(響應:-1003:購買簽名驗證失敗)

該項目實際上是購買的(它出現在Google Checkout上,並在第二次購買嘗試時顯示“項目已經擁有”)。 此外,我只使用了谷歌的TriviaDrive示例代碼。

任何建議都非常有幫助。 謝謝!

在In App Billing文檔中,有一個部分稱為啟動您與Google Play的連接

它告訴您,您需要一個base64編碼的公鑰來實例化您的IabHelper。 您可以從Google Play開發者控制台獲取此代碼。 登錄控制台,單擊應用程序,然后轉到“服務和API”選項卡。

IabHelper mHelper;

@Override
public void onCreate(Bundle savedInstanceState) {
   // ...
   String base64EncodedPublicKey;

   // compute your public key and store it in base64EncodedPublicKey
   mHelper = new IabHelper(this, base64EncodedPublicKey);
}

請考慮文檔中建議的安全建議:

安全建議:強烈建議您不要對Google Play提供的確切公共許可證密鑰字符串值進行硬編碼。 相反,您可以在運行時從子字符串構造整個公共許可證密鑰字符串,或者在將其傳遞給構造函數之前從加密存儲中檢索它。 這種方法使惡意第三方更難以修改APK文件中的公共許可證密鑰字符串。

此錯誤可能出現在IAB v3中的另一個原因是,如果您在一台設備上購買產品(例如訂閱),並且購買信息無法完全進入另一台設備上Play商店應用的緩存中。

我有一個可怕的時期,在購買Kitkat手機訂閱后,另一部手機(姜餅)得到這個-1003錯誤。 我追溯到這樣一個事實:getpurchases()方法只返回帶有(正確)列表購買的INAPP_PURCHASE_ITEM_LIST。 INAPP_PURCHASE_DATA_LIST和INAPP_DATA_SIGNATURE_LIST作為null返回。 (即使我可以在Play應用程序中看到訂閱。)

簽名為null,因此當然會出現簽名驗證錯誤。 在經歷了很多令人頭疼/恐慌之后,為什么它不起作用,突然它沒有我做任何事情。 我認為Google Services / Play應用程序最終刷新緩存並自行更新。

考慮到這一點,我認為解決方案可能只是將整個購買信息傳播到播放服務,然后將該錯誤靜音.... w / iabhelper它是這樣的:

if (result.getResponse() != IabHelper.IABHELPER_VERIFICATION_FAILED)
                    complain("Failed to query inventory: " + result);
Log.d(TAG, "Query inventory was NOT successful.");

這似乎是一個相當大的錯誤 - Play商店應該等到它知道購買的所有內容,然后再將其傳遞給應用程序,我想。 我不知道這個問題是否在購買流程的其他方面表現出來,但是你可以去。

我的訂閱存在此問題,因為我沒有設置“itemType”

 mHelper.launchPurchaseFlow(this,
            SKU_INFINITE_GAS, IabHelper.ITEM_TYPE_SUBS,
            RC_REQUEST, mPurchaseFinishedListener, payload);

1>產品簽名驗證失敗(響應:-1003:購買簽名驗證失敗)

此錯誤背后的原因是Base64Encoded不匹配。 從發布者帳戶獲取許可證密鑰,將其復制到某個文本編輯器中刪除任何空格並粘貼它。

2>“項目已擁有”當我們從谷歌獲得應用內購買的OK響應時,我們需要使用應用內商品來通知其已購買和交付。 但如果不知何故,如果你的崩潰或你忘了消費它谷歌將不允許再次購買它,直到你消費它。 在您的方案應用程序中拋出簽名驗證失敗錯誤..這是第二個問題的原因

希望這有幫助

務必使用密鑰以UTF8編碼文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM