money3

发布时间:2019-08-25 09:37:59编辑:auto阅读(1792)

    主要是对google play官方demo的讲解


    1.仿照demo搭建一个新的内部付费应用

    1. 创建一个新的android项目,创建一个新包 包名 com.android.vending.billing

    2. IInAppBillingService.aidl拷贝到新包里



    新项目代码

    AndroidManifest.xml

    添加付费权限:<uses-permissionandroid:name="com.android.vending.BILLING"/>

    activity_main.xml

    onBuyGasButtonClicked:按钮调用的方法、buy_gas图片名 .png

    <ImageView

    android:src="@drawable/buy_gas"

    android:onClick="onBuyGasButtonClicked"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_marginBottom="20dp"/>

    public class MainActivity extends Activity {
        IabHelper mHelper;
        //应用付费产品的id
        static final String SKU_GAS = "android.test.purchased";
        static final String SKU_INFINITE_GAS = "infinite_gas";
        static final String SKU_PREMIUM = "premium";
        static final int RC_REQUEST = 10001;
        boolean mIsPremium = false;
        boolean mSubscribedToInfiniteGas = false;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //应用key
            String base64EncodedPublicKey = "";
            mHelper = new IabHelper(this, base64EncodedPublicKey);
            mHelper.enableDebugLogging(true);
            mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
                public void onIabSetupFinished(IabResult result) {
                    System.out.println("                      onIabSetupFinished");
                    if (!result.isSuccess()) {
                        System.out
                                .println("                      Problem setting up in-app billing: "
                                        + result);
                        return;
                    }
                    mHelper.queryInventoryAsync(mGotInventoryListener);// Inventory存货
                }
            });
                 
                 
                 
        }
             
             
        IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
            public void onQueryInventoryFinished(IabResult result,
                    Inventory inventory) {
                System.out
                        .println("                        onQueryInventoryFinished");
                if (result.isFailure()) {
                    System.out.println("Failed to query inventory: " + result);
                    return;
                }
                Purchase premiumPurchase = inventory.getPurchase(SKU_PREMIUM);
                mIsPremium = (premiumPurchase != null && verifyDeveloperPayload(premiumPurchase));
                Purchase infiniteGasPurchase = inventory
                        .getPurchase(SKU_INFINITE_GAS);
                mSubscribedToInfiniteGas = (infiniteGasPurchase != null && verifyDeveloperPayload(infiniteGasPurchase));
                Purchase gasPurchase = inventory.getPurchase(SKU_GAS);
                if (gasPurchase != null && verifyDeveloperPayload(gasPurchase)) {
                    mHelper.consumeAsync(inventory.getPurchase(SKU_GAS),
                            mConsumeFinishedListener);
                    return;
                }
            }
        };
             
             
             
        IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = new IabHelper.OnConsumeFinishedListener() {
            public void onConsumeFinished(Purchase purchase, IabResult result) {
                System.out.println("                        onConsumeFinished");
                if (result.isSuccess()) {
                } else {
                    System.out
                            .println("        successful                onConsumeFinished");
                }
            }
        };
             
             
             
        IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
            public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
                System.out
                        .println("                        onIabPurchaseFinished  "
                                + result + " purchase " + purchase);
                if (result.isFailure()) {// 失败了
                    System.out.println("   失败了 ");
                    return;
                }
                if (!verifyDeveloperPayload(purchase)) {
                    return;
                }
                // 判断不同付费:涨一格油、换车、一段时间免费
                if (purchase.getSku().equals(SKU_GAS)) {
                    mHelper.consumeAsync(purchase, mConsumeFinishedListener);
                } else if (purchase.getSku().equals(SKU_PREMIUM)) {
                    mIsPremium = true;
                } else if (purchase.getSku().equals(SKU_INFINITE_GAS)) {
                    mSubscribedToInfiniteGas = true;
                }
            }
        };
             
        //按钮
        public void onBuyGasButtonClicked(View arg0) {
            System.out.println("                      onBuyGasButtonClicked");
                 
            String payload = "";
            mHelper.launchPurchaseFlow(this, SKU_GAS, RC_REQUEST,
                    mPurchaseFinishedListener, payload);
                 
            while(true){}
        }
             
             
        //不写这个第二次请求时会崩溃,处理请求后的事件
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            System.out.println("                        onActivityResult: "
                    + requestCode + "  " + resultCode + "  data " + data);
            if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {
                super.onActivityResult(requestCode, resultCode, data);
            } else {
            }
        }
             
             
        boolean verifyDeveloperPayload(Purchase p) {// verify:核查
            String payload = p.getDeveloperPayload();
            System.out.println("                        verifyDeveloperPayload");
            return true;
        }
        @Override
        public void onDestroy() {
            super.onDestroy();
            if (mHelper != null)
                mHelper.dispose();
            mHelper = null;
        }
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    }














关键字

上一篇: AS3!INT

下一篇: CSS3 (columns)