前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

money3

作者头像
py3study
发布2020-01-09 19:49:27
5140
发布2020-01-09 19:49:27
举报
文章被收录于专栏:python3python3

主要是对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"/>

代码语言:javascript
复制
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;
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档