文档章节

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

piggybear
 piggybear
发布于 2015/02/16 10:28
字数 1080
阅读 15
收藏 0
  上篇博文跟大家一起走了一遍支付宝支付,今天我们来看看移动支付。众所周知目前付费通道的龙头老大还要当属三大运营商(移动、联通、电信)。运营商接入代码相对简单,但琐碎的要求太多,涉及到启动界面、桌面图标、主界面、退出界面等。在百度网盘中: http://pan.baidu.com/share/link?shareid=422365&uk=473193131 我会为大家共享运营商接入的要求规范。移动游戏基地后台地址: http://g.10086.cn/
注意事项:

1.移动游戏基地sdk为动态打包,即公司信息,计费点信息都是在申请计费点的时候提交到移动的,而文中提到的计费点索引是移动申请后台看到的真实计费点的后三位(由于此处属于商务负责,本人无法登陆后台所以无法提供截图,见谅)。
2.注意文中提到的启动游戏界面前先启动移动界面,退出游戏时显示移动的退出确认界面。
3.注意主界面需要显示的: 开始游戏,设置,帮助,关于,更多游戏,退出必有选项。

 

好了,继续贴代码:


AndroidManifest.xml配置:
 
[html]  view plain copy
  1. <application  
  2.        android:allowBackup="true"  
  3.        android:icon="@drawable/ic_launcher"  
  4.        android:label="@string/app_name"  
  5.        android:theme="@style/AppTheme">  
  6.        <activity  
  7.           android:name="com.example.blogforyd.MainActivity"  
  8.           android:label="@string/app_name" >  
  9.        </activity>  
  10.          
  11.        <!-- 移动所需Activity注册-->  
  12.        <activity  
  13.           android:name="cn.emagsoftware.gamebilling.activity.GameOpenActivity"  
  14.           android:screenOrientation="sensor"  
  15.           android:theme="@android :style/Theme.NoTitleBar.Fullscreen">  
  16. //移动游戏基地需要启动游戏前先启动移动的闪屏界面,所以游戏主入口注册移到了这里  
  17.           <intent-filter>  
  18.               <actionandroid:nameactionandroid:name="android.intent.action.MAIN" />  
  19.   
  20.               <categoryandroid:namecategoryandroid:name="android.intent.category.LAUNCHER"/>  
  21.           </intent-filter>  
  22.           <intent-filter>  
  23.               <actionandroid:nameactionandroid:name="android.intent.action.CHINAMOBILE_OMS_GAME"/>  
  24.   
  25.               <categoryandroid:namecategoryandroid:name="android.intent.category.CHINAMOBILE_GAMES"/>  
  26.           </intent-filter>  
  27.        </activity>  
  28.        <!--移动所需Activity注册-->  
  29.          
  30.    </application>  
  31.   
  32.     <!--移动所需权限注册 -->  
  33.    <uses-permissionandroid:nameuses-permissionandroid:name="android.permission.INTERNET" />  
  34.    <uses-permissionandroid:nameuses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE">  
  35.    </uses-permission>  
  36.    <uses-permissionandroid:nameuses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>  
  37.    <uses-permissionandroid:nameuses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE">  
  38.    </uses-permission>  
  39.    <uses-permissionandroid:nameuses-permissionandroid:name="android.permission.CHANGE_NETWORK_STATE">  
  40.    </uses-permission>  
  41.    <uses-permissionandroid:nameuses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  
  42.    <uses-permissionandroid:nameuses-permissionandroid:name="android.permission.SEND_SMS" />  
  43.    <uses-permissionandroid:nameuses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>  
  44.    <uses-permissionandroid:nameuses-permissionandroid:name="android.permission.READ_CONTACTS"/>  
  45.    注意:如果下边这行报错,clean一下项目就行了,可以无视  
  46.    <uses-permissionandroid:nameuses-permissionandroid:name="android.permission.WRITE_APN_SETTINGS">  
  47.    </uses-permission>  
  48.     <!--移动所需权限注册 -->  

