0

I implemented inapp purchase in my application. I use activity for result to get IAP result failure or successs

Intent intent = new Intent(LevelsActivity.this,
                            PurchaseCoinActivity.class);
                    Log.d("TE1","1.Calling Purchase activity for "+productSKU+"Product");
                    intent.putExtra("sku_id", productSKU);
startActivityForResult(intent,
                            MyConstants.REQUEST_PURCHASE);

//here REQUEST_PURCHASE=2014

/* ------My onActivityResult ----- */

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

if (QuizByteConstants.REQUEST_QUIZ_PURCHASE == requestCode) {
            if (RESULT_OK == resultCode) {

                dealWithSuccessfulPurchase();
            } else {

                dealWithFailedPurchase();
            }
        } else if (requestCode == 550) {
            Log.d("TE1","Result after purchase=Request code is 550 state");
            Toast.makeText(getApplicationContext(), "activty result",
                    Toast.LENGTH_LONG).show();
        }
//--------------here my  PurchaseCoinActivity-----------

    package com.br.my.payment;

import java.util.ArrayList;

import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

import com.android.vending.billing.util.IabResult;
import com.android.vending.billing.util.Purchase;
import com.br.my.R;
import com.br.my.activities.MyApplication;
import com.br.my.activities.MyForgotPasswordActivity;
import com.br.my.MyConstants;
import com.br.my.MyUtilities;
public class PurchaseCoinActivity extends PurchaseActivity {

    private QuizByteApplication qbApplication;
    private ArrayList<String> skuList;
    private String productSku;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Set the result as cancelled in case anything fails before we purchase
        // the item
        skuList = new ArrayList<String>();
        //skuList.add(MYConstants.SKU);
        myApplication = (MYApplication) getApplication();
        setResult(RESULT_CANCELED);

        if (getIntent().getExtras() != null
                && getIntent().getExtras().containsKey("sku_id")) {

            productSku = getIntent().getExtras().getString("sku_id");
            Log.d("TE1","Product id recived on purchase coin activity="+productSku);
        }

        // Then wait for the callback if we have successfully setup in app
        // billing or not (because we extend PurchaseActivity)
    }

    @Override
    protected void dealWithIabSetupFailure() {
        MyUtilities.showCustomToast(PurchaseCoinActivity.this, getString(R.string.toast_buy_coin_not_available));
        finish();
    }

    @Override
    protected void dealWithIabSetupSuccess() {
        ArrayList<String> productInfoList = getProductDetails(skuList);
        qbApplication.setPurchasedProductDetails(productInfoList);
        Log.d("TE1","Setting DB application setPurchasedInfoList as ="+productInfoList);
        Log.d("TE1","Iab setup sucess.. start purcaseing..");
        purchaseItem(productSku);
    }

    @Override
    protected void dealWithPurchaseSuccess(IabResult result,
            Purchase purchaseInfo) {
        super.dealWithPurchaseSuccess(result, purchaseInfo);

        myApplication.setProductPurchased(purchaseInfo);
        Log.d("TE1","purchase sucess Result="+result+"..& seting to myApplication item="+purchaseInfo);
        myApplication.setPurchaseResult(result);
        Log.d("Purchase Activity", " OrderId=" + purchaseInfo.getOrderId()
                + " developer_payload=" + purchaseInfo.getDeveloperPayload());
        Log.d("TE1", " OrderId=" + purchaseInfo.getOrderId()
                + " developer_payload=" + purchaseInfo.getDeveloperPayload());

        setResult(RESULT_OK);
        finish();
    }

    @Override
    protected void dealWithPurchaseFailed(IabResult result) {
        super.dealWithPurchaseFailed(result);
        Log.d("TE!","Purchase failed!!! result="+result);
        myApplication.setPurchaseResult(result);
        setResult(RESULT_CANCELED);
        finish();
    }

}

for some successful purchase indicated from google play(money deducted from account),but my onActivityResult() call dealWithFailedPurchase()!!(for some time!! some time work fine), Based on deal with successful or failure purchase i need to update server database using async task. But some times it updated as purchased but some times not. please give sugessions.. thank you .

Lejin K.R
  • 33
  • 4
  • In dealWithSuccessfulPurchase() and dealWithFailedPurchase() function i call same async task for update purchased details on database as succes or failure by passing parameters as "sucees" form dealWithSuccessfulPurchase() and "failure" from dealWithFailedPurchase(). – Lejin K.R Feb 09 '15 at 11:35
  • Some times its working fine but for some times money deducted but not updated on table(I called async task for update database on a server that i discribed in first comment ) – Lejin K.R Feb 09 '15 at 11:42

0 Answers0