android iap



通過促銷代碼進行的應用內購買會返回空的開發人員有效負載字符串 (1)

我有一個發佈到Alpha渠道的應用,其中包含一個應用內(非)託管商品,價格為1美元。

當我正常購買商品時,即使用信用卡/借記卡,Google會返回正確的開發人員有效負載字符串,但是如果我選擇“兌現”促銷代碼並輸入上述代碼,Google會返回一個空的開發人員有效負載字符串,因此身份驗證失敗'onIabPurchaseFinished()'。

我應該提到,只有在我選擇從應用程序的購買流程中兌換代碼時才會發生這種情況,並且如果我先打開Play商店,兌換代碼,然後再回來打開應用程序,一切都會正常進行。

這是Google的錯誤嗎?

編輯:Play商店的事情是預料之中的,因為它不知道您的有效載荷,並且購買時無需檢查它。


這個問題已在Google的android-play-billing示例 github.com/googlesamples/android-play-billing/issues/7 打開。 似乎它已被忽略很長時間,並最終被 this 評論關閉。 簡而言之,他們有以下建議。

我們查看了指南和內部API,並且由於In-App Billing API的所有功能(包括促銷代碼)均不支持developerPayload,因此我們刪除了將其用作安全檢查的建議。

您可以在我們的文檔中看到,在“實現應用內結算”頁面( https://developer.android.com/google/play/billing/billing_integrate.html )上,我們添加了一條建議:

警告:請勿將developerPayload字段用於安全驗證。 完成與應用內結算相關的任務時,此字段並非始終可用。 有關安全最佳做法的更多信息,請參閱應用內結算安全和設計指南。

我們的建議是使用Play Developer API在您自己的後端進行驗證。





promotion-code