• Android支付接入(二):移动游戏基地


    原地址:http://blog.csdn.net/simdanfeg/article/details/9011863

    上篇博文跟大家一起走了一遍支付宝支付,今天我们来看看移动支付。众所周知目前付费通道的龙头老大还要当属三大运营商(移动、联通、电信)。运营商接入代码相对简单,但琐碎的要求太多,涉及到启动界面、桌面图标、主界面、退出界面等。移动游戏基地后台地址:http://g.10086.cn/

    部分截图

    注意事项:
     
    1.移动游戏基地sdk为动态打包,即公司信息,计费点信息都是在申请计费点的时候提交到移动的,而文中提到的计费点索引是移动申请后台看到的真实计费点的后三位(由于此处属于商务负责,本人无法登陆后台所以无法提供截图,见谅)。
    2.注意文中提到的启动游戏界面前先启动移动界面,退出游戏时显示移动的退出确认界面。
    3.注意主界面需要显示的:开始游戏,设置,帮助,关于,更多游戏,退出必有选项。

    好了,继续贴代码:

    AndroidManifest.xml配置:

    [html] view plaincopy
     
    <application  
            android:allowBackup="true"  
            android:icon="@drawable/ic_launcher"  
            android:label="@string/app_name"  
            android:theme="@style/AppTheme" >  
            <activity  
                android:name="com.example.blogforyd.MainActivity"  
                android:label="@string/app_name" >  
            </activity>  
              
            <!-- 移动所需Activity注册 -->  
            <activity  
                android:name="cn.emagsoftware.gamebilling.activity.GameOpenActivity"  
                android:screenOrientation="sensor"  
                android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >  
    //移动游戏基地需要启动游戏前先启动移动的闪屏界面,所以游戏主入口注册移到了这里  
                <intent-filter>  
                    <action android:name="android.intent.action.MAIN" />  
      
      
                    <category android:name="android.intent.category.LAUNCHER" />  
                </intent-filter>  
                <intent-filter>  
                    <action android:name="android.intent.action.CHINAMOBILE_OMS_GAME" />  
      
      
                    <category android:name="android.intent.category.CHINAMOBILE_GAMES" />  
                </intent-filter>  
            </activity>  
            <!-- 移动所需Activity注册-->  
              
        </application>  
      
      
        <!-- 移动所需权限注册 -->  
        <uses-permission android:name="android.permission.INTERNET" />  
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >  
        </uses-permission>  
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >  
        </uses-permission>  
        <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" >  
        </uses-permission>  
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
        <uses-permission android:name="android.permission.SEND_SMS" />  
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />  
        <uses-permission android:name="android.permission.READ_CONTACTS" />  
        注意:如果下边这行报错,clean一下项目就行了,可以无视  
        <uses-permission android:name="android.permission.WRITE_APN_SETTINGS" >  
        </uses-permission>  
        <!-- 移动所需权限注册 -->  

     

    MainActivity

    [java] view plaincopy
     
    package com.example.blogforyd;  
      
    import cn.emagsoftware.gamebilling.api.GameInterface;  
    import cn.emagsoftware.gamebilling.api.GameInterface.GameExitCallback;  
    import android.os.Bundle;  
    import android.app.Activity;  
    import android.view.KeyEvent;  
    import android.view.View;  
      
    public class MainActivity extends Activity {  
        @Override  
        protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.activity_main);  
            // 调用初始化移动支付,否则无法启动支付界面(此方法最好放到启动游戏的时候调用)  
            GameInterface.initializeApp(this);  
            findViewById(R.id.button1).setOnClickListener(  
                    new View.OnClickListener() {  
                        @Override  
                        public void onClick(View v) {  
                            // TODO Auto-generated method stub  
                            Fiap fiap = new Fiap(MainActivity.this);  
      
                            // 需要购买什么道具传进去相应的index,此处传0为激活游戏  
                            fiap.android_Pay(0);  
                        }  
                    });  
        }  
      
        @Override  
        public boolean onKeyDown(int keyCode, KeyEvent event) {  
            // TODO Auto-generated method stub  
            if (keyCode == KeyEvent.KEYCODE_BACK) {  
                exit_game();  
            }  
            return super.onKeyDown(keyCode, event);  
        }  
      
        // 退出游戏  
        public void exit_game() {  
            GameInterface.exit(MainActivity.this, new GameExitCallback() {  
                @Override  
                public void onConfirmExit() {  
                    System.exit(0);  
                }  
      
                @Override  
                public void onCancelExit() {  
                }  
            });  
        }  
      
        // 是否开启音效  
        public boolean is_open_music() {  
            return GameInterface.isMusicEnabled();  
        }  
    }  

    Fiap.java

    [java] view plaincopy
     
    //移动支付  
    //2013-04-28  
    package com.example.blogforyd;  
    import cn.emagsoftware.gamebilling.api.GameInterface;  
    import cn.emagsoftware.gamebilling.api.GameInterface.BillingCallback;  
    import android.app.Activity;  
    import android.os.Handler;  
    import android.os.Message;  
    import android.util.Log;  
    import android.widget.Toast;  
    public class Fiap {  
       
     private Activity mActivity;  
     private boolean isRepeat;  
     private String charge_Point;  
       
     public Fiap(Activity activity){  
        
      mActivity = activity;  
       
     }  
       
     //index是三种计费点对应的标识  
     public void android_Pay(int index){  
        
      switch (index) {  
      case 0:  
       //激活游戏  
       isRepeat = false;  
       //此处计费点填写移动平台申请的计费点的后三位作为计费点索引  
       charge_Point = "000";  
       break;  
      case 1:  
       isRepeat = true;  
       charge_Point = "001";  
       break;  
      case 2:  
       isRepeat = true;  
       charge_Point = "002";  
       break;  
      case 3:  
       isRepeat = true;  
       charge_Point = "003";  
       break;  
      default:  
       break;  
      }  
        
      fiapHandler.sendEmptyMessage(1);  
        
     }  
       
     Handler fiapHandler = new Handler(){  
        
      public void handleMessage(Message msg) {  
         
       if (msg.what == 1) {  
          
        BillingCallback callBack = new BillingCallback() {  
         @Override  
         public void onBillingFail(String arg0) {  
          // TODO Auto-generated method stub  
          //此处表示支付失败  
          Log.i("result of pay", arg0);  
         }  
         @Override  
         public void onBillingSuccess(String arg0) {  
          // TODO Auto-generated method stub  
          //此处为支付成功逻辑  
          Toast.makeText(mActivity, "支付成功", Toast.LENGTH_LONG).show();  
         }  
         @Override  
         public void onUserOperCancel(String arg0) {  
          // TODO Auto-generated method stub  
          //此处表示用户取消支付  
          Log.i("result of pay", arg0);  
         }  
        };  
        //第一个参数为:触发计费接口的Context对象  
        //第二个参数为:选择采用短信计费还是联网计费(true为短信,false为联网)  
        //第三个参数为:计费点索引  
        //第四个参数为:支付结果回调  
        GameInterface.doBilling(mActivity, true, isRepeat, charge_Point,callBack);  
       }  
      };  
     };  
       
    }   

    至此移动计费接入就完成了

  • 相关阅读:
    JQuery计算当前Dom结构在浏览器窗口中被显示方法(懒加载原理)
    图片png24格式在IE6下半透明解决办法
    CSS方式支持IE6的fixed样式
    ecshop模板首页或列表页显示商品简单描述
    ecshop静态、 ecshop伪静态、ecshop伪静态设置详细方法、ECSHOP静态化方法
    批量清除ecshop全部商品的精品 新品和热销属性的方法
    ecshop商品页显示累计销售量,ecshop显示商品销售总数量的方法
    常用JQuery插件整理、前端适用
    ecshop销售排行榜显示销售 销量的商品的件数方法
    Ecshop IIS Rewrite伪静态规则
  • 原文地址:https://www.cnblogs.com/123ing/p/3850454.html
Copyright © 2020-2023  润新知