GooglePlay支付使用总结2

支付内容详解

接上一篇的内容,本篇讲解具体支付里面的东西。

本人由于公司项目需要,我是在fragment里面使用支付功能的,官方的demo,是在Activity里面进行调用的。

1 构造IabHelper实例。

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mHelper = new IabHelper(getActivity(), MyApplication.GOOGLE_APP_BILLING_KEY);
        mHelper.enableDebugLogging(true);
        mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
            public void onIabSetupFinished(IabResult result) {
                if (!result.isSuccess()) {
                    // Oh noes, there was a problem.
                    Log.d(TAG, "Problem setting up In-app Billing: " + result);
                    return;
                }
                if (mHelper == null) return;
                // Hooray, IAB is fully set up!
                initQueryItemInfos();
            }
        });
        Log.d(TAG, mHelper.toString());
    }

需要实例化IabHelper对象,传入的参数为当前应用的public_key的base64编码值,在google play后台存放的有。

接着启动debug

添加一个监听器,做一些初始化的工作,上面的代码的意思,说的是构建完IabHelper后,触发initQueryItemInfos()的任务。

说一下我这种处理的需求,我们需要把产品展示给用户,方便用户选择,但是怎么展示给用户呢,我们可以在google play后台配置产品的具体信息,也可以进行修改。但是由于我们可能要修改产品的价钱,所以不可能把产品的信息控制在代码里面,这样维护性不好,我们的处理方式是,将产品的ID集合存放在服务器端,服务器端开一个接口,客户端负责调用此接口,就可以获取到相关的id数据了,然后通过id数据,调用google play的接口,获取到完整的产品信息,如描述,数量,价钱等等。(这样做的好处,服务器端统一控制,可以随时控制产品的变化,客户端如android,ios就只需要根据返回来的产品id,去调用自己相关支付技术的接口,就可以达到效果了。)

为了方便说明,我贴一下,查询的某一个产品id,得到的打印信息。

**

SkuDetails:{“productId”:”cash_35”,”type”:”inapp”,”price”:”US$ 0.99”,”price_amount_micros”:99,”price_currency_code”:”USD”,”title”:”Some infos”,”description”:”35 count”}

**

我们关注的是产品的ID,还有price。

mAdditionalSkuList.add(CASH_1);
mAdditionalSkuList.add(CASH_2);
mAdditionalSkuList.add(CASH_5);
mAdditionalSkuList.add(CASH_10);
mAdditionalSkuList.add(CASH_20);
mAdditionalSkuList.add(CASH_35);
mAdditionalSkuList.add(CASH_50);
mAdditionalSkuList.add(CASH_100);
mHelper.queryInventoryAsync(true, mAdditionalSkuList,
         mQueryFinishedListener);

当调用我们这个initQueryItemInfos()方法的时候,就回把产品id添加到list里面,调用mHelper.queryInventoryAsync查询产品信息的方法,方法通过mQueryFinishedListener回调,我们看一下,这个监听器里面的相关内容。

IabHelper.QueryInventoryFinishedListener
            mQueryFinishedListener = new IabHelper.QueryInventoryFinishedListener() {
        public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
            if (result.isFailure()) {
                --- handle error
                Log.d(TAG, "result error");
                return;
            }
            List<Bean> beanList = new ArrayList<>();
            for (int i = 0; i < mAdditionalSkuList.size(); i++) {
                SkuDetails skuDetails = inventory.getSkuDetails(mAdditionalSkuList.get(i));
                if (skuDetails != null) {
                    Log.d(TAG, skuDetails.toString());
                    shouCashList.add(new Gson().fromJson(skuDetails.getJson(), Bean.class));
                }
            }
            --- update the UI
            mGridAdapter.setGridData(beanList);
            mGridView.setAdapter(mGridAdapter);
         mGridView.setOnItemClickListener(MyFragment.this);
        }
    };


监听器的作用是,把返回回来的skuDetails对象,解析为我们自己的实体对象,作为listView或者是我这里面的GridView的数据,之后就是设置数据到我们的BaseAdapter里面。再让GridView与Adapater关联,做一些处理工作。

BaseAdapter的实现类,就是重写了几个方法,这种应该都是老话题了。就是些getView方法里面,存放实体Bean的值,到我们的ImageView,TextView里面。这个地方的代码不贴出来了。

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_dialog_list, container, false);
        mGridView = (GridView) view.findViewById(R.id.shoucash_grid_view);
        mGridAdapter = new GridAdapter(getActivity());
        return view;
    }

OnCreateView里面的代码,就是构造了我们的Adapter,数据的设置是放在前面的查询借口的回调监听器里面了。

