注意事项:
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.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
- 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付费接入已完成