首页 > 代码库 > Android支付接入(四):联通VAC计费

Android支付接入(四):联通VAC计费

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

注意事项:

1.联通支付是不需要自己标识软硬计费点的,当平台申请计费点的时候会提交每个计费点是否允许重复支付(即软硬计费点),支付时我们只需要传入相应的计费点即可,平台会帮我们记录哪个是软计费点,哪个是硬计费点。

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

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

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

 

AndroidManifest.xml

[html] view plaincopy
 
  1. <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"/>  

     

[html] view plaincopy
 
  1.    
[html] view plaincopy
 
  1.    

 

MainActivity.java

 

[java] view plaincopy
 
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 [java] view plaincopy 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(); // 取消进度条,此行必须有才能回到游戏界面    }   }  }  

 

至此,Android三大运营商的sdk付费接入已完成