上篇博文跟大家一起走了一遍支付寶支付,今天我們來看看移動支付。衆所周知目前付費通道的龍頭老大還要當屬三大運營商(移動、聯通、電信)。運營商接入代碼相對簡單,但瑣碎的要求太多,涉及到啓動界面、桌面圖標、主界面、退出界面等。移動遊戲基地後臺地址:http://g.10086.cn/
部分截圖
好了,繼續貼代碼:
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.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>
- <!-- 移動所需權限註冊 -->
MainActivity
- 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;
- public class MainActivity extends Activity {
- @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();
- }
- }
Fiap.Java
- //移動支付
- //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;
- public class Fiap {
- private Activity mActivity;
- private boolean isRepeat;
- private String charge_Point;
- public Fiap(Activity activity){
- mActivity = activity;
- }
- //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);
- }
- };
- };
- }
至此移動計費接入就完成了