2014-02-15 26 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;}会是这样的,或者它不会工作? –