微信小游戏联运对接文档1.0

                                                     

目录

游戏联运对接文档1.0

1、一 接入必读

1.1、SDK-总体机制

术语表:

总体架构:

1 登陆流程

2 充值流程

1.2、SDK-接入流程

1.3、注意事项

2、二 服务端接入

2.1、1-登陆认证

2.2、2-支付通知

2.3、3-角色信息上报

2.4、4-游戏服务器开发要点

通信协议:

user_token 验证注意事项:

充值结果回调注意事项:

2.1、DEMO

2.1.1、PHP

2.1.2、JAVA

3、三 客户端JS接入

3.1、配置导入微信小程序SDK

3.2、调用 SDK 初始化

3.3、调用 SDK 登录

3.4、上传用户信息

3.5、SDK 切换支付

3.6、查询支付结果

3.7、获取分享内容

3.8、分享上报

3.9、上传角色信息

3.10、敏感词检测

3.11、敏感图片检测  

3.12、角色支付切换

 

1、一 接入必读

1.1、SDK-总体机制

术语表:

名称

说明

mem_id

用户在平台注册账号的唯一标识码

user_token

登陆会话标示

client_id

客户端ID,服务器生成

client_key

客户端key,服务器生成,写入游戏包中

app_id

游戏标识。由平台分配,用于区别不同的游戏合作厂商。

app_key

签名密钥。由平台为每个游戏合作厂商分配的消息签名密钥,用于在双方系统数据传输过程进行数据签名时使用。

login_check_url

渠道提供的sdk登录验证地址,用于确保是真实用户登录

pay_callback_url

游戏提供的支付成功回调地址,用于玩家支付成功后,后台进行发货

SDK

为游戏开发商提供基础服务(登录、购买等)的系统,包括“JS SDK”和”SDK 服务器”两部分。

小游戏/小程序

开发商开发的微信小游戏或者微信小程序。

游戏服务器

游戏开发商开发的,配合”游戏”为用户提供游戏服务的服务器端程序。

总体架构:

"SDK"分为

· "SDK"(集成于游戏中)、

· "SDK 服务器"两部分。

"游戏客户端" (内含”SDK”)、"游戏服务器" "SDK 服务器"之间的关系如下图所示: 


1 登陆流程


2 充值流程

1充值信息:"游戏"调用"SDK"的支付购买接口,传入商品名称、 商品金额、游戏区服、游戏角色给"SDK"。

 

2 下单mem_id,app_id等"SDK"把商品购买信息发送给"SDK 服务器"。

 

3 订单号(支付渠道信息):SDK服务器返回“SDK订单号”

 

4 调用支付 SDK调用支付  

 

5 支付结果 异步回调给SDK服务器

 

6 充值结果 充值成功后,SDK服务器将通知游戏服务器提供的"pay_callback_url"支付回调地址,"游戏服务器"根据"SDK 服务器"发送过来的商品名称、价格、 厂家订单号等信息,跟自己的商品进行对比,如果商品跟价格都一致,则返回成功, 否则返回失败。

 

7 游戏服务器处理支付结果,返回SUCCESS/FAIL给SDK服务器,若处理成功,可同时给游戏客户端推送发放玩家购买的物品

 

8 SDK客户端在支付结束后,向SDK服务器请求支付结果,

 

9 SDK服务器返回支付结果

 

10 支付成功结果返回给游戏

 

11 游戏向游戏服务器请求更新

 

12 更新游戏数据

备注

若游戏服务器有自动推送功能,可以省略 11-12 步骤,在第7步处理支付成功后给游戏客户端推送发放玩家购买的物品。

1.2、SDK-接入流程

1.3、注意事项

2、二 服务端接入

2.1、1-登陆认证

简要描述: 

· 验证登陆user_token 是否有效

· 请求URL: https:// mp.cceuc.com/cp/user/check 

· https://【域名】/cp/user/check

请求方式: (UTF-8)

· HTTP POST

接口说明:

    验证user_token是否为有效的登录用户会话,若有效则返回其账号标识、账号创建者和昵称。"游戏客户端"通过"SDK 客户端"获取到user_token,传到"游戏服务器","游戏服务器"到"SDK 服务器"验证user_token的有效性。

 

注意:进行接口调用前请确认user_token是否具备值,如user_token值为空时请勿调用此接口。请求次数有限制,如果超过频次限制,接口将返回错误码,不响应请求。

请求方:

· 游戏服务器

响应方:

· SDK服务器

请求参数: 

参数名

必选

类型

说明

app_id

STRING

游戏接入时分配的应用app_id

mem_id

STRING

登陆时提供给CP的 mg_mem_id

user_token

STRING

登陆获取的 cp_user_token

sign

STRING

参数校验

请求示例: 

POST参数:

app_id=1&mem_id=23&user_token=rkmi2huqu9dv6750g5os11ilv2&sign=4753dce3ae736e7f894ebcc6cd3cff7a

 

假定app_key= de933fdbede098c62cb309443c3cf251