MainActivity:游戏入口Activity
[java]  view plain copy
  1. package com.example.blogforyd;  
  2. import cn.emagsoftware.gamebilling.api.GameInterface;  
  3. importcn.emagsoftware.gamebilling.api.GameInterface.GameExitCallback;  
  4. import android.os.Bundle;  
  5. import android.app.Activity;  
  6. import android.view.KeyEvent;  
  7. import android.view.View;  
  8. public class MainActivity extends Activity {  
  9.  @Override  
  10.  protected void onCreate(BundlesavedInstanceState) {  
  11.   super.onCreate(savedInstanceState);  
  12.   setContentView(R.layout.activity_main);  
  13.   //调用初始化移动支付,否则无法启动支付界面(此方法最好放到启动游戏的时候调用)  
  14.   GameInterface.initializeApp(this);  
  15.   findViewById(R.id.button1).setOnClickListener(  
  16.     newView.OnClickListener() {  
  17.      @Override  
  18.      publicvoid onClick(View v) {  
  19.       //TODO Auto-generated method stub  
  20.       Fiapfiap = new Fiap(MainActivity.this);  
  21.         
  22.       //需要购买什么道具传进去相应的index,此处传0为激活游戏  
  23.       fiap.android_Pay(0);  
  24.      }  
  25.     });  
  26.  }  
  27.  @Override  
  28.  public boolean onKeyDown(int keyCode, KeyEventevent) {  
  29.   // TODO Auto-generated methodstub  
  30.   if (keyCode ==KeyEvent.KEYCODE_BACK) {  
  31.    exit_game();  
  32.   }  
  33.   returnsuper.onKeyDown(keyCode, event);  
  34.  }  
  35.  // 退出游戏  
  36.  public void exit_game() {  
  37.   GameInterface.exit(MainActivity.this,new GameExitCallback() {  
  38.    @Override  
  39.    public voidonConfirmExit() {  
  40.     System.exit(0);  
  41.    }  
  42.    @Override  
  43.    public voidonCancelExit() {  
  44.    }  
  45.   });  
  46.  }  
  47.  // 是否开启音效  
  48.  public boolean is_open_music() {  
  49.   returnGameInterface.isMusicEnabled();  
  50.  }  
  51. }  


Fiap.java:移动支付逻辑文件
[java]  view plain copy
  1. //移动支付  
  2. //2013-04-28  
  3. package com.example.blogforyd;  
  4. import cn.emagsoftware.gamebilling.api.GameInterface;  
  5. importcn.emagsoftware.gamebilling.api.GameInterface.BillingCallback;  
  6. import android.app.Activity;  
  7. import android.os.Handler;  
  8. import android.os.Message;  
  9. import android.util.Log;  
  10. import android.widget.Toast;  
  11. public class Fiap {  
  12.    
  13.  private Activity mActivity;  
  14.  private boolean isRepeat;  
  15.  private String charge_Point;  
  16.    
  17.  public Fiap(Activity activity){  
  18.     
  19.   mActivity = activity;  
  20.    
  21.  }  
  22.    
  23.  //index是三种计费点对应的标识  
  24.  public void android_Pay(int index){  
  25.     
  26.   switch (index) {  
  27.   case 0:  
  28.    //激活游戏  
  29.    isRepeat =false;  
  30.    //此处计费点填写移动平台申请的计费点的后三位作为计费点索引  
  31.    charge_Point= "000";  
  32.    break;  
  33.   case 1:  
  34.    isRepeat =true;  
  35.    charge_Point= "001";  
  36.    break;  
  37.   case 2:  
  38.    isRepeat =true;  
  39.    charge_Point= "002";  
  40.    break;  
  41.   case 3:  
  42.    isRepeat =true;  
  43.    charge_Point= "003";  
  44.    break;  
  45.   default:  
  46.    break;  
  47.   }  
  48.     
  49.   fiapHandler.sendEmptyMessage(1);  
  50.     
  51.  }  
  52.    
  53.  Handler fiapHandler = new Handler(){  
  54.     
  55.   public voidhandleMessage(Message msg) {  
  56.      
  57.    if (msg.what== 1) {  
  58.       
  59.     BillingCallbackcallBack = new BillingCallback() {  
  60.      @Override  
  61.      publicvoid onBillingFail(String arg0) {  
  62.       //TODO Auto-generated method stub  
  63.       //此处表示支付失败  
  64.       Log.i("resultof pay", arg0);  
  65.      }  
  66.      @Override  
  67.      publicvoid onBillingSuccess(String arg0) {  
  68.       //TODO Auto-generated method stub  
  69.       //此处为支付成功逻辑  
  70.       Toast.makeText(mActivity,"支付成功", Toast.LENGTH_LONG).show();  
  71.      }  
  72.      @Override  
  73.      publicvoid onUserOperCancel(String arg0) {  
  74.       //TODO Auto-generated method stub  
  75.       //此处表示用户取消支付  
  76.       Log.i("resultof pay", arg0);  
  77.      }  
  78.     };  
  79.     //第一个参数为:触发计费接口的Context对象  
  80.     //第二个参数为:选择采用短信计费还是联网计费(true为短信,false为联网)  
  81.     //第三个参数为:计费点索引  
  82.     //第四个参数为:支付结果回调  
  83.     GameInterface.doBilling(mActivity,true, isRepeat, charge_Point,callBack);  
  84.    }  
  85.   };  
  86.  };  
  87.    
  88. }   


    至此移动计费接入就完成了,然后你就会面临着n次提交然后n次被驳回然后再n次修改,然后就没有然后了。。。我这样贴代码的方式看着有点不太爽,博文不断改进中,希望大家看到这篇博文的多提提意见,欢迎大家批评指正

