Android支付接入(二):移动游戏基地

原地址:http://blog.csdn.net/simdanfeg/article/details/9011863

上篇博文跟大家一起走了一遍支付宝支付,今天我们来看看移动支付。众所周知目前付费通道的龙头老大还要当属三大运营商(移动、联通、电信)。运营商接入代码相对简单,但琐碎的要求太多,涉及到启动界面、桌面图标、主界面、退出界面等。移动游戏基地后台地址:http://g.10086.cn/

部分截图

注意事项:

1.移动游戏基地sdk为动态打包,即公司信息,计费点信息都是在申请计费点的时候提交到移动的,而文中提到的计费点索引是移动申请后台看到的真实计费点的后三位(由于此处属于商务负责,本人无法登陆后台所以无法提供截图,见谅)。

2.注意文中提到的启动游戏界面前先启动移动界面,退出游戏时显示移动的退出确认界面。

3.注意主界面需要显示的:开始游戏,设置,帮助,关于,更多游戏,退出必有选项。

好了,继续贴代码:

AndroidManifest.xml配置:

[html] view plaincopy

<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

[java] view plaincopy

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

[java] view plaincopy

//移动支付
//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);
   }
  };
 };  

}   

至此移动计费接入就完成了

Android支付接入(二):移动游戏基地

时间: 2024-10-22 18:54:03

Android支付接入(二):移动游戏基地的相关文章

Android支付接入(三):电信爱游戏支付

原地址:http://blog.csdn.net/simdanfeg/article/details/9011977 注意事项: 1.电信要求必须先启动电信的闪屏界面 2.非网络游戏不允许有Interent权限 3.电信没有提供测试计费点(小于一元的),文中index1是一个真实计费点(2元),支付会进行真实计费 [html] view plaincopy AndroidManifest.xml: <application android:allowBackup="true" a

Android支付接入(一):支付宝

原地址:http://blog.csdn.net/simdanfeg/article/details/9011603 转载之前我想深深地感谢屌丝哥 相信相同过App获取利润的都会需要接入计费SDK,下边就跟大家走一遍完整的支付宝SDK接入,支付系列均通过计费Button触发,计费所有代码均放到一个java文件实现,这样虽然会有点违背java面向对象及封装性,但这样做的一个好处是可以快速集成到不同的游戏中,将改动的文件降到最低,各有利弊吧,如果大家有什么更好的方法,望一起交流,好了,废话不多说了,

Android支付接入(五):机锋网

原地址:http://blog.csdn.net/simdanfeg/article/details/9012083 前边已经陆续跟大家走了一遍运营商和支付宝付费接入,今天跟大家一起看看机锋网的支付接入.其实付费接入本身并没有太多需要注意的地方,做的多了以后你会发现套路都是大同小异的.而需要注意的地方在于怎么跟游戏兼容及后期的维护,包括增减支付方式.现在谈下我个人理解(说的不对希望大家猛喷),付费界面及逻辑尽量不要给一个单独的Activity,因为 1.界面的频繁跳转会费时(尤其对于用cocos

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

原地址:http://blog.csdn.net/simdanfeg/article/details/9012031 注意事项: 1.联通支付是不需要自己标识软硬计费点的,当平台申请计费点的时候会提交每个计费点是否允许重复支付(即软硬计费点),支付时我们只需要传入相应的计费点即可,平台会帮我们记录哪个是软计费点,哪个是硬计费点. 2.联通需将premessable.txt文件copy到工程assets目录下,用来配置渠道,每个渠道对应不同的渠道号,例如联通渠道号为:“00012243”. 3.游

Android支付接入(7):Google In-app-Billing

今天跟大家一起看下Google的in-app Billing V3支付. 如果没有GooglePlay此处附上安装Google Play的一键安装器的链接(需要Root权限):http://www.muzhiwan.com/com.muzhiwan.gsfinstaller-86095.html 之前用过Google BillingV2,感觉不太爽.V2版支付走的是异步通知,不能即时得到支付结果,支付.查询接口太过复杂,还有就是没找到RestoreOrder接口,因此选择使用V3版,网上大部分都

Android支付接入之Google In-app-Billing

因为公司需要接入Google的应用内支付(即Google的in-app Billing V3),接入过程中查阅了很多的文章,也遇到很多的问题.故此想和大家分享及交流一下心得,好了废话不多说了下面我们开始接入google的应用内支付. 第一步:准备工作 首先想要使用google的支付,首先必须要有一部安装了google play服务的测试机,在这里提供了三个方法: 1)如果有小米的测试机最好因为小米的系统完整的保留了google play服务. 2)如果没有可以看下此处附上的连接:http://z

Unity3d Android SDK接入解析(二)Unity3d Android SDK的设计与两种接入方式

一.前言 上篇说清楚了Unity和Android调用的方式,但很多实际接入的部分没有讲的很详细,因为重头在这篇,会详细讲述具体接入Android SDK的方式,和怎么去做一个方便Unity接入的SDK. 传送门: 前篇:Unity3d 与 Android之间的互相调用 http://blog.csdn.net/yang8456211/article/details/51331358 后篇:Unity3d Android SDK接入解析(三)接入Android Library的理解 http://

Unity3d Android SDK接入解析(四)通用的Android SDK接入中间件

一.前言 接入Android SDK正式告一段落,在这段时间里面,依次接入了华为.应用宝.小米.360等等大大小小十来个SDK,也算对Unity接入渠道SDK有了较为全面的理解,对各个渠道的坑也算深有体会....在接入过程中时间比较紧张,没办法抽空来进行总结深思.今天正好有空,便对之前的接入SDK的代码进行了一次重构,写了一个比较通用的Unity接入Android SDK的中间件,前人栽树,后人乘凉. 进入正题 如果有对一些只是有疑问的,可以看看我之前的三篇文章: 传送门: Unity3d An

Android之十二微信UI界面设计

Android之十二微信UI界面设计 corners_bg.xml <span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color=&qu