Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Z
zw_game_sdk
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
CI / CD
CI / CD
流水线
日程表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
提交
问题看板
Open sidebar
zwwl
zw_game_sdk
Commits
05fb8582
提交
05fb8582
authored
3月 11, 2024
作者:
yyc
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
礼包发货通知
上级
8f447b14
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
238 行增加
和
0 行删除
+238
-0
微信小游戏游戏圈礼包-订阅消息外部token.md
微信小游戏游戏圈礼包-订阅消息外部token.md
+238
-0
没有找到文件。
微信小游戏游戏圈礼包-订阅消息外部token.md
0 → 100644
浏览文件 @
05fb8582
# 服务端接口说明-v1.0.0
# 服务端接口说明-v1.0.0
### 目录
1.[
接入说明
](
#sec1
)
1.1
[
术语表
](
#sec1.1
)
1.2
[
数据字典
](
#sec1.2
)
2.[
服务端接口
](
#sec1
)
2.1
[
接口规则
](
#sec2.1
)
请求域名
请求方式
请求格式
返回格式
状态说明
签名规则
签名示例
2.2
[
角色上报
](
#sec2.2
)
接口说明
接口地址
请求参数
返回参数
请求示例
2.3
[
是否允许创角
](
#sec2.3
)
接口说明
接口地址
请求参数
返回参数
请求示例
## 1. 接入说明<a name="sec1"></a>
### 1.1 术语表<a name="sec1.1"></a>
> | 名称 | 说明 |
> | ---------- | ------------------------------------------------------------ |
> | CP | 游戏研发商。 |
> | SDK | 由平台方提供给游戏研发商,用于游戏接入平台登录,支付。 |
> | SDK 服务 | 由平台方开发,用于完成 SDK 的登录,支付流程,承接游戏服务端的数据。 |
> | 游戏服务 | 游戏研发商开发,为游戏提供服务。 |
> | 小游戏 | 游戏研发方商开发的微信小游戏。 |
### 1.2 数据字典<a name="sec1.2"></a>
> | 名称 | 说明 |
> | ----------- | ------------------------------------------------- |
> | game_id | 游戏在平台的唯一标识。 |
> | game_secret | 平台方提供,游戏签名秘钥。 |
## 2. 服务端接入<a name="sec2"></a>
### 2.1 接口规则<a name="sec2.1"></a>
##### 请求域名
> 【HTTPS】zyou.wozhangwan.com/api
##### 请求方式
> 【POST】
##### 请求格式
> 【JSON】
##### 返回格式
> 【JSON】
##### 状态说明
| 状态码 | 说明 |
| ------ | -------- |
| 1 | 成功 |
| -1 | 错误 |
| -100 | 未登录 |
| -422 | 参数错误 |
##### 签名规则
> **签名秘钥**
>
> game_secret 为 16 位字符串,由 SDK 对接时提供,每一个游戏单独提供一个 game_secret
> **签名串**
>
> 请求参数(去除 sign)通过参数名作升序排序;如果参数值是一个数组不参与签名,如果参数值是一个对象不参与签名, game_secret 以一下格式进行字符串拼接(game_secret 放在最后)
>
> key1=value1&key2=value2&key3=value3&game_secret=secret
> **签名算法**
>
> 【md5】
>
> sign = md5(签名串)
> ##### 注意
>
> <u>如果参数值是一个对象,不参与签名;</u>
>
> <u>转换 json 注意不要对中文进行转义</u>
>
> <u>如果参数值是一个数组不参与签名</u>
##### 签名示例
```
php
<php
?
$
gameSecret =
"game_secret"
;
$
params =
["player_id"
=
>
1245, "game_id" => 14];
$signStr = '';
ksort($params, SORT_REGULAR);
foreach ($params as $key => $val) {
if (is_array($val)) {
continue;
}
$signStr .= $key . '=' . $val . '
&';
}
$signStr .= 'game_secret=' . $gameSecret;
$sign = md5($signStr);
```
### 2.2 获取小游戏token <a name="sec2.2"></a>
##### 接口说明
> 游戏方通过服务端获取小游戏的 token SDK 服务器;
>
> 接口需要进行签名,签名方法详见[接口规则](#sec2.1)
##### 接口地址
> 【POST】/server/game/token
##### 请求参数
> **Headers**:
>
> | 参数 | 必选 | 参数值 | 说明 |
> | ------------ | ---- | ---------------- | ---- |
> | Content-Type | true | application/json | |
> **Body:**
>
> | 参数 | 必选 | 类型 | 默认值 | 说明 |
> | :----------------------------------------------------------- | :---- | :----- | :----- | :--------------------------------------------------------- |
> | game_id | true | Int | - | 游戏的game_id, 角色当前游戏ID |
> | dateTime | true | String | - | 当前时间 2024-01-01 12:22:20 |
> | sign | true | String | - | 签名 |
##### 返回参数
> | 参数 | 必选 | 类型 | 默认值 | 说明 |
> | ----------- | ---- | ------ | ------ | -------- |
> | status_code | true | Int | - | 状态码 |
> | msg | true | STRING | - | 返回信息 |
> | data | | | | |
##### 请求示例
```
php
<php
?
public
function
report
(){
$
host =
'https://zyou.wozhangwan.com/api'
;
$
checkLoginUrl =
'/server/game/token'
;
$
url =
$host.$checkLoginUrl;
$
gameSecret =
"game_secret"
;
$
body =
["game_id"
=
>
121, //角色当前SDK方游戏ID
"dateTime" => '2024-01-01 11:11:11',//游戏登录后由 SDK 返回的player_id
];
$body["sign"] = makeSign($body, $gameSecret);
$headers = ["Content-Type:application/json"];
$response = curl_post($url, $body, $hearders);
}
public function makeSign($params,$gameSecret){
$signStr = '';
ksort($params, SORT_REGULAR);
foreach ($params as $key => $val) {
if (is_array($val)) {
continue;
}
$signStr .= $key . '=' . $val . '
&';
}
$signStr .= 'game_secret=' . $gameSecret;
return md5($signStr);
}
public function curl_post($url, $body, $headers){
//初始化
$curl = curl_init ( ) ;
//设置抓取的url
curl_setopt ( $curl , CURLOPT_URL , $url) ;
//设置头文件的信息作为数据流输出
curl_setopt ( $curl , CURLOPT_HEADER , 1 ) ;
//设置获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt ( $curl , CURLOPT_RETURNTRANSFER , 1 ) ;
//设置post方式提交
curl_setopt ( $curl , CURLOPT_POST , 1 ) ;
//设置post参数
curl_setopt ( $curl , CURLOPT_POSTFIELDS , json_encode($body) ) ;
//设置请求头
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
//执行命令
$data = curl_exec ( $curl ) ;
//关闭URL请求
curl_close ( $curl ) ;
//显示获得的数据
return json_decode($data, true);
}
```
```
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论