接入文档
龙擎联运开放平台为游戏开发者提供一站式接入服务,快速实现用户登录、支付、数据统计等功能
平台介绍
龙擎联运开放平台是专业的H5游戏联运平台,为游戏开发者提供用户登录、统一支付、数据统计、结算分成等全链路服务。
开发者只需简单接入SDK,即可快速上线游戏,享受平台流量和专业运营服务。
平台优势
- 高分成比例:开发者最高可享70%流水分成
- 快速接入:标准SDK,1天即可完成接入
- 统一支付:支持微信、支付宝等多种支付方式
- 数据透明:实时数据统计,收入清晰可见
- 按时结算:月结模式,次月15日前完成打款
- 安全可靠:多重安全机制,保障数据和资金安全
接入流程
- 注册账号:注册成为平台开发者,填写基本信息
- 创建游戏:在开发者后台创建游戏,获取AppID、AppKey、AppSecret
- 接入SDK:下载对应SDK,按照文档完成接入
- 提交审核:提交游戏审核,审核通过后即可上线
- 开始运营:游戏正式上线,开始获取收益
提示:接入过程中如有问题,请联系客服QQ或发送邮件获取技术支持。
H5 SDK接入
引入SDK
在游戏页面中引入SDK文件:
<!-- 引入龙擎SDK -->
<script src="https://sdk.npr.hk/lq-sdk.js"></script>
初始化
在游戏启动前初始化SDK:
// 初始化SDK
LQSDK.init({
app_id: '你的AppID',
app_key: '你的AppKey',
debug: false
});
登录
调用登录方法,用户登录成功后会返回用户信息:
// 调用登录
LQSDK.login().then(user => {
console.log('登录成功', user);
// user包含:user_id, username, nickname, avatar, token
}).catch(err => {
console.log('登录失败', err);
});
支付
调用支付方法,跳转到支付页面:
// 发起支付
LQSDK.pay({
game_order_sn: '游戏内部订单号',
product_id: '商品ID',
product_name: '商品名称',
amount: 600, // 单位:分
role_id: '角色ID',
role_name: '角色名',
server_id: '服务器ID',
ext: '透传参数'
});
注意:支付金额单位为分,6元请传600。
H5 API说明
| 方法名 | 说明 | 参数 | 返回值 |
|---|---|---|---|
| init(options) | 初始化SDK | app_id, app_key, debug | 无 |
| login() | 调用登录 | 无 | Promise,返回用户信息 |
| logout() | 退出登录 | 无 | 无 |
| getUser() | 获取当前用户 | 无 | 用户信息对象 |
| pay(params) | 发起支付 | 见支付参数说明 | 无(跳转支付页) |
| reportRole(roleInfo) | 上报角色信息 | role_id, role_name, server_id, level | Promise |
| report(event, data) | 上报数据 | 事件名, 数据对象 | Promise |
PHP SDK接入
引入SDK
require_once 'LQSDK.php';
初始化
$lq = new LQSDK([
'app_id' => '你的AppID',
'app_key' => '你的AppKey',
'app_secret' => '你的AppSecret',
'api_url' => 'https://sdk.npr.hk/api'
]);
验证登录token
// 验证前端传过来的token
$token = $_POST['token'];
$user = $lq->verifyToken($token);
if ($user) {
// 验证成功,$user包含用户信息
echo '登录成功';
} else {
echo '登录失败';
}
创建订单
$result = $lq->createOrder([
'game_order_sn' => '游戏内部订单号',
'user_id' => 123,
'role_id' => '角色ID',
'role_name' => '角色名',
'product_name' => '6元钻石',
'amount' => 600 // 单位:分
]);
if ($result['code'] == 0) {
// 返回支付URL,前端跳转到这个地址
$payUrl = $result['data']['pay_url'];
}
重要:AppSecret 只能在服务端使用,绝对不能出现在前端代码中!
签名规则
所有服务端接口请求都需要携带签名,防止数据被篡改。
签名生成步骤
- 将所有请求参数(除sign外)按照参数名ASCII码从小到大排序
- 过滤掉值为空的参数
- 按照 key=value&key=value 的格式拼接成字符串
- 在字符串最后拼接 &app_secret=你的AppSecret
- 对整个字符串进行MD5加密,得到签名值
示例
// 请求参数
$params = [
'app_id' => 'LQ20240101ABC12345',
'timestamp' => 1704067200,
'nonce' => 'abc123def456',
'token' => 'xxxxxx'
];
// 1. 按键名排序
ksort($params);
// 2. 拼接字符串
$str = '';
foreach ($params as $key => $value) {
if ($value !== '' && $key != 'sign') {
$str .= $key . '=' . $value . '&';
}
}
// 3. 拼接app_secret
$str .= 'app_secret=' . $appSecret;
// 4. MD5加密
$sign = md5($str);
提示:时间戳有效期为10分钟,超过有效期的请求会被拒绝,防止重放攻击。
接口文档
所有接口基础地址:https://sdk.npr.hk/api
所有接口都需要传递以下公共参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| app_id | string | 是 | 游戏AppID |
| timestamp | int | 是 | 当前时间戳(秒) |
| nonce | string | 是 | 随机字符串,16位 |
| sign | string | 是 | 签名,见签名规则 |
1. 验证登录token
接口地址:/verifyToken
请求方式:POST
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| token | string | 是 | 登录token |
返回数据:
{
"code": 0,
"msg": "success",
"data": {
"user_id": 123,
"username": "testuser",
"nickname": "测试用户",
"avatar": ""
}
}
2. 创建支付订单
接口地址:/createOrder
请求方式:POST
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| game_order_sn | string | 是 | 游戏内部订单号 |
| user_id | int | 是 | 用户ID |
| product_id | string | 否 | 商品ID |
| product_name | string | 是 | 商品名称 |
| amount | int | 是 | 金额,单位:分 |
| role_id | string | 否 | 角色ID |
| role_name | string | 否 | 角色名 |
| server_id | string | 否 | 服务器ID |
| ext | string | 否 | 透传参数,回调时原样返回 |
3. 查询订单
接口地址:/queryOrder
请求方式:POST
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| order_sn | string | 否 | 平台订单号(和游戏订单号二选一) |
| game_order_sn | string | 否 | 游戏订单号 |
4. 同步角色信息
接口地址:/syncRole
请求方式:POST
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| user_id | int | 是 | 用户ID |
| role_id | string | 是 | 角色ID |
| role_name | string | 是 | 角色名 |
| server_id | string | 否 | 服务器ID |
| server_name | string | 否 | 服务器名 |
| level | int | 否 | 角色等级 |
支付回调
支付成功后,平台会向游戏配置的支付回调地址发送POST请求,通知支付结果。
回调参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| order_sn | string | 平台订单号 |
| game_order_sn | string | 游戏内部订单号 |
| amount | int | 订单金额(分) |
| pay_amount | int | 实付金额(分) |
| pay_time | string | 支付时间 |
| pay_type | int | 支付方式(1=微信 2=支付宝) |
| status | int | 订单状态(1=已支付) |
| ext | string | 透传参数 |
| sign | string | 签名 |
回调处理
// 处理支付回调
$result = $lq->handlePayCallback($_POST);
if ($result) {
// 验证成功,给玩家发货
$orderSn = $_POST['order_sn'];
$gameOrderSn = $_POST['game_order_sn'];
$amount = $_POST['amount'];
// TODO:查询游戏订单,给玩家加钻石/道具
// 返回success表示处理成功
echo 'success';
} else {
// 验证失败
echo 'fail';
}
回调返回:处理成功请输出字符串 success,平台收到后就不会再重复回调了。
注意:一定要验证签名和金额,防止伪造回调请求。同时要做幂等处理,同一订单只发货一次。
常见问题
Q: 签名验证失败怎么办?
A: 请检查以下几点:
- 参数是否按照ASCII码排序
- 是否过滤了空值参数
- app_secret 是否拼接在最后
- app_id 和 app_secret 是否正确
- 编码是否一致(建议统一用UTF-8)
Q: 支付回调收不到怎么办?
A: 请检查:
- 回调地址是否正确配置
- 回调地址是否可以公网访问
- 服务器防火墙是否拦截了请求
- 是否返回了 success 字符串
Q: token验证失败?
A: token有效期为2小时,请在用户登录后及时验证并建立游戏自己的会话。
Q: 最低提现金额是多少?
A: 最低提现金额为100元,手续费1%,次月15日前结算上月收入。
Q: 如何联系技术支持?
A: 可以通过以下方式联系我们:
- 客服QQ:见平台系统设置
- 客服微信:见平台系统设置
- 客服邮箱:见平台系统设置