sign 的签名规则:md5(app_id=...&mem_id=...&user_token=...&app_key=...)

(替换...为实际值)

 

签名原文:

app_id=1&mem_id=23&user_token=rkmi2huqu9dv6750g5os11ilv2&app_key=de933fdbede098c62cb309443c3cf251

 

sign=md5(app_id=1&mem_id=23&user_token=rkmi2huqu9dv6750g5os11ilv2&app_key=de933fdbede098c62cb309443c3cf251)

 

md5加密:

echo -n "app_id=1&mem_id=23&user_token=rkmi2huqu9dv6750g5os11ilv2&app_key=de933fdbede098c62cb309443c3cf251"|md5sum

 

加密结果:4753dce3ae736e7f894ebcc6cd3cff7a

返回示例(JSON返回)

{

  "status": "0",

  "msg": "请求参数为空 app_id"

}

返回参数说明 

状态码

类型

说明

status

STRING

返回状态码

msg

STRING

返回信息

状态码说明 

状态码

说明

0

请求参数错误

1

成功

10

服务器内部错误

11

app_id错误

12

签名错误

13

user_token错误

14

user_token超时,表示用户登录授权已超时,需引导用户重新登录,并更新接口访问令牌。(注:访问令牌的有效时长是1天)

15

mem_id错误

16

访问太频繁,超过访问次数

100

没有接口访问权限(注:出现时可联系技术人员确认权限是否开通)

2.2、2-支付通知

简要描述: 

· 平台充值成功后通知游戏服务器 请求接口

请求URL: 

· 即充值结果通知地址,CP提供。游戏接入时,录入到的游戏平台中。

请求方式:(UTF-8)

· HTTP POST

接口说明:

    请求方为SDK 服务器,响应方为CP服务器。

 

    用户在游戏中提交购买请求后,游戏平台会异步执行充值购买,在购买操作完成后,游戏平台通过该接口将充值结果发送给“游戏服务器”。

 

    此处定义本接口的规范,游戏合作商需根据此规范在“游戏服务器”实现本接口。

请求方:

· SDK 服务器

响应方:

· 游戏服务器

请求参数: 

参数名

必选

类型

说明

app_id

STRING

游戏ID

cp_order_id

STRING

游戏传入的外部订单号。保证每笔订单传入的订单号的唯一性。URLencodeing

mem_id

STRING

玩家ID

order_id

STRING

平台订单号

order_status

STRING

平台订单状态 1 未支付 2成功支付 3支付失败

pay_time

STRING

订单下单时间 时间戳, Unix timestamp

product_id

STRING

商品idURLencoding

product_name

STRING

商品名称 URLencoding

product_price

STRING

商品价格(元);保留两位小数URLencoding

ext

STRING

透传参数 CP下单时的原样放回 URLencoding

sign

STRING

MD5 签名

请求示例: 

POST参数:

app_id=60000&cp_order_id=10000&ext=%E7%A9%BF%E9%80%8F&mem_id=136&order_id=1526983557869000036&order_status=2&pay_time=1526983557&product_id=1&product_name=%E5%85%83%E5%AE%9D&product_price=1.00

 

假定app_key=c703d4627ae162feb939edcc997ac148

sign 的签名规则:md5(app_id...&cp_order_id...&ext...&mem_id...&order_id...&order_status...&pay_time...&product_id...&product_name...&product_price...&app_key=...)

(替换...为实际值)

 

签名原文:

app_id=60000&cp_order_id=10000&ext=%E7%A9%BF%E9%80%8F&mem_id=136&order_id=1526983557869000036&order_status=2&pay_time=1526983557&product_id=1&product_name=%E5%85%83%E5%AE%9D&product_price=1.00&app_key=c703d4627ae162feb939edcc997ac148

 

sign=md5(app_id=60000&cp_order_id=10000&ext=%E7%A9%BF%E9%80%8F&mem_id=136&order_id=1526983557869000036&order_status=2&pay_time=1526983557&product_id=1&product_name=%E5%85%83%E5%AE%9D&product_price=1.00&app_key=c703d4627ae162feb939edcc997ac148)

 

md5加密:

echo -n "app_id=60000&cp_order_id=10000&ext=%E7%A9%BF%E9%80%8F&mem_id=136&order_id=1526983557869000036&order_status=2&pay_time=1526983557&product_id=1&product_name=%E5%85%83%E5%AE%9D&product_price=1.00&app_key=c703d4627ae162feb939edcc997ac148"|md5sum

 

加密结果:45347e179eb0dc85cdd4010601b2a960

返回示例:

SUCCESS

返回参数说明: 

响应内容

响应内容描述

SUCCESS

成功,表示游戏服务器成功接收了该次充值结果通知,校验签名,订单,金额等都没问题。

FAILURE

失败,表示游戏服务器无法接收或识别该次充值结果通知,如:签名检验不正确、游戏服务器接收失败

注意事项:

含有中文的参数需进行URLencodeing

金额最高保留二位小数,按实际接收参数拼接sign加密串,如product_price接收为1,则加密时product_price=1。

