目录
名称 | 说明 |
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充值信息:"游戏"调用"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步处理支付成功后给游戏客户端推送发放玩家购买的物品。 |
简要描述:
· 验证登陆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 | 没有接口访问权限(注:出现时可联系技术人员确认权限是否开通) |
简要描述:
· 平台充值成功后通知游戏服务器 请求接口
请求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 服务器将会在周期内进行重复通知。 |
简要描述:
· 上报游戏角色信息到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 | 没有接口访问权限(注:出现时可联系技术人员确认权限是否开通) |
· “SDK 服务器”采用HTTP 协议作为通信协议,
· “游戏服务器”通过构造HTTP 请求(POST方式)向“SDK 服务器”发起接口请求。
· user_token验证应该在客户端接到sdk 登陆成功后,客户端再登陆游戏服务器的时候,游戏服务器请求sdk 服务器验证。
· 在登陆或必要的时候调用,不做无故调用,注意控制调用次数,这个接口做了次数等限制。
在充值完成之后,SDK服务器会回调CP 给的地址。
· *需要校验回调的金额是否跟商品的真实价格一致;
· *需要校验用户是否充值成功;
· *返回值:返回“SUCCESS”表示通知CP成功了,其他错误等情况返回"FAILURE"。
登陆认证:
$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;
}
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();
}
}
}
此对接文档说明如何在微信小程序中集成 huoSdk。
在创建的项目中,新建一个名为 libs 的目录,将 huosdk-<version>.js 文件拷贝到 libs 目录下,即可完成 SDK 集成。
登录微信公众平台,在 "设置"->"开发设置" 中配置 request 合法域名:https://mp.cceuc.com
从平台处,获取以下参数,用于对接。
参数名 | 说明 |
app_id | 游戏标识ID,调用初始化时传入 |
在本地文件中引入 huosdk-<version>.js 文件。
const huoSdk = require('<path>/libs/huosdk-<version>.js')
huoSdk 提供的所有 api 都会返回一个 Promise 对象。
通过对 Promise 对象的成功/失败状态分别绑定相应的处理方法,可以获取 api 的成功/失败返回结果。
请确保在初始化返回成功后,再调用其他 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 |
注意:如果需要标识归属渠道或上级玩家,则调用本接口时必须传递 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 |
使用 引导用户主动进行授权操作,通过 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 |
此接口会依据管理后台配置,分三种处理情况:
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 |
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 |
通过此接口获取到个人分享码,在转发路径上携带此参数,具体操作详见下文请求示例。
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 |
由于官方接口能力调整,此接口只能统计用户触发分享点击,而非用户成功分享。在用户触发分享操作时调用。
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 |
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 |
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 |
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 |
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 |
页面进入游戏按钮点击后调用
huoSdk. checkJump()
参数名 | 必选 | 说明 |
huoSdk.checkJump()
JsSdk内已做处理,符合互跳规则弹窗提示跳转其他小程序