Android支付接入(二):移动游戏基地
来源:互联网 发布:大势至软件 编辑:程序博客网 时间:2024/05/22 03:31
上篇博文跟大家一起走了一遍支付宝支付,今天我们来看看移动支付。众所周知目前付费通道的龙头老大还要当属三大运营商(移动、联通、电信)。运营商接入代码相对简单,但琐碎的要求太多,涉及到启动界面、桌面图标、主界面、退出界面等。在百度网盘中:http://pan.baidu.com/share/link?shareid=422365&uk=473193131我会为大家共享运营商接入的要求规范。移动游戏基地后台地址:http://g.10086.cn/
AndroidManifest.xml配置:
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> <!-- 移动所需权限注册 --> @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(); }
}
//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);
}
};
};
}
至此移动计费接入就完成了,然后你就会面临着n次提交然后n次被驳回然后再n次修改,然后就没有然后了。。。我这样贴代码的方式看着有点不太爽,博文不断改进中,希望大家看到这篇博文的多提提意见,欢迎大家批评指正
为了让大家看的更清楚,以后的博文中我会配上截图。
注意事项:
1.移动游戏基地sdk为动态打包,即公司信息,计费点信息都是在申请计费点的时候提交到移动的,而文中提到的计费点索引是移动申请后台看到的真实计费点的后三位(由于此处属于商务负责,本人无法登陆后台所以无法提供截图,见谅)。
2.注意文中提到的启动游戏界面前先启动移动界面,退出游戏时显示移动的退出确认界面。
3.注意主界面需要显示的:开始游戏,设置,帮助,关于,更多游戏,退出必有选项。
好了,继续贴代码:
AndroidManifest.xml配置:
<application
//移动游戏基地需要启动游戏前先启动移动的闪屏界面,所以游戏主入口注册移到了这里
MainActivity:游戏入口Activity
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;
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 {
}
Fiap.java:移动支付逻辑文件
//移动支付
//2013-04-28
package com.example.blogforyd;
//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;
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;
}
}
- Android支付接入(二):移动游戏基地
- Android支付接入(二):移动游戏基地
- Android支付接入(二):移动游戏基地
- Android支付接入(二):移动游戏基地
- Android支付接入(二):移动游戏基地
- Android支付接入(二):移动游戏基地
- Android支付接入(二):移动游戏基地
- Android支付接入(二):移动游戏基地
- Android支付接入(二):移动游戏基地
- Android支付接入(二):移动游戏基地
- Android支付接入(二):移动
- Unity3D渠道接入系列:(一)移动游戏基地
- Android移动游戏基地
- Unity接入移动MM支付(Android)
- Android开发 接入支付宝移动支付
- android接入支付宝移动端支付
- Android——支付宝SDK调用(移动应用接入支付宝支付,提供安全、便捷的支付能力)
- Android App支付系列(二):支付宝SDK接入详细指南(附官方支付demo)
- Android支付接入(一):支付宝
- Java 锁LOCK&多线程安全
- 【protocol buffers】Invalid embedded descriptor for ".proto".Dependencies passed (Protobufer)解决办法
- Spring多数据源配置
- Linux驱动中,probe函数何时被调用
- Android支付接入(二):移动游戏基地
- volatile是什么
- JSTL 核心标签库 使用
- curl POST demo
- gcov、lcov与genhtml 使用心得
- Linux下svn搭建配置流程
- 安装node.js+express for win7的Web开发环境配置
- 删除MyEclipse Configuration Center中Personal sites
- 银行业务调度系统学习笔记