2014-02-15 19 views
-2

我在應用中添加了應用內結算v3,當我嘗試購買物品時,轉移成功並從信用卡中提取資金,但該物品未添加到應用中。什麼可能是錯的?應用內結算v3工作出錯

//編輯

public class GetcoinsActivity extends MainActivity { 
SharedPreferences prefs_coins; 
static final String ITEM_SKU_1 = "coins_1"; 
static final int RC_REQUEST = 10001; 
    private static final String TAG = "com.chess.black"; 

IabHelper mHelper; 
Button btn1; 

int score_get = 100; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_getcoins); 

prefs_coins = PreferenceManager.getDefaultSharedPreferences(GetcoinsActivity.this); 
if (prefs_coins.contains(activity_play_normal.APP_PREFERENCES_score)) 
{ 
score_get = prefs_coins.getInt(activity_play_normal.APP_PREFERENCES_score, 0);  
} 
btn1 = (Button) findViewById(R.id.buttonBuy30); 

String base64EncodedPublicKey = "here's my key"; 
        mHelper = new IabHelper(this, base64EncodedPublicKey); 

      mHelper.startSetup(new 
     IabHelper.OnIabSetupFinishedListener() { 
       public void onIabSetupFinished(IabResult result) 
      { 
       if (!result.isSuccess()) { 
        Log.d(TAG, "In-app Billing setup failed: " + 
       result); 
       } else {    
        Log.d(TAG, "In-app Billing is set up OK"); 
      } 
      } 
     }); 

    } 

    IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener 
    = new IabHelper.OnIabPurchaseFinishedListener() { 
    public void onIabPurchaseFinished(IabResult result, 
        Purchase purchase) 
    { 
     if (result.isFailure()) { 
      // Handle error 
      return; 
    }  
    else if (purchase.getSku().equals(ITEM_SKU_1)) { 
     consumeItem(); 
    } 

    } 
}; 

public void consumeItem() { 
    mHelper.queryInventoryAsync(mReceivedInventoryListener); 
} 

IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener 
    = new IabHelper.QueryInventoryFinishedListener() { 
     public void onQueryInventoryFinished(IabResult result, 
      Inventory inventory) 
     {   
      if (result.isFailure()) { 
      // Handle failure 
      } else { 
       mHelper.consumeAsync(inventory.getPurchase(ITEM_SKU_1), 
      mConsumeFinishedListener); 
      } 
    } 
}; 

IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = 
new IabHelper.OnConsumeFinishedListener() { 
public void onConsumeFinished(Purchase purchase, 
     IabResult result) { 

if (result.isSuccess()) {    
    score_get = score_get + 500; 
    Editor editor = prefs_coins.edit();   
    editor.putInt(activity_play_normal.APP_PREFERENCES_score, score_get); 
    editor.commit(); 
} else { 
     // handle error 
} 
} 
}; 

    public void OnClickBuy30(View v) 
    { 
     mHelper.launchPurchaseFlow(GetcoinsActivity.this, ITEM_SKU_1, RC_REQUEST, 
       mPurchaseFinishedListener); 
    } 

    protected void OnDestroy() 
    { 
     super.onDestroy(); 
     if (mHelper != null) mHelper.dispose(); 
     mHelper = null; 
    } 

    protected void OnActivityResult(int requestCode, int resultCode, Intent data) 
    { 
     if (!mHelper.handleActivityResult(requestCode, 
        resultCode, data)) {  
      super.onActivityResult(requestCode, resultCode, data); 
      } 
    } 
} 
+0

我的應用程序沒有做我想做的事情..什麼可能是錯的?更多信息請!這裏有一個關於應用內結算v3與購買項目的教程http://stackoverflow.com/a/17884022/1847899 –

+0

我想添加代碼,但我不能。我可以給我的代碼鏈接? –

+0

sure ..張貼鏈接 –

回答

0

可以先請把記錄在你的代碼...(Log.d(..))

也許你的分數將不會在首寫因爲計費過程是在另一個過程..試試這個

SharedPreferences yourPrefs= ctx.getSharedPreferences(ctx.PREFS_NAME,ctx.MODE_MULTI_PROCESS); 
+0

如果我在「mHelper.launchPurchaseFlow」和這裏「if(result.isSuccess())score_get = score_get」之後將「... editor.putInt(...)...」替換爲方法「OnCkickBuy30」 + 500;}會是這樣的,或者它不會工作? –