Hii Guys
I am very new to In App purchase and don't have much knowledge
This is My Code in App:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String base64EncodedPublicKey ="@string/base64EncodedPublicKey";
iabHelper = new IabHelper(this,base64EncodedPublicKey);
iabHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
@Override
public void onIabSetupFinished(IabResult result) {
if(!result.isSuccess()){
Log.d(TAG,"In-app Billing setup failed" + result);
}
else {
Log.d(TAG,"In-app Billing setup OK" + result);
}
iabHelper.enableDebugLogging(true);
iabHelper.queryInventoryAsync(mReceivedInventoryListener);
}
});
public void buyItem1Click(){
iabHelper.launchPurchaseFlow(this,ITEM_SKU,10001,mPurchaseFinishedListener,"mypurchasetoken");
}
public void buyItem2Click(){
iabHelper.launchPurchaseFlow(this,ITEM2_SKU,10001,mPurchaseFinishedListener,"mypurchasetoken2");
}
public void buyItem3Click(){
iabHelper.launchPurchaseFlow(this,ITEM3_SKU,10001,mPurchaseFinishedListener,"mypurchasetoken3");
}
public void buyItem4Click(){
iabHelper.launchPurchaseFlow(this,ITEM4_SKU,10001,mPurchaseFinishedListener,"mypurchasetoken4");
}
public void buyItem5Click(){
iabHelper.launchPurchaseFlow(this,ITEM5_SKU,10001,mPurchaseFinishedListener,"mypurchasetoken5");
}
public void buyItem6Click(){
iabHelper.launchPurchaseFlow(this,ITEM6_SKU,10001,mPurchaseFinishedListener,"mypurchasetoken6");
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(!iabHelper.handleActivityResult(requestCode,resultCode,data)){
super.onActivityResult(requestCode,resultCode,data);
}
}
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new
IabHelper.OnIabPurchaseFinishedListener() {
@Override
public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
if(result.isFailure()){
return;
}
else if(purchase.getSku().equals(ITEM_SKU)){
consumeItem();
}
else if(purchase.getSku().equals(ITEM2_SKU)){
consumeItem();
}
else if(purchase.getSku().equals(ITEM3_SKU)){
consumeItem();
}
else if(purchase.getSku().equals(ITEM4_SKU)){
consumeItem();
}
else if(purchase.getSku().equals(ITEM5_SKU)){
consumeItem();
}
else if(purchase.getSku().equals(ITEM6_SKU)){
consumeItem();
}
}
};
public void consumeItem(){
iabHelper.queryInventoryAsync(mReceivedInventoryListener);
}
IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener = new
IabHelper.QueryInventoryFinishedListener() {
@Override
public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
Purchase ITEM1 = inventory.getPurchase(ITEM_SKU);
Purchase ITEM2 = inventory.getPurchase(ITEM2_SKU);
Purchase ITEM3= inventory.getPurchase(ITEM3_SKU);
Purchase ITEM4= inventory.getPurchase(ITEM4_SKU);
Purchase ITEM5= inventory.getPurchase(ITEM5_SKU);
Purchase ITEM6= inventory.getPurchase(ITEM6_SKU);
if(result.isFailure()){
}
else if (ITEM1!= null) {
Log.d(TAG, "We have Life2. Consuming it");
iabHelper.consumeAsync(inventory.getPurchase(ITEM_SKU),
mConsumeFinishedListener);
return;
}
else if (ITEM2!= null ) {
Log.d(TAG, "We have Life4. Consuming it.");
iabHelper.consumeAsync(inventory.getPurchase(ITEM2_SKU),
mConsumeFinishedListener);
return;
}
else if (ITEM3!= null ) {
Log.d(TAG, "We have Ester2. Consuming it.");
iabHelper.consumeAsync(inventory.getPurchase(ITEM3_SKU),
mConsumeFinishedListener);
return;
}
else if (ITEM4!= null ) {
Log.d(TAG, "We have Ester4. Consuming it.");
iabHelper.consumeAsync(inventory.getPurchase(ITEM4_SKU),
mConsumeFinishedListener);
return;
}
else if (ITEM5!= null ) {
Log.d(TAG, "We have Ester6. Consuming it.");
iabHelper.consumeAsync(inventory.getPurchase(ITEM5_SKU),
mConsumeFinishedListener);
return;
}
else if (ITEM6!= null ) {
Log.d(TAG, "We have Coins10K. Consuming it.");
iabHelper.consumeAsync(inventory.getPurchase(ITEM6_SKU),
mConsumeFinishedListener);
return;
}
}
};
IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = new
IabHelper.OnConsumeFinishedListener() {
@Override
public void onConsumeFinished(Purchase purchase, IabResult result) {
if(result.isSuccess()){
if(purchase.getSku().equals(ITEM_SKU) && result.isSuccess()){
setCoins(500);
}
else if(purchase.getSku().equals(ITEM2_SKU) && result.isSuccess()){
setCoins(1000);
}
else if(purchase.getSku().equals(ITEM3_SKU) && result.isSuccess()){
setCoins(2000);
}
else if(purchase.getSku().equals(ITEM4_SKU) && result.isSuccess()){
setCoins(5000);
}
else if(purchase.getSku().equals(ITEM5_SKU) && result.isSuccess()){
setCoins(10000);
}
else if(purchase.getSku().equals(ITEM6_SKU) && result.isSuccess()){
setCoins(20000);
}
}
}
};
@Override
protected void onDestroy() {
super.onDestroy();
if(iabHelper != null)
iabHelper.dispose();
iabHelper= null;
}
I have basically 6 cosumable SKU that can be consumed multiple times. Its a
coin Game and so every in app purchase is based on coins.
I kindly request you please check this code and let me know have i implemented
correctly. I don't know much about in app purchase but i guess it will be
viewed by much experience developer. So please help me out with your
sugesstions or refactoring etc.I checked developer site as well but couldn't
understand any thing.
I also wanted to ask that i used static response for testing and my app got
started and when i click on buy button. Google play test intent poped up
and showed payment sucessful but it didn't add any data in game. So i closed
the app, next time when i tried to start the app it gave error
"java.lang.NullPointerException: Attempt to invoke virtual method
com.xyzApps.Purchase.utility.Inventory.
getPurchase(java.lang.String)' on a null object reference"
and showed "Unfortunately game stopped"
I don't know what's the reason i checked
IabHelper.QueryInventoryFinishedListener but everything looks good please let
me know
--
You received this message because you are subscribed to the Google Groups
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/android-developers.
To view this discussion on the web visit
https://groups.google.com/d/msgid/android-developers/c96e27e3-f5d2-471b-818a-3d6e3174fd51%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.