通知机制:

充值操作完成并且充值成功后,“SDK 服务器”都会将充值结果通过“充值结果回调接口”发送到“游戏服务器”。“游戏服务器”收到“SDK 服务器”的充值通知后,根据处理结果返回字符串SUCCESS 或FAILURE。

 

如果返回SUCCESS,则“SDK服务器”结束通知任务;

 

如果返回FAILURE 或由于网络延时导致“SDK 服务器”没有收到任何返回,SDK 服务器将会在周期内进行重复通知。

2.3、3-角色信息上报

简要描述: 

· 上报游戏角色信息到sdk服务器。

· 选接,客户端或者服务端一个端接入即可。

请求URL: 

· https://mp.j8youxi.com/cp/role/report

请求方式: (UTF-8)

· HTTP POST

请求方:

· 游戏服务器

响应方:

· SDK服务器

请求参数: 

参数名

必选

类型

说明

附加

app_id

STRING

游戏接入时分配的应用app_id 应用标识

1

event

INT(1)

角色上传事件类型 1:在线,2:创建角色,3:升级,4:下线,5:充值,6:删除

1

mem_id

STRING

登陆时提供给CP的 mem_id 用户id

1

role_id

STRING(32)

玩家角色id

如果没有,请填''。

role_name

STRING(32)

玩家角色名称

如果没有,请填''。

role_level

INT(10)

玩家角色等级

如果没有,请填0。

role_vip

INT(10)

玩家vip等级

如果没有,请填0。

server_id

STRING(32)

游戏服务器id,

如果没有,请填''。

server_name

STRING(32)

游戏服务器名称

如果没有,请填''。

combat_num

Long(20)

玩家角色战力

如果没有,请填0。

sign

STRING

参数校验

xxx

请求示例: POST参数:

app_id=1&combat_num=100&event=1&mem_id=23&role_id=1&role_name=xxx&role_level=1&role_vip=1&server_id=1&server_name=xxx&sign=4753dce3ae736e7f894ebcc6cd3cff7a

 

sign 的签名规则:md5(app_id=...&combat_num=...&event=...&mem_id=...&role_id=...&role_name=...&role_level=...&role_vip=...&server_id=...&server_name=...&app_key=...)

(替换...为实际值)

 

签名原文:

app_id=1&combat_num=100&event=1&mem_id=23&role_id=1&role_name=xxx&role_level=1&role_vip=1&server_id=1&server_name=xxx&app_key=de933fdbede098c62cb309443c3cf251

 

最终签名为32位md5小写值:

sign=md5(app_id=1&combat_num=100&event=1&mem_id=23&role_id=1&role_name=xxx&role_level=1&role_vip=1&server_id=1&server_name=xxx&app_key=de933fdbede098c62cb309443c3cf251)

注意:

返回示例(JSON返回)

{

  "status": "0",

  "msg": "请求参数为空 app_id"

}

返回参数说明 

状态码

类型

说明

status

STRING

返回状态码

msg

STRING

返回信息

状态码说明 

状态码

说明

0

请求参数错误

1

成功

10

服务器内部错误

11

app_id错误

12

签名错误

15

mem_id错误

16

访问太频繁,超过访问次数

100

没有接口访问权限(注:出现时可联系技术人员确认权限是否开通)

2.4、4-游戏服务器开发要点

通信协议:

· “SDK 服务器”采用HTTP 协议作为通信协议,

· “游戏服务器”通过构造HTTP 请求(POST方式)向“SDK 服务器”发起接口请求。


user_token 验证注意事项:

· user_token验证应该在客户端接到sdk 登陆成功后,客户端再登陆游戏服务器的时候,游戏服务器请求sdk 服务器验证。

· 在登陆或必要的时候调用,不做无故调用,注意控制调用次数,这个接口做了次数等限制。


充值结果回调注意事项:

在充值完成之后,SDK服务器会回调CP 给的地址。

· *需要校验回调的金额是否跟商品的真实价格一致;

· *需要校验用户是否充值成功;

· *返回值:返回“SUCCESS”表示通知CP成功了,其他错误等情况返回"FAILURE"。

2.1、DEMO

2.1.1、PHP

登陆认证: 

 

$query_data['user_token'] = 'MsHdZajsOdXhA5y6N3D5l6mfbgDdddsDNFnGUGzJaGzHdxcXBjNDY4aGQO0O0O'; // 获取的user_token

$query_data['mem_id'] = '23'; // 获取的用户ID

$query_data['app_id'] = '1'; // 获取的游戏APPID

$app_key = 'de933fdbede098c62cb309443c3cf251'; // 获取的游戏APPKEY$url ="https://mp.cceuc.com/cp/user/check";

 

$signstr = "app_id=" . $query_data['app_id'] . "&mem_id=" . $query_data['mem_id'] . "&user_token=" . $query_data['user_token'] . "&app_key=" . $app_key;

 

$query_data['sign'] = md5($signstr);

 

/* http请求 */

$rdata = http_post_data($url, $query_data);