这样当我们的程序加载完了fragment的时候,我们就能够看到页面上的产品列表了,包括产品的价钱,名称等信息。

接着就是我们的购买功能了,我们放在下一篇讲吧,已经很晚了,该休息了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-10 03:02:39

GooglePlay支付使用总结2的相关文章

GooglePlay支付相关资料部分整理

本篇只是记录当出找资料的点点滴滴.未做详细整理,只能算是收集. google play 应用内支付 http://developer.android.com/training/in-app-billing/preparing-iab-app.html#Connect http://developer.android.com/training/in-app-billing/index.html Go to the Google Play Developer Console site http://

GooglePlay支付使用总结1

使用前说明 google play 支付需要使用google的服务,对于国内普通用户而言,这是不现实的.手机需要有完整的google服务,自己可以刷机解决,或者购买港版,或者美版的手机,如google的nexus系列产品. 另外使用中,需要有vpn,国内的网络是没有办法访问goole服务的.(手机端需要自己添加vpn,方可访问) 支付总体说明 其实详细的支付文档http://developer.android.com/google/play/billing/index.html 在这里面已经有了

google支付回调验证

原文链接: https://my.oschina.net/lemonzone2010/blog/398736 Google支付问题 20150218,挂机的日本服务器出现google支付被刷单现象,虽然目前进行的修补,但是这个问题并没有完全从根源上解决.并且公司以前的GooglePlay支付也有不完善的地方,在SDK端给支付回调发送支付信息后,支付回调程序没有调用Google API进行订单验证.因此Google支付流程需要进行完善. Google支付解决方案 上面的支付问题,Google有自己

google支付接口被刷以及解决方案 google支付查单

google支付接口被刷以及解决方案 google支付回调验证 Google支付问题 20150218,挂机的日本服务器出现google支付被刷单现象,虽然目前进行的修补,但是这个问题并没有完全从根源上解决.并且公司以前的GooglePlay支付也有不完善的地方,在SDK端给支付回调发送支付信息后,支付回调程序没有调用Google API进行订单验证.因此Google支付流程需要进行完善. Google支付解决方案 上面的支付问题,Google有自己的解决方案,就是根据订单号去向Google A

Using OAuth 2.0 for Web Server Applications, verifying a user&#39;s Android in-app subscription

在写本文之前先说些题外话. 前段时间游戏急于在GoolePlay上线,明知道如果不加Auth2.0的校验是不安全的还是暂时略过了这一步,果然没几天就发现后台记录与玩家实际付费不太一致,怀疑有玩家盗刷游戏元宝等,并且真实的走过了GooglePlay的所有支付流程完成道具兑换,时间一长严重性可想而知.经过查阅大量google官方文档后把代码补上,并在这里记录下OAuth 2.0 的使用,Google提供了OAuth2.0的好几种使用用途,每种使用方法都有些不同,具体可以看下这篇博客.在这里只写OAu

【实例图文详解】OAuth 2.0 for Web Server Applications

原文链接:http://blog.csdn.net/hjun01/article/details/42032841        OAuth 2.0 for Web Server Applications, verifying a user's Android in-app subscription 在写本文之前先说些题外话. 前段时间游戏急于在GoolePlay上线,明知道如果不加Auth2.0的校验是不安全的还是暂时略过了这一步,果然没几天就发现后台记录与玩家实际付费不太一致,怀疑有玩家盗刷

AppStore与GooglePlay游戏安全支付服务器模式详细流程

AppStore与GooglePlay游戏安全支付服务器模式详细流程 整体拓扑架构图见:http://www.cnblogs.com/legendstudio/p/4917617.html

GooglePlay - 排行榜及支付接入

前言 Google Play应用商店在国外Android市场中地位基本与AppStore在IOS中的地位一致,为此考虑国外的应用时,Android首要考虑的是接入GooglePlay的排行榜等支持. 同样的由于Google未进入大陆市场,在大陆还是需要VPN才可以访问这些服务. 登录 官方文档: https://developers.google.com/games/services/android/quickstart 1.设置 AndroidManifest.xml中的标签项. <meta-

SDK接入(2)之Android Google Play内支付(in-app Billing)接入

SDK接入(2)之Android Google Play内支付(in-app Billing)接入 继上篇SDK接入(1)之Android Facebook SDK接入整理完Facebook接入流程之后,再来整理下Google Play in-app Billing支付的接入流程.众所周知,Google Play是Google Android官方的应用商店,也是将应用发布到世界各地一个重要的渠道.支付作为盈利的一个重要手段,可以借助Google in-app Billing api来达到目的.