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付费接入已完成

posted @ 2014-07-17 10:48  ing...  阅读(370)  评论(0编辑  收藏  举报