if ($rdata) {

    $rdata = json_decode($rdata,true);

    if ('1' == $rdata['status']) {

        // CP操作,请求成功,用户有效

        echo $rdata['data'];

    }

}

 

// HTTP 数据请求函数

function http_post_data($url, array $query_data) {

    $post_str = http_build_query($query_data);

 

    $curl = curl_init(); // 初始化curl

    curl_setopt($curl, CURLOPT_URL, $url);

    curl_setopt($curl, CURLOPT_HEADER, 0); // 过滤HTTP头

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 显示输出结果

    curl_setopt($curl, CURLOPT_POST, 1); // post传输数据

    curl_setopt($curl, CURLOPT_POSTFIELDS, $post_str); // post传输数据

    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 3); // 设置等待时间

    $header = array(

        "Content-Type: application/x-www-form-urlencoded; charset=UTF-8"

    );

    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);

 

    //https 请求

    if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https") {

        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);

    }

 

    $return_content = curl_exec($curl);

    curl_close($curl);

    return $return_content;

}

2.1.2、JAVA

public class CheckLoginDemo {

    public static void main(String[] args) throws Exception {

        String user_token="rkmi2huqu9dv6750g5os11ilv2";// 获取的user_token

        String mem_id="23";// 获取的用户ID

        String app_id="1";// 获取的游戏APPID

        String app_key="de933fdbede098c62cb309443c3cf251";// 获取的游戏APPKEY

        Stringurl="https://mp.cceuc.com/cp/user/check";

        checkLogin(url,user_token,mem_id,app_id,app_key);

    }

    private static void checkLogin(String url, String user_token, String mem_id, String app_id, String app_key) throws Exception{

        StringBuffer buffer=new StringBuffer("app_id=").append(app_id)

                .append("&mem_id=").append(mem_id)

                .append("&user_token=").append(user_token);

        String params=buffer.toString();

        String sign= getMD5(buffer.append("&app_key=").append(app_key).toString());

        params=params+"&sign="+sign;

        System.out.println("params="+params);

        HttpURLConnection conn=null;

        InputStream is=null;

        BufferedReader reader=null;

        OutputStream outputStream;

        try {

            URL murl=new URL(url);

            conn = (HttpURLConnection) murl.openConnection();

            conn.setRequestMethod("POST");

            conn.setConnectTimeout(5 * 1000);

            conn.setReadTimeout(30 * 1000);

            //设置允许打开输出流,默认为不打开

            conn.setDoOutput(true);

            //设置请求头信息,可设置多个

            conn.setRequestProperty("content-type", "application/x-www-form-urlencoded");

            conn.setRequestProperty("Charset", "UTF-8");

            conn.connect();

            //获得输出流,用于往服务器写入数据

            outputStream = conn.getOutputStream();

            outputStream.write(params.getBytes());

            outputStream.flush();

            outputStream.close();

            int code = conn.getResponseCode();

            if(code==HttpURLConnection.HTTP_OK){

                is = conn.getInputStream();

                reader=new BufferedReader(new InputStreamReader(is));

                String line=null;

                StringBuffer dataBuffer=new StringBuffer();

                while ((line=reader.readLine())!=null){

                    dataBuffer.append(line).append("\n");

                }

                //得到联网结果使用json解析出status=1表示登陆校验通过

                System.out.println("联网结果:"+dataBuffer.toString());

            }else{

                System.out.println("联网code:"+code);

            }

        } catch (Exception e) {

            throw e;

        } finally {

            if(reader!=null){

                reader.close();

            }

            if(is!=null){

                is.close();

            }

            conn.disconnect();

        }

    }

}

3、三 客户端JS接入

3.1、配置导入微信小程序SDK

此对接文档说明如何在微信小程序中集成 huoSdk。

SDK 集成

在创建的项目中,新建一个名为 libs 的目录,将 huosdk-<version>.js 文件拷贝到 libs 目录下,即可完成 SDK 集成。

设置安全通讯域名

登录微信公众平台,在 "设置"->"开发设置" 中配置 request 合法域名:https://mp.cceuc.com

获取参数

从平台处,获取以下参数,用于对接。

参数名

说明

app_id

游戏标识ID,调用初始化时传入

SDK 使用

在本地文件中引入 huosdk-<version>.js 文件。

const huoSdk = require('<path>/libs/huosdk-<version>.js')

huoSdk 提供的所有 api 都会返回一个 Promise 对象

通过对 Promise 对象的成功/失败状态分别绑定相应的处理方法,可以获取 api 的成功/失败返回结果。

3.2、调用 SDK 初始化

请确保在初始化返回成功后,再调用其他 api。

请求方法

huoSdk.init()

请求参数

参数名

必选

说明

app_id

游戏的标识ID

mp_id

小程序ID,来自微信官方平台

showLoading

异步请求中,是否显示微信小程序 loading 提示框

loadingParams

showLoading  true 时生效。与微信小程序 loading 提示框参数一致

showToast

