一站式渠道接入

发布时间:2015-10-29

  为了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.登录流程图

1.png

2.支付流程图
2.png

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压缩包解压后看到以下文件:
3.png 
  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>

  修改的地方如下图所示:
5.png 
  然后在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”目录:
6.png 
  将里面的LayaBoxMarket.as文件拷贝到项目的根目录中:
7.png 
  如此一来AS3项目里LayaBoxMarket初始化的代码就能识别这个类了。另外,在Haxe和JS中也可以初始化LayaBoxMarket接口代码库:

8.png

  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时不可以发送快捷方式到桌面。