本文转载自:http://blog.csdn.net/aa294194253/article/details/39211337

共有 人打赏支持
piggybear
粉丝 3
博文 237
码字总数 37552
作品 0
西安
技术主管
私信 提问
详析手游圈从业人员必须知道的行业术语

想要入行手游,首先就需要对整个行业有一个全面的认知。刚刚接触手游行业的时候,也许你会问,业内人士口中的CPS、CPA、APRU值、迭代、冲榜都是什么意思?今天,本文就从手游圈的术语讲起,带...

牵着蜗牛去西藏
2016/03/11
659
3
BestSDK推出一站式SDK搜索服务

BestSDK平台针对目前移动开发应用接入难度大、流程繁琐、上线慢等现状,BestSDK平台已经正式开放,互动式SDK一站式搜索服务,使平台具备开发者SDK的搜索、讨论等系列功能。 BestSDK通过建立移...

老官
2015/04/26
142
1
Android开发:使用EasyPay打造全能移动支付框架

前言 在这之前,笔者发布了两篇移动app支付相关博文,得到一些关注,但是由于博文中代码零碎,有些读者私信博主,以及加笔者qq咨询相关问题。考虑到这些,笔者把之前项目中的支付相关代码从业...

MichaelX
10/30
0
0
Devstore专业评测之91移动开放平台安卓版服务评测

91移动开放平台,是国内首家整合多种手机支付渠道的开放平台,为开发者提供游戏应用接入、游戏应用运营、整合手机支付、社交网络集成等一整套服务,接入91移动开放平台,开发者可以轻松获得用...

sssz
2014/06/03
78
0
基于cocos2d的移动端游戏(android版本)开发

【业务需求】 一、功能需求 1、基于cocos2d引擎的移动端游戏开发(android版本) 2、项目界面交互参考QQ斗地主这种休闲游戏风格 3、服务端开发已完成,只需联调 4、游戏逻辑及规则由我们这边自...

hansen5490
2016/01/19
26
5

没有更多内容

加载失败,请刷新页面

加载更多

day02:管道符、shell及环境变量

1、管道符:"|" 用于将前一个指令的输出作为后一个指令的输入,且管道符后面跟的是命令(针对文档的操作):cat less head tail grep cut sort wc uniq tee tr split sed awk等) [root@localho...

芬野de博客
8分钟前
1
0
Kubernetes系列——Kubernetes 组件、对象(二)

一、Kubernetes 组件 介绍了Kubernetes集群所需的各种二进制组件。 Master 组件 Master组件提供集群的管理控制中心。Master组件可以在集群中任何节点上运行。但是为了简单起见,通常在一...

吴伟祥
17分钟前
0
0
Flink-数据流编程模型

1、抽象等级 Flink提供了不同级别的抽象来开发流/批处理应用程序。 1) 低层级的抽象 最低层次的抽象仅仅提供有状态流。它通过Process函数嵌入到DataStream API中。它允许用户自由地处理来自一...

liwei2000
35分钟前
1
0
Java开发Swing实战JFrame和JTabbedPane容器的用法详细解析

概述: 项目是一个桌面程序,涉及标签和按钮组件、布局管理器组件、面板组件、列表框和下拉框组件等组件,以及Swing事件处理机制。 下面先从最基础的界面开始。 /** * @author: lishuai * @...

金铭鼎IT教育
40分钟前
12
0
flask 之旅

环境 为了正确地跑起来,你的应用需要依赖许多不同的软件。 就算是再怎么否认这一点的人,也无法否认至少需要依赖Flask本身。 你的应用的运行环境,在当你想要让它跑起来时,是至关重要的。 ...

hblt-j
40分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部