ghomeh5 登录 SDK 开发手册


1. 功能概述

该接口主要用于 WEB 游戏或者 h5游戏的帐号登录、注册、激活、实名认证、游戏支付、升级等功能。本SDK提供带界面的登录接口,开发者只需要按照以下示例代码(参考第 2 小节)嵌入相应的 CSS/JS/PHP 代码然后通过iframe嵌入到对应的页面中。

2.接入方式

2.1 浮层方式

2.1.1 额外参数说明
  • modeAlert=1&domainUrl=

在url中加入modeAlert参数可以使嵌入页面在iframe内部刷新,而不是刷新整个页面。加入domainUrl 表示嵌入登录界面手游页的域名,用来进行和iframe进行数据通信

2.2.2 说明

*loginbox变量配置,包括domain和url,引入sdk会读取改变量配置,用于数据的传输

2.2.3. 示例代码
  • 游戏(应用)的登录页面代码范例:
<!DOCTYPE html>
<html lang="en">

<head>
    <meta http-equiv="content-language" content="zh_CN" />
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <meta http-equiv="content-style-type" content="text/css" />
    <meta http-equiv="content-script-type" content="text/javascript" />
    <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no,initial-scale=1" />
    <meta name="robots" content="index,follow,noodp,noydir" />
    <meta name="Keywords" content="" />
    <meta name="Description" content="" />
    <meta name="copyright" content="" />
    <title>Game</title>
    <link rel="canonical" href="" />

</head>

<body>
    <!-- 接入方(游戏))自定义页面 -->
    <div style="padding:20px;">
        <label></label>
        <div id="user"></div>
        <a id="meiyu" type="button" data-toggle="modal" data-target="#my_login_popup">手游登录</a>
        <table id="gamePage" style="display: none;">
            <tr>
                <td>userId:</td>
                <td>
                    <input type="text" id="idShow">
                </td>
            </tr>
            <tr>
                <td>ticket:</td>
                <td>
                    <input type="text" id="ticketShow">
                </td>
            </tr>
            <tr>
                <td>
                    <button class="getticket" id="getTicket">获取ticket</button>
                </td>
                <td>
                    <button class="getticket" id="payMoney">支付</button>
                </td>
            </tr>
            <tr>
                <td>
                    <button class="getticket" id="changeUser">切换账号</button>
                </td>
                <td>
                    <button class="getticket" id="updateAction">游客升级</button>
                </td>
            </tr>
        </table>
    </div>
</body>

<!-- 以下JS请加入到页面底部-->
<script type="text/javascript" src="./loginSdk.js"></script>
<script type="text/javascript">
    var loginbox = {
        // 请将以下参数中的appid替换成游戏的appid,callback替换成游戏的回调地址
        'domain': 'https://localhost:8082',
        'url': 'https://localhost:8082/?modeAlert=1&domainUrl=' + encodeURIComponent(window.location.origin),
        'loginSuccess': function (data) {
            //表示登录成功
            $('#gamePage').show();
            userDataShow(data);//
            console.log(data);
        },
        'changeTicket': function (ticket) {
            $('#ticketShow').val(ticket);
        },
        'isUpdate': function (isUpdate) {
            console.log(isUpdate);
        }
    };
    $('#meiyu').click(function () {
        showAlert();
    });
    $('#getTicket').click(function () {
        getNewTick('02');//'02'参数代表areaid
    });

    $('#updateAction').click(function () {
        showAlert();
        updateAction();
    });

    $('#changeUser').click(function () {
        showAlert();
        changeUser();
    });

    $('#payMoney').click(function () {
        showAlert();
        var traceId = new Date().valueOf();
        gamePay(traceId,'SangoPuzzle_Stone_006',encodeURIComponent('宝玉 x 40'),100,1);
    });
    function userDataShow(data) {
        console.log(data.type);
        if (data.type == 'loginSucc') {
            $('#ticketShow').val(data.nowUser.ticket);
            if (data.nowUser.allData.guestId) {
                $('#idShow').val(data.nowUser.allData.guestId);
            } else {
                $('#idShow').val(data.nowUser.allData.userid);
            }
        }
    }
    function showAlert() {
        h5model.show();
    }
</script>

</html>
  • js的引入loginSdk.js用来对登录页面进行操作和控制
  • h5model对象表示登录框,可以通过hide()和show()方法来控制登录框的显示和隐藏

3.业务流程

3.1 业务流程时序图

IOS4

4.sdk参数介绍

4.1 sdk方法介绍

  • getNewTick(areaid)获取最新的ticket,其中areaid为传入的区服id,通过loginbox变量中的changeTicket方法获取。
  • updateAction()用户更新,游客用户用来升级的方法,可以通过isUpdate参数来判断是否需要升级,如果为true表示可以调用该方法进行升级。
  • changeUser()切换用户时操作方法。
  • gamePay(traceId,selectProductCode,productName,productAmount,OrderAmount,callback)

gamePay入参说明

参数名 描述 是否必传
traceId 订单id
selectProductCode 所选商品id
productName 所选商品名称
productAmount 产品数量
OrderAmount 订购数量
  • 其中traceId表示订单id每次都不一样

4.2 loginbox参数说明:

请求参数

页面引入loginSdk.js后,需要配置全局loginbox变量,参数如下:

参数名 描述 是否必传
domain 登录页面域名
url 带有当前游戏页面登录域名
loginSuccess 登录成功后参数
changeTicket 更新ticket数据
isUpdate 用户类型
  • domain表示登录界面的所在域名:目前为https://mgame.sdo.com/h5/
  • url为domain后面加入modeAlert=1和domainUrl两个参数,其中domainUrl表示当前游戏web页面的域名,用encodeURIComponent进行编码。
  • loginSuccess:登录成功数据,type为loginSucc,gameUserList为登录过的游戏列表,nowUser表示当前登录用户的信息。

nowUser参数

参数名 描述 是否必返回
userid 用户的唯一表示,游客没有
ticket 当前登录用户ticket
autokey 自动登录密钥,web端不需要
allData 用户全部信息
  • changeTicket获取新的ticket的方法回掉,返回对应新的ticket。
  • isUpdate表示是否需要升级,true表示需要升级

4.3 区服接口说明:

4.3.1 获取区服列表
请求地址
GET https://api.mygm.sdo.com/v1/basic/getarealist
响应结果
{
    "code": 0,
    "msg": "ok",
    "data": {
        "message": [
            {
                "area_code": "",
                "name": "",
                "notify_url": ""
            }
        ],
        "result": 0
    }
}

4.4 商品接口说明:

4.4.1 获取区服列表
请求地址
GET https://api.mygm.sdo.com/v1/basic/getproductlist
响应结果
{
    "code": 0,
    "msg": "ok",
    "data": {
        "message": [
            {
                "extendproductid ": "",
                "item_name ": "",
                "money ": "",
                "product_code ":"",
   "type ":""
            }
        ],
        "result": 0
    }
}