电信,移动,联通连接计费(android平台)

联通接入计费:
AndroidMinifast.xml
<application  
        android:allowBackup="true"  
        android:icon="@drawable/ic_launcher"  
        android:label="@string/app_name"  
        android:theme="@style/AppTheme" >  
        <activity  
            android:name="com.example.blogforlt.MainActivity"  
            android:label="@string/app_name" >  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  
 
                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
        </activity>  
         
        <!-- 应用开发者ID   cpId: -->  
        <meta-data  
            android:name="cpId"  
            android:value="cpid:XXXX" >  
        </meta-data>  
 
        <!-- 应用ID   AppId: -->  
        <meta-data  
            android:name="AppId"  
            android:value="appid:XXXX" >  
        </meta-data>  
 
        <!-- 渠道伪码(线下渠道) -->  
        <meta-data android:name="fidsms"  
            android:value="fidsms:XXXXX" >  
        </meta-data>  
         
    </application>  
<!--联网 等,必须加                  -->     
 <uses-permission android:name="android.permission.INTERNET"/>  
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  
 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>  
 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>  
 <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>  
 <uses-permission android:name="android.permission.SEND_SMS"/>  
 <uses-permission android:name="android.permission.READ_PHONE_STATE"/>  
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

 
 
 
MainActivity.java 需要支付的activity页面
    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);  
        fiap.android_Pay(1);  
       }  
      });  
      
      
      
Fiap.java 执行支付的逻辑代码
    package com.example.blogforlt;  
      
    import com.multimode_billing_sms.ui.MultiModePay;  
    import com.multimode_billing_sms.ui.MultiModePay.SMSCallBack;  
    import android.app.Activity;  
    import android.os.Handler;  
    import android.util.Log;  
    import android.widget.Toast;  
      
    public class Fiap {  
       
     private Activity mActivity;  
     //计费点短代码  
     private String charge_Point;  
     //道具名称  
     private String itemID= "";  
     //道具金额  
     private int coin;  
       
     public Fiap(Activity activity){  
        
      mActivity = activity;  
       
     }  
      
       
     //index是三种计费点对应的标识  
     public void android_Pay(int index){  
        
      switch (index) {  
      
      case 0:  
       //激活游戏  
       //此处计费点填写移动平台申请的计费点的后三位作为计费点索引  
       charge_Point = "000";  
       itemID = "激活游戏";  
       coin = 6;  
       break;  
      case 1:  
       charge_Point = "001";  
       itemID = "购买200兑换币";  
       coin = 2;  
       break;  
      case 2:  
       charge_Point = "002";  
       itemID = "购买400兑换币";  
       coin = 3;  
       break;  
      
      default:  
       break;  
      }  
        
      fiapHandler.sendEmptyMessage(1);  
        
     }  
       
     Handler fiapHandler = new Handler(){  
      public void handleMessage(android.os.Message msg) {  
       if (msg.what == 1) {  
        MultiModePay.getInstance().setEnableSend(true);// 调用SMS方法前必须调用  
        // 参数依次为:当前界面的Context,公司名字,电话号码,游戏名,道具名,道具金额(元),计费点,回调接口  
        MultiModePay.getInstance().sms(mActivity, "北京XXXXXX有限公司",  
          "010-XXXXXXXX", "XXX", itemID, String.valueOf(coin),  
          charge_Point, new MsgCallBack());  
       }  
      };  
     };  
       
     class MsgCallBack implements SMSCallBack {  
      
      @Override  
      public void ButtonCLick(int arg0) {  
       // TODO Auto-generated method stub  
      
      }  
      
      @Override  
      public void SmsResult(int result, String arg1) {  
       // TODO Auto-generated method stub  
       if (result == MultiModePay.SUCCESS) {  
          
        // 支付成功的处理,直接执行支付成功后的逻辑,此处为了体现出支付成功弹了个Toast,正式使用时不要有任何提示  
        Toast.makeText(mActivity, "支付成功", Toast.LENGTH_LONG).show();  
      
        Log.i("cn.catcap.qhta", "联通方式支付成功。。。。");  
      
       } else if (result == MultiModePay.FAILD) {  
      
        Log.i("cn.catcap.qhta", "联通方式支付失败。。。。");  
      
       }  
      
       MultiModePay.getInstance().DismissProgressDialog(); // 取消进度条,此行必须有才能回到游戏界面  
      }  
     }  
    }  
    
1.联通支付是不需要自己标识软硬计费点的,当平台申请计费点的时候会提交每个计费点是否允许重复支付(即软硬计费点),支付时我们只需要传入相应的计费点即可,平台会帮我们记录哪个是软计费点,哪个是硬计费点。

2.联通需将premessable.txt文件copy到工程assets目录下,用来配置渠道,每个渠道对应不同的渠道号,例如联通渠道号为:“00012243”。

