![](/img/trans.png)
[英]How to remember that the item is purchased or not in android app billing service?
[英]Android billing - Testing purchases with android.test.purchased in production/alpha/beta
我正在使用Google Play結算API(v3),並且正在使用sku=android.test.purchased
測試應用內購買。 為此,我從助手類修改了Security.verifyPurchase
方法,如下所示:
public static boolean verifyPurchase(String base64PublicKey, String signedData, String signature, String sku) {
if (TextUtils.isEmpty(signedData) || TextUtils.isEmpty(base64PublicKey) || TextUtils.isEmpty(signature)) {
Log.e(TAG, "Purchase verification failed: missing data.");
if ("android.test.purchased".equals(sku) || BuildConfig.DEBUG) {
Log.e(TAG, "This was a test purchase");
return true;
}
return false;
}
PublicKey key = Security.generatePublicKey(base64PublicKey);
return Security.verify(key, signedData, signature);
}
我的代碼與我發現的教程中的代碼略有不同:我添加了以下代碼:
"android.test.purchased".equals(sku)
最初,僅添加了對BuildConfig.DEBUG
的驗證,但是我需要讓測試用戶可以快速購買產品,而無需添加他們的付款數據。
我的問題是:如果我在生產應用中使用此代碼,是否會遇到很大的安全問題(或者僅對於alpha / beta來說還可以)?
對於生產版本,此修改絕對不可行,因為它會禁用響應驗證。 如果攻擊者沒有提供base64PublicKey
, signedData
, signature
和測試sku
您在代碼中有,那么你的應用程序將允許使用應用程式功能,在生產中實際上不為他們支付。
如果在DEBUG版本中,您想允許所有sku's
,只需刪除您的支票即可。 如果只想允許您的sku
,請使用&&
運算符或以下代碼。
if (BuildConfig.DEBUG) {
Log.e(TAG, "This was a test purchase");
return "android.test.purchased".equals(sku);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.