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

时间:2023-03-09 05:05:06
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

  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"/>

MainActivity.java

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