3.游戏付费完成后直接结束付费,勿添加额外的提示信息,例如:Toast,AlertDialog等。

4.AndroidManifest.xml中正确配置应用开发者ID,应用ID,AppID,渠道伪码(线下渠道)后即可进行测试付费(0.01元)
    
    


电信 接入 付费
    
AndroidManifest.xml:  
 
 
<application  
        android:allowBackup="true"  
        android:icon="@drawable/ic_launcher"  
        android:label="@string/app_name"  
        android:theme="@style/AppTheme" >  
        <activity  
            android:name="com.example.blogfordx.MainActivity"  
            android:label="@string/app_name" >  
              
        </activity>  
          
        <!-- 电信 -->  
<activity android:name="cn.game189.sms.SMS" android:theme="@android:style/Theme.Dialog" android:screenOrientation="portrait" ></activity>  
<!-- 电信 -->  
<!-- 启动闪屏界面 -->  
<activity  
            android:name="com.example.blogfordx.EgameSplash"  
            android:configChanges="orientation"  
            android:screenOrientation="portrait"  
            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>  
        </activity>  
    </application>  
      
    <!-- 单机游戏不能有Internet等无关权限,若有特殊要求,平台申请时注明,审核通过后方可添加 -->  
<uses-permission android:name="android.permission.READ_PHONE_STATE" />  
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
<uses-permission android:name="android.permission.SEND_SMS" />     

MainActivity.java
    package com.example.blogfordx;  
      
    import android.net.Uri;  
    import android.os.Bundle;  
    import android.app.Activity;  
    import android.content.Intent;  
    import android.view.View;  
      
    public class MainActivity extends Activity {  
      
        @Override  
        protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.activity_main);  
            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);  
                            fiap.android_Pay(1);  
                        }  
                    });   
        }  
      
    }  



Fiap.java

    package com.example.blogfordx;  
      
    import cn.game189.sms.SMS;  
    import cn.game189.sms.SMSListener;  
    import android.app.Activity;  
    import android.os.Handler;  
    import android.util.Log;  
    import android.widget.Toast;  
      
    public class Fiap {  
        private Activity mActivity;  
        // 是否允许重复计费  
        private boolean isRepeat;  
        // 计费点短代码  
        private String charge_Point;  
        // 道具名称  
        private String itemID = "";  
        // 支付金额  
        private int coin = 0;  
      
        public Fiap(Activity activity) {  
            mActivity = activity;  
        }  
      
        // index是三种计费点对应的标识  
        // 此处只有购买200兑换币是可支付的,正式使用时请填写自己的申请的计费点短代码  
        public void android_Pay(int index) {  
            switch (index) {  
      
            case 0:  
                // 激活游戏  
                isRepeat = false;  
                // 此处计费点填写电信平台申请的计费点的后三位作为计费点索引  
                charge_Point = "000";  
                itemID = "激活游戏";  
                coin = 4;  
                break;  
            case 1:  
                isRepeat = true;  
                charge_Point = "0211C001271102517996991102517990080115127000000000000000000000000000";  
                itemID = "购买200兑换币";  
                coin = 2;  
                break;  
            case 2:  
                isRepeat = true;  
                charge_Point = "002";  
                itemID = "购买400兑换币";  
                coin = 3;  
                break;  
      
            default:  
                break;  
            }  
            fiapHandler.sendEmptyMessage(1);  
        }  
      
        Handler fiapHandler = new Handler() {  
            public void handleMessage(android.os.Message msg) {  
                if (msg.what == 1) {  
                    if (SMS.checkFee(itemID, mActivity, new SMSListener() {  
      
                        public void smsOK(String feeName) {  
                            // 短代发送成功,此处填写支付成功后的逻辑  
                            Log.i("SMSListener", "模式" + feeName + "已计费完成,关卡已打开.");  
                            Toast.makeText(mActivity, "支付成功", Toast.LENGTH_LONG)  
                                    .show();  
                        }  
      
                        public void smsFail(String feeName, int errorCode) {  
                            // 短代发送失败,不给道具或不放行关卡  
                            Log.e("SMSListener", "计费失败!模式:[" + feeName + "] 错误码:"  
                                    + errorCode);  
                        }  
      
                        public void smsCancel(String feeName, int errorCode) {  
                            Log.e("SMSListener", "用户点击取消!计费点:" + feeName + " 错误码:"  
                                    + errorCode);  
                        }  
                    }, charge_Point, itemID + ",点击确定将会发送一条" + coin + "元短信,不含信息费.",  
                            "短信已成功发送", isRepeat)) {  
                        // 已计过费  
      
                    }  
                }  
            };  
        };  
      
    }      
    
    
移动接入计费:

AndroidManifest.xml:
<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
        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
        //移动支付  
    //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);  
       }  
      };  
     };  
       
    }   
    
    
    
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值