异步请求失败,是否显示微信小程序消息提示框
异步请求成功,若要显示消息提示,需主动调用微信小程序消息提示框

toastParams

showToast  true 时生效。与微信小程序消息提示框参数一致

sdk 中提示框默认参数如下:

{

  showLoading: true,

  loadingParams: {

    title: '加载中',

    mask: true

  },

  showToast: false,

  toastParams: {

    icon: 'none'

  }

}

以上参数除在初始化方法中统一配置以外,还可在其他方法中单独配置。

请求示例

huoSdk.init({

  app_id: 81234609,

  mp_id: 'wx2012342143434'

}).then(res => {

  // do something

})

返回结果

成功状态返回:

参数名

说明

msg

成功提示,默认为:success

失败状态返回:

参数名

说明

msg

失败提示,默认为:fail

3.3、调用 SDK 登录

注意:如果需要标识归属渠道或上级玩家,则调用本接口时必须传递 state 参数。

小程序可在 wx.onLaunch()  wx.onShow() 获取启动参数中的 query,在 query 参数中携带有 state 信息。

小游戏可在 wx.getLaunchOptionsSync()  wx.onShow() 获取启动参数中的 query,在 query 参数中携带有 state 信息。

通过分享消息或路径跳转方式进入,取 query.state 值;通过小程序码扫码方式进入,取 query.scene 值。需要对这两种情况做兼容处理,可查看下文请求示例

state 信息并非一定会携带,所以此字段非必填字段,但是如果获取到此信息,务必通过本接口传递,否则会丢失归属渠道或上级玩家信息。

在启动参数中获取的 state  获取分享内容接口得到的 state 本质相同。不同之处在于,启动参数获取的是其他玩家的标识,获取分享内容接口获取的是自身的标识。

请求方法

huoSdk.login()

请求参数

参数名

必选

说明

data

参数

data.state

分享信息,标识归属渠道或上级玩家

conf

loading/消息提示框配置

conf.showLoading

登录请求过程中,是否显示微信小程序 loading 提示框
未设置则使用默认配置

conf.loadingParams

showLoading  true 时生效。与微信小程序 loading 提示框参数一致
未设置则使用默认配置

conf.showToast

登录请求失败,是否显示微信小程序消息提示框
未设置则使用默认配置

conf.toastParams

showToast  true 时生效。与微信小程序消息提示框参数一致
未设置则使用默认配置

请求示例

let opts = wx.getLaunchOptionsSync()

// 初始化成功再调起登录

huoSdk.init({

  app_id: APPID,

  mp_id: MPID

}).then(res => {

  huoSdk.login({

    data: {

      // 路径跳转从 state 参数获取,扫码跳转从 scene 参数获取,因此此处需要兼容处理

      state: opts.query.state || opts.query.scene || ''

    }

  }).then(res => {

    // do something

  })

})

返回结果

成功状态返回:

参数名

说明

msg

成功提示,默认为:success

data

用户数据

data.mem_id

玩家ID

data.mg_mem_id

提供给CP校验登录用的 mem_id

data.avatar

头像地址

data.username

用户名

data.nickname

昵称

data.my_integral

我的积分

data.gift_cnt

礼包数量

data.game_cnt

游戏数量

data.ptb_cnt

平台币数量

data.has_msg

是否有新消息,2 有 1 没有 空 没有

data.has_identify

是否实名认证,2 已认证 1 没有 空 没有

data.has_bind_mobile

是否绑定手机,2 已绑定 1 没有 空 没有

data.sign_days

已签到天数

data.has_sign

是否已签到,2 已签到 1 没有 空 没有

data.mobile

绑定的手机号,空则未绑定

data.email

绑定的邮箱,空则未绑定

data.gender

用户的性别,男性为 1,女性为 2,未知为 0

data.city

用户所在城市

data.province

用户所在省份

data.country

用户所在国家

data.cp_user_token

CP用token

data.agentgame

玩家游戏渠道编号

data.user_token

玩家此次连接token

data.check

支付切换,1 切换 2 不切换 3关闭

data.ios_text

IOS不支持支付提示语

失败状态返回:

参数名

说明

msg

失败提示,默认为:fail

3.4、上传用户信息

使用 引导用户主动进行授权操作,通过 bindgetuserinfo 事件上传用户信息。

详细信息可参考:wx.getUserInfo

SDK 不主动上传用户信息,若要更新用户信息,需主动调用此接口。

请求方法

huoSdk.updateUserInfo()

请求参数

参数名

必选

说明

data

参数

data.raw_data

不包括敏感信息的原始数据字符串,用于计算签名

data.signature

使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息

data.encrypted_data

包括敏感数据在内的完整用户信息的加密数据

data.iv

加密算法的初始向量

conf

loading/消息提示框配置

conf.showLoading

支付请求过程中,是否显示微信小程序 loading 提示框
未设置则使用默认配置

conf.loadingParams

showLoading  true 时生效。与微信小程序 loading 提示框参数一致
未设置则使用默认配置

conf.showToast

支付请求失败,是否显示微信小程序消息提示框
未设置则使用默认配置

