U8SDK技术博客:http://www.uustory.com/,欢迎来坐坐。
百度传课已经停运,最新U8SDK视频教程已经转移至B站:U8SDK最新视频教程
U8Server是采用J2EE框架SSH2实现的。当然你也可以采用任何其他你熟悉的语言实现。上一篇文章中,我们从类的抽象中,大致梳理了一下U8Server所要完成的工作。大的方向上,U8Server需要实现统一的用户登录认证,和支付中心两大功能。更深入的细节,U8Server需要完成以下功能:
游戏管理:查询游戏,创建游戏(同时生成游戏的唯一appID,appKey等),编辑游戏,删除游戏等功能。
渠道商管理:查询渠道商,创建渠道商(设置该渠道商对应的登陆认证地址,支付回调地址等操作。),编辑渠道商,删除渠道商等功能。
渠道管理:查询某个游戏的渠道,创建渠道(将指定的游戏和一个渠道商连接起来,同时生成渠道ID,配置该游戏对应该渠道的appID,appKey等信息),编辑渠道,删除渠道。
登陆认证:完成各个游戏各个渠道的统一登陆认证功能
支付回调:支付之前获取订单号。所有第三方SDK的支付回调,然后将第三方支付回调以统一的格式返回给游戏服务器
对于游戏管理,渠道商管理,渠道管理三个功能,可以做成一个后台管理界面,通过后台操作,实现各个功能的管理。就是简单的数据库查询和数据增删改查功能。本文主要介绍统一的登陆认证和支付两个部分。
对于登陆认证,通过之前的流程图我们知道。所有渠道SDK登陆成功之后,都会返回sid等信息,客户端紧接着拿着这个sid去U8Server进行登录认证,U8Server再去第三方SDK服务器认证,认证成功之后,U8Server会生成一条用户信息,然后将生成一个token给客户端。客户端拿着这个token,登陆游戏服务器,游戏服务器再拿着这个token去U8Server进行认证。如果合法,则用户成功登陆。
那么,这样我们的登陆认证接口就有了,请看代码:
@Action("getToken")
public void getLoginToken(){
try{
Log.i("The appID is "+this.appID);
UGame game = gameManager.queryGame(this.appID);
if(game == null){
renderState(StateCode.CODE_GAME_NONE, null);
return;
}
UChannel channel = channelManager.queryChannel(this.channelID);
if(channel == null){
renderState(StateCode