我想从我的应用中进行应用结算。
IabHelper.OnIabPurchaseFinishedListener purchaseThisAppListener = new IabHelper.OnIabPurchaseFinishedListener() {
@Override
public void onIabPurchaseFinished(IabResult result, Purchase purchaseDetails) {
if(result.isFailure()) {
if(result.getResponse() == IabHelper.BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED) {
String toastText = "Item is already purchased.\nRestoring purchase.";
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());;
prefs.edit().putBoolean("isAppPurchased", true).commit();
myActivity.refresh_status = myActivity.REFRESH_ACTIVITY;
Builder alert = new AlertDialog.Builder(thisActivityContext);
alert.setTitle("Item already owned");
alert.setMessage("You already own this item. Restoring purchase.");
alert.setPositiveButton("OK",null);
alert.show();
for(int i = 3; i < myUtility.isCategoryAvailable.length; i++) {
myUtility.isCategoryAvailable[i] = true;
}
myUtility.isAllCategoriesAvailable = true;
isAppPurchased = true;
}
return;
}
else if (purchaseDetails.getSku().equals(ITEM_SKU)) {
prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
if(prefs != null) {
prefs.edit().putBoolean(IS_APP_PURCHASED, true).commit();
for(int i = 3; i < myUtility.isCategoryAvailable.length; i++) {
myUtility.isCategoryAvailable[i] = true;
}
myUtility.isAllCategoriesAvailable = true;
isAppPurchased = true;
}
else {
Log.e(TAG, "Preferences not found");
}
}
else {
Log.e(TAG, "Purchase successful, but different Item SKU found");
}
}
};
我还添加了onActivityResult,因为我读到上面的函数没有被调用。 onIabPurchaseFinished never called.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {
super.onActivityResult(requestCode, resultCode, data);
Log.d("IN APP ACTIVITY", "ENTERED");
}
else {
Log.d("IN APP ACTIVITY", "DID NOT ENTER");
}
}
当我把ITEM_SKU =“android.test.purchased”时,所有这些都有效; 但是,当我在GooglePlay上发布此应用时,!mHelper.handleActivityResult(requestCode,resultCode,data)始终返回false。请帮忙。
答案 0 :(得分:2)
使用静态SKU“android.test.purchased”似乎仍然存在问题,您似乎遇到了类似问题:Android in app purchase: Signature verification failed
我也有这个问题,但是一旦我使用了自己的SKU,一切都运行良好。我认为向前推进的最佳方式是在开发人员控制台中设置应用内产品,如下所示:http://developer.android.com/intl/es/training/in-app-billing/list-iab-products.html然后使用该测试和测试帐户进行测试(您也可以在控制台中设置 - 导航到设置,帐户详细信息并向下滚动,直到您看到具有测试访问权限的Gmail帐户,这样您就不会收费。这有点乏味但它对我有用。