conf.toastParams

showToast  true 时生效。与微信小程序消息提示框参数一致
未设置则使用默认配置

请求示例

<button bindgetuserinfo="updateUserInfo" open-type="getUserInfo">授权</button>

updateUserInfo (e) {

  huoSdk.updateUserInfo({

    data: {

      raw_data: e.detail.rawData,

      signature: e.detail.signature,

      encrypted_data: e.detail.encryptedData,

      iv: e.detail.iv

    }

  }).then(res => {

    // do something

  })

}

 

// 主动上传用户信息,需先校验用户是否开启授权

wx.getSetting({

  success: res => {

    if (res.authSetting['scope.userInfo']) {

      // 用户当前已授权,则可调用 wx.getUserInfo 获取用户最新个人信息

      wx.getUserInfo({

        success: res => {

          huoSdk.updateUserInfo({

            data: {

              raw_data: res.rawData,

              signature: res.signature,

              encrypted_data: res.encryptedData,

              iv: res.iv

            }

          })

        }

      })

    }

  }

})

返回结果

成功状态返回:

参数名

说明

msg

成功提示,默认为:success

data

用户数据

data.mem_id

玩家ID

data.avatar

头像地址

data.username

用户名

data.nickname

昵称

data.my_integral

我的积分

data.gift_cnt

礼包数量

data.game_cnt

游戏数量

data.ptb_cnt

平台币数量

data.has_msg

是否有新消息,2 有 1 没有 空 没有

data.has_identify

是否实名认证,2 已认证 1 没有 空 没有

data.has_bind_mobile

是否绑定手机,2 已绑定 1 没有 空 没有

data.sign_days

已签到天数

data.has_sign

是否已签到,2 已签到 1 没有 空 没有

data.mobile

绑定的手机号,空则未绑定

data.email

绑定的邮箱,空则未绑定

data.gender

用户的性别,男性为 1,女性为 2,未知为 0

data.city

用户所在城市

data.province

用户所在省份

data.country

用户所在国家

data.cp_user_token

CP用token

data.agentgame

玩家游戏渠道编号

data.user_token

玩家此次连接token

失败状态返回:

参数名

说明

msg

失败提示,默认为:fail

3.5、SDK 切换支付

此接口会依据管理后台配置,分三种处理情况:

1. 不切换支付:主动调起米大师支付

2. 切换支付:直接跳转(在管理后台设置“直跳”跳转类型)

3. 切换支付:展示二维码,提示玩家扫码打开(在管理后台设置“二维码”跳转类型)

选择“直跳”跳转类型,需要配置 navigateToMiniProgramAppIdList。

如下图

选择“二维码”跳转类型,需要在调用接口时传入主画布对象和离屏画布对象,若未传入画布对象,则不展示二维码,需要接入方对返回数据做处理。

离屏画布需要由游戏绘制到主画布中。清除离屏画布及事件请调用方法 huoSdk.removeOffScreen()

请求方法

huoSdk.checkPay()

请求参数

参数名

必选

说明

 

data

参数

 

data.order-currency

