为了CP可以快速的将产品接入Layabox,并且享受数量庞大的渠道商提供的服务,以及宝贵的数以亿计的用户流量资源,Layabox为CP提供了一整套对接Layabox开放平台的登录、支付的接口,再由Layabox与各个渠道商对接,实现CP在各渠道商快速上线的需求。
渠道对接相关资料下载:
客户端对接文档:
http://123.56.138.152:8001/windows-exe/marketDocking.zip
平台对接文档:
http://123.56.138.152:8001/windows-exe/LayaOpen开放平台接口API服务端交互对接文档V1.2.pdf
渠道客户资料:
http://123.56.138.152:8001/clientdata/渠道客户资料.rar
1.登录流程图
2.支付流程图
3. LayaBoxMarket
LayaBoxMarket是由Layabox提供CP用于渠道接入的接口库文件,所有渠道接入相关的功能接口都被封装到了一个名为“LayaBoxMarket”的JS文件中,在使用前请先到官方网站下载最新的LayaBoxMarket接口库代码。
下载地址(含Demo):
http://123.56.138.152:8001/windows-exe/marketDocking.zip
下面介绍一下如何在项目中使用并初始化LayaBoxMarket。项目示例使用的入口AS3类文件为Main.as,并使用FlashBuilder作为AS3开发IDE。将下载到的marketDocking.zip压缩包解压后看到以下文件:
main.max.html是LayaFlash编译的H5项目入口HTML文件,打开这个文件,修改里面的HTMl代码,将LayaBoxMarket.js文件引入H5项目,修改后的main.max.html文件内容:
<html> <head> <meta charset='utf-8'/> <title>wwww.layabox.com</title> <meta name='viewport' content='width=device-width,initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no' /> <meta name='apple-mobile-web-app-capable' content='yes' /> <meta name='full-screen' content='true' /> <meta name='screen-orientation' content='portrait' /> <meta name='x5-fullscreen' content='true' /> <meta name='360-fullscreen' content='true' /> <meta http-equiv='expires' content='0' /> <meta name='laya' logoimg='logo.png' logobkcolor='#ffffff' screenorientation='landscape' cacheid='fffffffff' /> </head> <body> <script src='LayaBoxMarket.js' loader='laya'></script> <script src='main.max.js' loader='laya'></script> <script>//Laya.config.showInfo=false;</script> </body> </html>
修改的地方如下图所示:
然后在AS3项目源码中添加LayaBoxMarket的初始化代码:
package { import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; public class Main extends Sprite { public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); this.stage.scaleMode = StageScaleMode.NO_SCALE; this.stage.align = StageAlign.TOP_LEFT; IFlash.setSize(550, 400); //2D项目中设置场景尺寸 IFlash.setOrientationEx(1); //是否为横屏模式 IFlash.setBgcolor("#000000"); //背景色 IFlash.showInfo(false); //是否显示帧率 var s_market:LayaBoxMarket = LayaBoxMarket.getInstance(); //得到market接口实例 var win:*; //[IF-JS] win=Browser.window; /*[IF-FLASH]*/win = {}; s_market.init(win); //初始化market接口,传入JS的window对象 s_market.login('{"openkey":"f01f38bf5b805fc401c03e18ba6bce79"}', function(param:String):void { /*openkey为layabox提供的游戏唯一标识码, 调用登录接口注意sp都是从游戏url地址中获取, 也就是只需在启动游戏地址加上?sp=2即可。*/ }); } } }
这儿的LayaBoxMarket会被认为是一个未定义的类,这是因为LayaBoxMarket.as没有被定义在Laya.swc里,它划分为一个LayaFlash引擎之外的额外类,只有在需要接入渠道的时候才需要使用它。LayaBoxMarket.as类被放在我们从官方网站上下载的marketDocking压缩包中,打开我们下载的压缩包解压过的文件目录,进入它的“as3\MarketDemo\src”目录:
将里面的LayaBoxMarket.as文件拷贝到项目的根目录中:
如此一来AS3项目里LayaBoxMarket初始化的代码就能识别这个类了。另外,在Haxe和JS中也可以初始化LayaBoxMarket接口代码库:
Haxe下的初始化代码:
var s_market:LayaBoxMarket = LayaBoxMarket.getInstance(); //得到market接口实例 s_market.init(js.Browser.window); //初始化market接口,传入JS的window对象 s_market.login('{"openkey":"f01f38bf5b805fc401c03e18ba6bce79"}', function(param:String) { //调用登录接口 var _data:Dynamic = Json.parse(param); trace("login result = " + data.result); });
JS下的初始化代码:
var s_market = LayaBoxMarket.getInstance(); //得到market接口实例 s_market.init(window); //初始化market接口,传入JS的window对象 s_market.login('{"openkey":"f01f38bf5b805fc401c03e18ba6bce79"}', function(param) { //调用登录接口 var _data = JSON.parse(param); trace("login result = " + data.result); });
具体的使用方法详见与marketDocking压缩包的各语言使用LayaBoxMarket的demo。
4.LayaBoxMarket的API说明
4.1.API一览
1.getInstance:获得市场对接类实例
2.init:初始化市场类实例
3.login:登录类型为1的登录调用
4.loginRefreshToken:登录类型为2的登录调用(认证方式)
5.authorize:授权登录
6.logout:注销登录
7.recharge:充值
8.getLoginType:获得登录类型
9.getChargeType:暂不提供
10.getPayType:暂不提供
11.enterShareAndFeed:分享
12.enterBBS:进入BBS
13.openTopicCircle:进入话题圈
14.getGameFriends:获得好友列表
15.sendToDesktop:发送到桌面
16.canSendToDesktop:能否发送到桌面
4.2.API详细说明
4.2.1.getInstance
函数定义:
static public function getInstance():LayaBoxMarket
函数说明:
获取市场对接类实例的接口。
参数说明:
无参数。
返回:
获得LayaBoxMarket(市场类)的单例实例。
4.2.2.init
函数定义:
public function init(_win:Dynamic)
函数说明:
初始化市场对接类实例。
参数说明:
_win:对应JS中的windows对象。
返回:
无返回值。
4.2.3.login
函数定义:
public function login(JsonData:String, callback:Dynamic):Void
函数说明:
1.此接口用于登录平台接口。
2.参数说明中出现的openkey属性是Layabox平台分配给CP的游戏唯一ID。
3.进入游戏应用所使用的外部URL示例:http://www.xxx.com/default.html?loginType=2
4.进入游戏应用所使用的外部URL传递的参数说明(URL示例:)
loginType参数:决定使用何种方式登录(参考getLoginType说明)。
sp参数:Layabox平台给各个渠道分配的id。注意,此参数都是从游戏URL地址中获取,也就是说只需在启动游戏地址加上?sp=2即可设置游戏将要使用的渠道。
参数说明:
JsonData:传入的参数,JSON格式的字符串,此JSON数据的格式说明如下:
{openkey:9c04971a15cf3f7a9fd5cb5b}
callback:处理登录接口的返回值的回调函数。代码示例如下
function callback(param:String){ var _data = Json.parse(param);//解析返回的JSON字符串 }
非认证方式登录
若进入游戏应用的URL传递的loginType参数值为1时使用的登录方式(参考getLoginType说明),此登录方式下的login函数参数说明:
JsonData:JSON格式的字符串,此JSON数据的格式说明如下:
{openkey: 9c04971a15cf3f7a9fd5cb5b}
callback:处理登录接口的返回值的回调函数。在非认证方式登录时处理登录接口的返回值的回调函数,回调参数为JSON格式字符串,此JSON数据的格式说明如下:
{ nickName:用户在渠道方的昵称, refreshToken:用户在渠道方登录的token, unionUserId:用户在渠道方登录的用户id avtorUrl:用户在渠道方的头像地址, marketName:用户登录的渠道别名, result:用户登录的结果编号(0:成功 非0:失败), desc:用户登录的结果描述 }
4.2.4.loginRefreshToken
函数定义:
loginRefreshToken(JsonData:String, callback:Dynamic):Void
函数说明:
1.此接口在认证登录方式下重新获取token的接口。
2.参数说明中出现的openkey属性是Layabox平台分配给CP的游戏唯一ID。
3.进入游戏应用所使用的外部URL示例:http://www.xxx.com/default.html?loginType=2
4.进入游戏应用所使用的外部URL传递的参数说明(URL示例:)
loginType参数:决定使用何种方式登录(参考getLoginType说明)。
sp参数:Layabox平台给各个渠道分配的id。注意,此参数都是从游戏URL地址中获取,也就是说只需在启动游戏地址加上?sp=2即可设置游戏将要使用的渠道。
参数说明:
JsonData:传入的参数,JSON格式的字符串
callback:处理接口返回值的回调函数。代码示例如下:
function callback(param:String){ var _data = Json.parse(param);//解析返回的JSON字符串 }
认证方式登录
若进入游戏应用的URL传递的loginType参数值为2时使用的登录方式(参考getLoginType说明),此登录方式下的loginRefreshToken函数参数说明:
JsonData:JSON格式的字符串,,此JSON数据的格式说明如下:
{openkey: 9c04971a15cf3f7a9fd5cb5b}
callback:处理接口返回值的回调函数。回调参数为JSON格式字符串,此JSON数据的格式说明如下:
{ nickName:用户在渠道方的昵称, refreshToken:用户在渠道方登录的token, unionUserId:用户在渠道方登录的用户id, avtorUrl:用户在渠道方的头像地址, marketName:用户登录的渠道别名, result:用户登录的结果编号(0:成功 非0:失败), desc:用户登录的结果描述 }
4.2.5.Authorize
函数定义:
public function authorize (JsonData:String, callback:Dynamic):Void
函数说明:
1.此接口用于认证方式登录时获得授权的接口。
2.参数说明中出现的openkey属性是Layabox平台分配给CP的游戏唯一ID。
3.进入游戏应用所使用的外部URL示例:http://www.xxx.com/default.html?loginType=2
4.进入游戏应用所使用的外部URL传递的参数说明(URL示例:)
loginType参数:决定使用何种方式登录(参考getLoginType说明)。
sp参数:Layabox平台给各个渠道分配的id。注意,此参数都是从游戏URL地址中获取,也就是说只需在启动游戏地址加上?sp=2即可设置游戏将要使用的渠道。
认证方式登录
若进入游戏应用的URL传递的loginType参数值为2时使用的登录方式(参考getLoginType说明),此登录方式下的Authorize函数参数说明:
参数说明:
JsonData:JSON格式的字符串,此JSON数据的格式说明如下:
{ type:"qq", openkey: 9c04971a15cf3f7a9fd5cb5b, }
type:获得授权方式(qq:获得qq授权,wx:获得微信授权)
openkey:layabox平台分配给CP的游戏唯一ID(openkey)
callback:回调函数,回调参数为JSON格式字符串,此JSON数据的格式说明如下:
{ nickName:用户在渠道方的昵称, refreshToken:用户在渠道方登录的token, unionUserId:用户在渠道方登录的用户id, avtorUrl:用户在渠道方的头像地址, marketName:用户登录的渠道别名, result:用户登录的结果编号(0:成功 非0:失败), desc:用户登录的结果描述 }
4.2.6.getLoginType得到登录类型
函数定义:
public function getLoginType():Int
函数说明:
1.此接口用于获得登录类型的接口。
2.进入游戏应用所使用的外部URL示例:http://www.xxx.com/default.html?loginType=2
3.进入游戏应用所使用的外部URL传递的参数说明(URL示例:)
loginType参数:决定使用何种方式登录(参考getLoginType说明)。
sp参数:Layabox平台给各个渠道分配的id。注意,此参数都是从游戏URL地址中获取,也就是说只需在启动游戏地址加上?sp=2即可设置游戏将要使用的渠道。
4.登录类型值
0:不使用渠道的登录方式,直接使用游戏自身的登录界面进行登录。
1:使用渠道的登录界面,输入用户名、密码进行登录。
2:使用授权方式进行登录(暂时只有腾讯使用授权方式登录)。
参数说明:
无参数。
返回值说明:
返回一个int类型数字的登录类型值:
0:无渠道登录模式,CP打开自己的登录界面登录。
1:非认证方式登录,打开渠道方登录界面登录。
2:授权认证方式登录, 通过授权登录(暂时只有腾讯使用授权方式登录)。
4.2.7.logout注销
函数定义:
public function logout(JsonData:String,callback:Dynamic):Void
函数说明:
注销用户登录信息的接口。
参数说明:
JsonData:JSON格式的字符串,暂不需要传入此参数。
callback:注销接口的回调函数,回调参数为JSON格式字符串,此JSON数据的格式说明如下:
{ result:注销用户登录的结果编号(0:成功 非0:失败), desc:注销用户登录的结果描述 }
4.2.8.recharge支付
函数定义:
public function recharge (JsonData:String, callback:Dynamic):Void
函数说明:
游戏应用的充值接口
参数说明:
JsonData:JSON格式的字符串,此JSON数据的格式说明如下:
{ order_id:"abdf54125644gsdf", goods_name: "100元宝", amount:1000, goods_desc:''游戏币" } order_id:CP方的订单号 goods_name:物品名称 amount:人民币数量(单位分) goods_desc:物品描述
callback:充值接口的回调函数,回调参数为JSON格式字符串,此JSON数据的格式说明如下:
{ result:充值结果(0:成功、非0:失败), desc:充值的结果描述 }
4.2.9.enterShareAndFeed
函数定义:
public function enterShareAndFeed(JsonData:String,callback:Dynamic):Void
函数说明:
分享应用内容的接口。
参数说明:
JsonData:JSON格式的字符串,此JSON数据的格式说明如下:
{ "title":分享界面的标题,示例:"market_demo", "link":分享后点击的页面URL,示例:"http://test.layabox.com/as_share.html", "desc":分享界面的描述,示例:"market_demo_desc", "imgsrc":分享内容插图URL,示例:"http://newsg.laya8.com/icon.png", "imgtitle":分享内容插图的标题,示例:"market_demo_imgsrc_title", "custxt":本地sharewindow编辑框中默认填写的内容,示例:"market_demo_custxt" }
callback:分享应用内容的接口回调函数,回调参数为JSON格式字符串,此JSON数据的格式说明如下:
{ result:分享的结果编号(0:成功 非0:失败), desc:分享的结果描述, app:要将内容分享到的APP。取值-1:未知,1:分享到微信,3:分享到qq空间,4:分享发送给qq好友,8:分享到朋友圈。 }
4.2.10.enterBBS
函数定义:
public function enterBBS(JsonData:String,callback:Dynamic):Void
函数说明:
进入BBS的接口。
参数说明:
JsonData:JSON格式的字符串,暂不需要传入参数。
callback:进入BBS的回调函数,回调参数为JSON格式字符串,此JSON数据的格式说明如下:
{ result: 进入BBS的结果编号(0:成功、非0:失败), desc: 进入BBS的结果描述。 }
4.2.11.getGameFriends获取用户好友列表
函数定义:
public function getGameFriends(JsonData:String,callback:Dynamic):Void
函数说明:
获取用户的好友(进行同一游戏的好友)列表接口。
参数:
JsonData:JSON格式的字符串,暂不需要传入参数。
callback:获取用户好友接口的回调函数,回调参数为JSON格式字符串,此JSON数据的格式说明如下:
{ result:获取好友列表的结果编号(0:成功、非0:失败), desc:获取好友列表的结果描述, friendslist:好友信息数组(同玩好友的qbopenid) }
4.2.12.openTopicCircle 进入话题圈
函数定义:
public function openTopicCircle (JsonData:String,callback:Dynamic):Void
函数说明:
进入话题圈的接口。
参数参数:
JsonData:JSON格式的字符串,暂不需要传入参数。
callback:回调函数,回调参数为JSON格式字符串,此JSON数据的格式说明如下:
{ result:进入话题圈的结果编号(0:成功 非0:失败), desc:进入话题圈的结果描述 }
4.2.13.sendToDesktop发送快捷方式到桌面
函数定义:
public function sendToDesktop(JsonData:String,callback:Dynamic):Void
函数说明:
发送快捷方式到桌面。
函数参数:
JsonData:JSON格式的字符串,此JSON数据的格式说明如下:
[ { "title":桌面快捷方式名称,示例:"测试_快捷方式", "imageUrl":桌面快捷方式图标,示例:"http://newsg.laya8.com/icon.png", "pageUrl":点击快捷方式启动地址,示例:"http://www.baidu.com" } ]
callback:发送快捷方式到桌面接口的回调函数,回调参数为JSON格式字符串,此JSON数据的格式说明如下:
{ result:发送快捷方式的结果编号(0:成功、非0:失败), desc:发送快捷方式的结果描述, }
4.2.14.canSendToDesktop
函数定义:
public function canSendToDesktop(JsonData:String):Bool
函数说明:
能否发送快捷方式到桌面
参数说明:
JsonData:JSON格式的字符串, 暂时不用传参数。
返回:
一个Bool类型的返回值,值为true时可以发送快捷方式到桌面, false时不可以发送快捷方式到桌面。