货币代号,默认为中国货币 CNY [货币代号](https://baike.baidu.com/item/%E8%B4%A7%E5%B8%81%E4%BB%A3%E7%A0%81/7467182?fr=aladdin "货币代号")

 

data.order-cp_order_id

游戏传入的外部订单号,服务器会根据这个订单号生成对应的平台订单号,请保证每笔订单传入的订单号的唯一性

 

data.order-product_price

商品价格(元),建议传入整数,可以保留两位小数

 

data.order-product_id

商品ID

 

data.order-product_cnt

商品数量

 

data.order-product_name

商品名称

 

data.order-product_desc

商品描述,不传则使用商品名称

 

data.order-ext

CP自定义扩展字段,透传信息,默认为 ''

 

data.role-event

充值上传的角色信息

 

data.role-server_id

游戏服务器ID,没有则为 ''

 

data.role-server_name

游戏服务器名称,没有则为 ''

 

data.role-role_id

玩家角色ID,没有则为 ''

 

data.role-role_name

玩家角色名称,没有则为 ''

 

data.role-role_level

玩家角色等级,没有则填 0

 

data.role-role_vip

玩家 VIP 等级,没有则填 0

 

conf

loading/消息提示框配置

 

conf.showLoading

支付请求过程中,是否显示微信小程序 loading 提示框
未设置则使用默认配置

 

conf.loadingParams

showLoading  true 时生效。与微信小程序 loading 提示框参数一致
未设置则使用默认配置

 

conf.showToast

支付请求失败,是否显示微信小程序消息提示框
未设置则使用默认配置

 

conf.toastParams

showToast  true 时生效。与微信小程序消息提示框参数一致
未设置则使用默认配置

 

canvas

小游戏主画布对象

 

offscreen

离屏画布对象

 

请求示例

huoSdk.checkPay({

  data: {

    'order-currency': 'CNY',

    'order-cp_order_id': '10001',

    'order-product_price': 0.01,

    'order-product_id': '1000000001',

    'order-product_cnt': 1,

    'order-product_name': '金币',

    'order-product_desc': '金币',

    'order-ext': '',

    'role-event': '',

    'role-server_id': '',

    'role-server_name': '',

    'role-role_id': '',

    'role-role_name': '',

    'role-role_level': 0,

    'role-role_vip': 0

  }

}).then(res => {

  // do something

})

返回结果

成功状态返回:

参数名

说明

msg

成功提示,默认为:success

data

支付切换信息

data.order_id

订单id

data.mp_id

直接跳转的小程序id

data.path

直接跳转的小程序页面和参数

data.intro

扫码跳转提示文字

data.poster_img

扫码跳转小程序二维码展示海报图

data.image

扫码跳转小程序二维码

data.pay_type

支付切换类型 1:直接跳转小程序;2:小程序二维码跳转小程序;4:跳转客服充值

失败状态返回:

参数名

说明

msg

失败提示,默认为:fail

3.6、查询支付结果

请求方法

huoSdk.mpPayQuery()

请求参数

参数名

必选

说明

data

参数

data.order-order_id

订单id

conf

loading/消息提示框配置

conf.showLoading

支付请求过程中,是否显示微信小程序 loading 提示框
未设置则使用默认配置

conf.loadingParams

showLoading  true 时生效。与微信小程序 loading 提示框参数一致
未设置则使用默认配置

conf.showToast

支付请求失败,是否显示微信小程序消息提示框
未设置则使用默认配置

conf.toastParams

showToast  true 时生效。与微信小程序消息提示框参数一致
未设置则使用默认配置

请求示例

huoSdk.mpPayQuery({

  data: {

    'order-order_id': '10001'

  }

}).then(res => {

  // do something

})

返回结果

成功状态返回:

参数名

说明

msg

成功提示,默认为:success

data

支付结果信息

data.order_id

查询的订单号

data.status

玩家支付状态,1 待支付 2 支付成功 3 支付失败

data.cp_status

通知游戏状态,1 待通知 2 通知成功 3 通知失败

失败状态返回:

参数名

说明

msg

失败提示,默认为:fail

3.7、获取分享内容

通过此接口获取到个人分享码,在转发路径上携带此参数,具体操作详见下文请求示例

请求方法

huoSdk.getShareInfo()

请求参数

参数名

必选

说明

data

参数

data.path

分享路径,路径前不要添加'/',不得携带参数,空则为小程序主页面

conf

loading/消息提示框配置

conf.showLoading

支付请求过程中,是否显示微信小程序 loading 提示框
未设置则使用默认配置

conf.loadingParams

showLoading  true 时生效。与微信小程序 loading 提示框参数一致
未设置则使用默认配置

conf.showToast

支付请求失败,是否显示微信小程序消息提示框
未设置则使用默认配置

conf.toastParams

showToast  true 时生效。与微信小程序消息提示框参数一致
未设置则使用默认配置

请求示例

huoSdk.getShareInfo({

  data: {

    path: 'pages/box/box'

  }

}).then(res => {

  // 小程序

  this.setData({

    shareInfo: res.data

  })

 

  // 小游戏

  wx.onShareAppMessage(function () {

    return {

      title: res.data.title,

      imageUrl: res.data.image,

      query: `state=${res.data.state}`

    }

  })

  wx.showShareMenu()

})

 

// 小程序

onShareAppMessage: function (opt) {

  return {

    title: 'share title',

    imageUrl: 'share img src',

    path: `/pages/a/b?state=${this.data.shareInfo.state}`

  }

}

返回结果

成功状态返回:

参数名

说明

msg

成功提示,默认为:success

data

分享内容

data.share_id

分享ID

data.title

分享标题

data.image

分享内容图片

data.mp_qr

小程序码

data.pyq_bg

朋友圈分享背景图

data.state

本人分享码,转发路径上需要携带此参数

失败状态返回:

参数名

说明

msg

失败提示,默认为:fail

3.8、分享上报

由于官方接口能力调整,此接口只能统计用户触发分享点击,而非用户成功分享。在用户触发分享操作时调用。

请求方法

huoSdk.addShareInfo()

请求参数

参数名

必选

说明

data

参数

data.to_target

分享途径,wx:微信个人或群

data.share_id

分享ID,通过获取分享内容接口得到

data.more

扩展信息,分享到群组获得的 shareTickets,通过 wx.getShareInfo 方法可获得 encryptedData 和 iv 数据,以 json 格式传递

conf

loading/消息提示框配置

conf.showLoading

支付请求过程中,是否显示微信小程序 loading 提示框
未设置则使用默认配置

conf.loadingParams

showLoading  true 时生效。与微信小程序 loading 提示框参数一致
未设置则使用默认配置

conf.showToast

支付请求失败,是否显示微信小程序消息提示框
未设置则使用默认配置

conf.toastParams

showToast  true 时生效。与微信小程序消息提示框参数一致
未设置则使用默认配置

请求示例

huoSdk.addShareInfo({

  data: {

    to_target: 'wx'

  }

})

返回结果

成功状态返回:

参数名

说明

msg

成功提示,默认为:success

失败状态返回:

参数名

说明

msg

失败提示,默认为:fail

3.9、上传角色信息

SDK 上传角色信息

请求方法

huoSdk.updateRole()

上传事件类型说明

编号

名称

说明

1

online

角色登录

2

create

创建角色

3

levelup

提升等级

4

offline

角色退出

5

other

其他

6

delete

删除角色

请求参数

参数名

必选

说明

role

参数

role.event

角色上传事件类型

role.server_id

游戏服务器id

role.server_name

游戏服务器名称

role.role_id

玩家角色id

role.role_name

玩家角色名称

role.role_level

玩家角色等级

role.role_vip

玩家vip等级

role.combat_num

玩家战力

role.onlineTime

本次在线时长(单位:秒)

role.scene

登出场景

role.axis

登出时所在场景坐标,应该是 (x,y,z)的形式

role.scene

登出前角色最后一次操作或者完成的玩法

请求示例

huoSdk.updateRole({

  data: {

    'role-event': 'offline',

    'role-server_id': '10001',

    'role-server_name': '一区',

    'role-role_id': '1000005',

    'role-role_name': 'cx_test',

    'role-role_level': 150,

    'role-role_vip': 7,

    'role-combat_num': 1500000,

    'role-onlineTime': 0,

    'role-scene': '背包',

    'role-axis': '(999,999,999)',

    'role-scene': '打开礼包'

  }

}).then(res => {

  // do something

}, err => {

  // handle error

})

返回结果

成功状态返回:

参数名

说明

msg

成功提示,默认为:success

失败状态返回:

参数名

说明

msg

失败提示,默认为:fail

3.10、敏感词检测

请求方法

huoSdk.checkMsg()

请求参数

参数名

必选

说明

data

参数

data.content

用于检测的字符串

conf

loading/消息提示框配置

conf.showLoading

支付请求过程中,是否显示微信小程序 loading 提示框
未设置则使用默认配置

conf.loadingParams

showLoading  true 时生效。与微信小程序 loading 提示框参数一致
未设置则使用默认配置

conf.showToast

支付请求失败,是否显示微信小程序消息提示框
未设置则使用默认配置

conf.toastParams

showToast  true 时生效。与微信小程序消息提示框参数一致
未设置则使用默认配置

请求示例

huoSdk.checkMsg({

  data: {

    content: '特3456书yuuo莞6543李zxcz蒜7782法fgnv级'

  }

}).then(res => {

  console.log(res)

}, err => {

  console.log(err)

})

返回结果

成功状态返回:

参数名

说明

msg

成功提示,默认为:success

失败状态返回:

参数名

说明

msg

失败提示,默认为:fail

3.11、敏感图片检测

请求方法

huoSdk.checkImg()

请求参数

参数名

必选

说明

data

参数

data.filePath

用于检测的图片地址

conf

loading/消息提示框配置

conf.showLoading

支付请求过程中,是否显示微信小程序 loading 提示框
未设置则使用默认配置

conf.loadingParams

showLoading  true 时生效。与微信小程序 loading 提示框参数一致
未设置则使用默认配置

conf.showToast

支付请求失败,是否显示微信小程序消息提示框
未设置则使用默认配置

conf.toastParams

showToast  true 时生效。与微信小程序消息提示框参数一致
未设置则使用默认配置

请求示例

wx.chooseImage({

  count: 1,

  success: res => {

    huoSdk.checkImg({

      data: {

        filePath: res.tempFilePaths[0]

      }

    }).then(res => {

      console.log(res)

    }, err => {

      console.log(err)

    })

  }

})

返回结果

成功状态返回:

参数名

说明

msg

成功提示,默认为:success

失败状态返回:

参数名

说明

msg

失败提示,默认为:fail

3.12、角色支付切换

请求方法

huoSdk. userCheckpay ()

请求参数

参数名

必选

说明

role

参数

role.server_id

游戏服务器id

role.role_id

玩家角色id

role.role_level

玩家角色等级

role.role_vip

玩家vip等级

role.combat_num

玩家战力

请求示例

huoSdk.updateRole({

  data: {

    'role-server_id': '10001',

    'role-role_id': '1000005',

    'role-role_level': 150,

    'role-role_vip': 7,

    'role-combat_num': 1500000

  }

}).then(res => {

  // do something

}, err => {

  // handle error

})

返回结果

成功状态返回:

参数名

说明

msg

成功提示,默认为:success

data

支付切换信息

data.check

支付切换,1 切换 2 不切换 3关闭

失败状态返回:

参数名

说明

msg

失败提示,默认为:fail

 

3.13、小游戏互跳切换

请求方法

页面进入游戏按钮点击后调用

huoSdk. checkJump()

请求参数

参数名

必选

说明

 

 

 

请求示例

huoSdk.checkJump()

返回结果

JsSdk内已做处理,符合互跳规则弹窗提示跳转其他小程序