Files
premium/public/api.html
T
2025-05-18 07:29:01 +00:00

1310 lines
75 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Cache" content="no-cache">
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>Api文档</title>
<!-- 依 赖 样 式 -->
<link rel="stylesheet" href="/static/component/laytp/css/laytp.css" />
<!-- 加 载 样 式-->
<link rel="stylesheet" href="/static/admin/css/load.css" />
<!-- 布 局 样 式 -->
<link rel="stylesheet" href="/static/admin/css/apidoc.css" />
</head>
<style>
.api-page-tab-content {
background-color: #fff;
overflow: auto;
min-height: 100%;
}
.api-url {
/*position: relative;*/
color: rgb(221, 17, 68);
background: #f6f6f6;
border: 1px solid #ddd;
}
.layui-form-pane .layui-form-label {
width: 280px;
/*height: 34px;*/
padding: 6px 15px;
}
.layui-form-pane .layui-input-block {
margin-left: 280px;
}
.editormd-preview-container, .editormd-html-preview {
width: 98% !important;
font-size: 16px;
}
.markdown-body li {
/* 使md编辑器中的li取消样式none */
list-style: unset;
}
.api-tab-title {
position: fixed;
left: 230px;
right: 0;
z-index: 999999;
background-color: #fff;
}
.layui-tab-bar{
display:none;
}
</style>
<!-- 结 构 代 码 -->
<body class="layui-layout-body laytp-admin">
<!-- 布 局 框 架 -->
<div class="layui-layout layui-layout-admin">
<div class="layui-header">
<!-- 顶 部 左 侧 功 能 -->
<ul class="layui-nav layui-layout-left">
<li class="collaspe layui-nav-item"><a href="javascript:void(0);" class="layui-icon layui-icon-shrink-right"></a></li>
</ul>
<!-- 顶 部 右 侧 菜 单 -->
<div id="control" class="layui-layout-control"></div>
<ul class="layui-nav layui-layout-right">
<li class="layui-nav-item layui-hide-xs"><a href="javascript:void(0);" class="fullScreen layui-icon layui-icon-screen-full"></a></li>
<!-- 主 题 配 置 -->
<li class="layui-nav-item apiSet"><a href="javascript:void(0);" class="layui-icon layui-icon-set"></a></li>
<li class="layui-nav-item setting"><a href="javascript:void(0);" class="layui-icon layui-icon-more-vertical"></a></li>
</ul>
</div>
<!-- 侧 边 区 域 -->
<div class="layui-side layui-bg-black">
<!-- 菜 单 顶 部 -->
<div class="layui-logo">
<!-- 图 标 -->
<img class="logo" />
<!-- 标 题 -->
<span class="title"></span>
</div>
<!-- 菜 单 内 容 -->
<div>
<ul class="layui-nav arrow layui-nav-tree laytp-nav-tree" style="display: block;">
<li class="layui-nav-item">
<div class="search" style="padding: 5px;">
<input type="text" class="layui-input search-menu" placeholder="搜索文档">
</div>
</li>
</ul>
</div>
<div class="layui-side-scroll">
<div id="sideMenu"></div>
</div>
</div>
<!-- 视 图 页 面 -->
<div class="layui-body">
<div class="api-page-tab-content" id="meditor_1" style="display:none;">
<div class="layui-tab layui-tab-brief">
<ul class="layui-tab-title api-tab-title">
<li class="layui-this">
接口返回 </li>
</ul>
<div class="layui-tab-content meditorContent api-content" id="meditor_5_content">
<textarea style="display:none;">接口统一返回`json`格式的数据。
# 返回说明
|参数名|必然存在|类型|说明|
|:---- |:---|:----- |----- |
|code |是 |integer |接口返回码.0=常规正确码,表示常规操作成功;1=常规错误码,客户端仅需提示message;其他返回码与具体业务相关。框架实现了的唯一其他返回码:10401,前端需要跳转至登录界面。在一个复杂的交互过程中,你可能需要自行定义其他返回码|
|msg |是 |string | 接口返回文字描述 |
|time |是 |integer | 接口返回时间戳,单位秒 |
|data |是 |object/array | 附加数据。单条数据是对象,多条数据是数组。当为空时,会返回一个空对象{}|
# 返回示例
```
{
&quot;code&quot;:1,
&quot;msg&quot;:&quot;签名错误&quot;,
&quot;time&quot;:1613628412,
&quot;data&quot;:{}
}
```</textarea>
</div>
</div>
</div>
<div class="api-page-tab-content" id="api_3" style="display:none;">
<div class="layui-tab layui-tab-brief">
<ul class="layui-tab-title api-tab-title">
<li class="layui-this">接口说明</li>
<li>在线测试</li>
</ul>
<div class="layui-tab-content markdown-body api-content">
<div class="layui-tab-item layui-show editormd-html-preview">
<p><strong>简要说明</strong></p>
<ul>
<li>查询余额</li>
</ul>
<p><strong>请求方式</strong></p>
<ul>
<li><code class="api-url">POST/GET</code></li>
</ul>
<p><strong>请求地址</strong></p>
<ul>
<li><code class="api-url" route="/api.member/Get_balance">/api.member/Get_balance</code></li>
</ul>
<p><strong>Headers参数</strong></p>
<ul>
<li></li>
</ul>
<p><strong>Body参数</strong></p>
<div style="width: 100%;overflow-x: auto;">
<table class="table table-bordered table-hover">
<thead>
<tr>
<th style="text-align: left;">名称</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">uid</td>
<td style="text-align:left">string</td>
<td style="text-align:left"></td>
<td>uid </td>
</tr>
<tr>
<td style="text-align:left">time</td>
<td style="text-align:left">string</td>
<td style="text-align:left"></td>
<td>十位时间戳 </td>
</tr>
<tr>
<td style="text-align:left">sign</td>
<td style="text-align:left">string</td>
<td style="text-align:left"></td>
<td>签名 uid+time+key md5 </td>
</tr>
</tbody>
</table>
</div>
<p><strong>返回示例</strong></p>
<pre><code class="json">{
&quot;code&quot;: 0,
&quot;msg&quot;: &quot;获取成功&quot;,
&quot;time&quot;: 1747372349,
&quot;data&quot;: {
&quot;balance&quot;: 60
}
}</code></pre>
<p><strong>返回说明</strong></p>
<div style="width: 100%;overflow-x: auto;">
<table class="table table-bordered table-hover">
<thead>
<tr>
<th style="text-align: left;">名称</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">code</td>
<td style="text-align:left">integer</td>
<td style="text-align:left">接口返回码.0=常规正确码,表示常规操作成功;1=常规错误码,客户端仅需提示msg;其他返回码与具体业务相关。框架实现了的唯一其他返回码:10401,前端需要跳转至登录界面。在一个复杂的交互过程中,你可能需要自行定义其他返回码</td>
</tr>
<tr>
<td style="text-align:left">msg</td>
<td style="text-align:left">string</td>
<td style="text-align:left">返回描述</td>
</tr>
<tr>
<td style="text-align:left">time</td>
<td style="text-align:left">integer</td>
<td style="text-align:left">请求时间,Unix时间戳,单位秒</td>
</tr>
<tr>
<td style="text-align:left">data.balance</td>
<td style="text-align:left">string</td>
<td style="text-align:left">用户余额</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="layui-tab-item editormd-html-preview">
<div class="layui-card">
<div class="layui-card-header" style="background-color: #F2F2F2;">Body传参</div>
<div class="layui-card-body main-container">
<form class="layui-form layui-form-pane" method="POST/GET"
route="/api.member/Get_balance"
lay-filter="test_inline_3" id="test_inline_3">
<div class="layui-form-item">
<label class="layui-form-label">uid</label>
<div class="layui-input-block">
<input type="text"
name="uid" autocomplete="off"
placeholder="请输入uid"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">time</label>
<div class="layui-input-block">
<input type="text"
name="time" autocomplete="off"
placeholder="请输入十位时间戳"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">sign</label>
<div class="layui-input-block">
<input type="text"
name="sign" autocomplete="off"
placeholder="请输入签名 uid+time+key md5"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button type="button" class="laytp-btn laytp-btn-primary"
href="javascript:void(0);"
onclick="api.testInline(3)">提 交
</button>
</div>
</div>
</form>
</div>
</div>
<div class="layui-card" id="response_card_3">
<div class="layui-card-header" style="background-color: #F2F2F2;">响应输出</div>
<div class="layui-card-body">
<pre><code class="json" id="response_3"></code></pre>
<pre class="layui-code" id="response_headers_3"></pre>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="api-page-tab-content" id="api_4" style="display:none;">
<div class="layui-tab layui-tab-brief">
<ul class="layui-tab-title api-tab-title">
<li class="layui-this">接口说明</li>
<li>在线测试</li>
</ul>
<div class="layui-tab-content markdown-body api-content">
<div class="layui-tab-item layui-show editormd-html-preview">
<p><strong>简要说明</strong></p>
<ul>
<li>api 提交代开会员</li>
</ul>
<p><strong>请求方式</strong></p>
<ul>
<li><code class="api-url">POST</code></li>
</ul>
<p><strong>请求地址</strong></p>
<ul>
<li><code class="api-url" route="/api.member/submit">/api.member/submit</code></li>
</ul>
<p><strong>Headers参数</strong></p>
<ul>
<li></li>
</ul>
<p><strong>Body参数</strong></p>
<div style="width: 100%;overflow-x: auto;">
<table class="table table-bordered table-hover">
<thead>
<tr>
<th style="text-align: left;">名称</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">uid</td>
<td style="text-align:left">string</td>
<td style="text-align:left"></td>
<td>用户id </td>
</tr>
<tr>
<td style="text-align:left">username</td>
<td style="text-align:left">string</td>
<td style="text-align:left"></td>
<td>需要开通的用户名 </td>
</tr>
<tr>
<td style="text-align:left">order</td>
<td style="text-align:left">string</td>
<td style="text-align:left"></td>
<td>订单号 小于25位的字符串 </td>
</tr>
<tr>
<td style="text-align:left">cycle</td>
<td style="text-align:left">string</td>
<td style="text-align:left"></td>
<td>开通周期 支持 3 6 12 </td>
</tr>
<tr>
<td style="text-align:left">time</td>
<td style="text-align:left">string</td>
<td style="text-align:left"></td>
<td>时间戳 10位 </td>
</tr>
<tr>
<td style="text-align:left">callback</td>
<td style="text-align:left">string</td>
<td style="text-align:left"></td>
<td>回调地址 可以为空 </td>
</tr>
<tr>
<td style="text-align:left">sign</td>
<td style="text-align:left">string</td>
<td style="text-align:left"></td>
<td>签名 签名顺序 uid+username+time+key </td>
</tr>
</tbody>
</table>
</div>
<p><strong>返回示例</strong></p>
<pre><code class="json">{
&quot;code&quot;: 0,
&quot;msg&quot;: &quot;操作成功&quot;,
&quot;time&quot;: 1584513627,
&quot;data&quot;: {
&quot;token&quot;: &quot;b58ea1f0-e856-4ec4-b2b3-d852b9af86b5&quot;
}
}</code></pre>
<p><strong>返回说明</strong></p>
<div style="width: 100%;overflow-x: auto;">
<table class="table table-bordered table-hover">
<thead>
<tr>
<th style="text-align: left;">名称</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">code</td>
<td style="text-align:left">integer</td>
<td style="text-align:left">接口返回码.0=常规正确码,表示常规操作成功;1=常规错误码,客户端仅需提示msg;其他返回码与具体业务相关。框架实现了的唯一其他返回码:10401,前端需要跳转至登录界面。在一个复杂的交互过程中,你可能需要自行定义其他返回码</td>
</tr>
<tr>
<td style="text-align:left">msg</td>
<td style="text-align:left">string</td>
<td style="text-align:left">返回描述</td>
</tr>
<tr>
<td style="text-align:left">time</td>
<td style="text-align:left">integer</td>
<td style="text-align:left">请求时间,Unix时间戳,单位秒</td>
</tr>
<tr>
<td style="text-align:left">data.token</td>
<td style="text-align:left">string</td>
<td style="text-align:left">用户登录后得到的凭证,token</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="layui-tab-item editormd-html-preview">
<div class="layui-card">
<div class="layui-card-header" style="background-color: #F2F2F2;">Body传参</div>
<div class="layui-card-body main-container">
<form class="layui-form layui-form-pane" method="POST"
route="/api.member/submit"
lay-filter="test_inline_4" id="test_inline_4">
<div class="layui-form-item">
<label class="layui-form-label">uid</label>
<div class="layui-input-block">
<input type="text"
name="uid" autocomplete="off"
placeholder="请输入用户id"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">username</label>
<div class="layui-input-block">
<input type="text"
name="username" autocomplete="off"
placeholder="请输入需要开通的用户名"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">order</label>
<div class="layui-input-block">
<input type="text"
name="order" autocomplete="off"
placeholder="请输入订单号 小于25位的字符串"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">cycle</label>
<div class="layui-input-block">
<input type="text"
name="cycle" autocomplete="off"
placeholder="请输入开通周期 支持 3 6 12"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">time</label>
<div class="layui-input-block">
<input type="text"
name="time" autocomplete="off"
placeholder="请输入时间戳 10位"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">callback</label>
<div class="layui-input-block">
<input type="text"
name="callback" autocomplete="off"
placeholder="请输入回调地址 可以为空"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">sign</label>
<div class="layui-input-block">
<input type="text"
name="sign" autocomplete="off"
placeholder="请输入签名 签名顺序 uid+username+time+key"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button type="button" class="laytp-btn laytp-btn-primary"
href="javascript:void(0);"
onclick="api.testInline(4)">提 交
</button>
</div>
</div>
</form>
</div>
</div>
<div class="layui-card" id="response_card_4">
<div class="layui-card-header" style="background-color: #F2F2F2;">响应输出</div>
<div class="layui-card-body">
<pre><code class="json" id="response_4"></code></pre>
<pre class="layui-code" id="response_headers_4"></pre>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="api-page-tab-content" id="api_5" style="display:none;">
<div class="layui-tab layui-tab-brief">
<ul class="layui-tab-title api-tab-title">
<li class="layui-this">接口说明</li>
<li>在线测试</li>
</ul>
<div class="layui-tab-content markdown-body api-content">
<div class="layui-tab-item layui-show editormd-html-preview">
<p><strong>简要说明</strong></p>
<ul>
<li>退单接口,未开通且在未处理状态 可以支持退单</li>
</ul>
<p><strong>请求方式</strong></p>
<ul>
<li><code class="api-url">GET</code></li>
</ul>
<p><strong>请求地址</strong></p>
<ul>
<li><code class="api-url" route="/api.member/chargeback">/api.member/chargeback</code></li>
</ul>
<p><strong>Headers参数</strong></p>
<ul>
<li></li>
</ul>
<p><strong>Body参数</strong></p>
<div style="width: 100%;overflow-x: auto;">
<table class="table table-bordered table-hover">
<thead>
<tr>
<th style="text-align: left;">名称</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">uid</td>
<td style="text-align:left">string</td>
<td style="text-align:left"></td>
<td>uid </td>
</tr>
<tr>
<td style="text-align:left">order</td>
<td style="text-align:left">string</td>
<td style="text-align:left"></td>
<td>订单号 </td>
</tr>
<tr>
<td style="text-align:left">username</td>
<td style="text-align:left">string</td>
<td style="text-align:left"></td>
<td>开通的用户名 </td>
</tr>
<tr>
<td style="text-align:left">time</td>
<td style="text-align:left">string</td>
<td style="text-align:left"></td>
<td>十位时间戳 </td>
</tr>
<tr>
<td style="text-align:left">sign</td>
<td style="text-align:left">string</td>
<td style="text-align:left"></td>
<td>签名顺序 uid+order+username+time+key </td>
</tr>
</tbody>
</table>
</div>
<p><strong>返回示例</strong></p>
<pre><code class="json">{
&quot;code&quot;: 0,
&quot;msg&quot;: &quot;注销成功&quot;,
&quot;time&quot;: 1584513627,
&quot;data&quot;: null
}</code></pre>
<p><strong>返回说明</strong></p>
<div style="width: 100%;overflow-x: auto;">
<table class="table table-bordered table-hover">
<thead>
<tr>
<th style="text-align: left;">名称</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">code</td>
<td style="text-align:left">integer</td>
<td style="text-align:left">接口返回码.0=常规正确码,表示常规操作成功;1=常规错误码,客户端仅需提示msg;其他返回码与具体业务相关。框架实现了的唯一其他返回码:10401,前端需要跳转至登录界面。在一个复杂的交互过程中,你可能需要自行定义其他返回码</td>
</tr>
<tr>
<td style="text-align:left">msg</td>
<td style="text-align:left">string</td>
<td style="text-align:left">返回描述</td>
</tr>
<tr>
<td style="text-align:left">time</td>
<td style="text-align:left">integer</td>
<td style="text-align:left">请求时间,Unix时间戳,单位秒</td>
</tr>
<tr>
<td style="text-align:left">data</td>
<td style="text-align:left">null</td>
<td style="text-align:left">只会返回null</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="layui-tab-item editormd-html-preview">
<div class="layui-card">
<div class="layui-card-header" style="background-color: #F2F2F2;">Body传参</div>
<div class="layui-card-body main-container">
<form class="layui-form layui-form-pane" method="GET"
route="/api.member/chargeback"
lay-filter="test_inline_5" id="test_inline_5">
<div class="layui-form-item">
<label class="layui-form-label">uid</label>
<div class="layui-input-block">
<input type="text"
name="uid" autocomplete="off"
placeholder="请输入uid"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">order</label>
<div class="layui-input-block">
<input type="text"
name="order" autocomplete="off"
placeholder="请输入订单号"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">username</label>
<div class="layui-input-block">
<input type="text"
name="username" autocomplete="off"
placeholder="请输入开通的用户名"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">time</label>
<div class="layui-input-block">
<input type="text"
name="time" autocomplete="off"
placeholder="请输入十位时间戳"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">sign</label>
<div class="layui-input-block">
<input type="text"
name="sign" autocomplete="off"
placeholder="请输入签名顺序 uid+order+username+time+key"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button type="button" class="laytp-btn laytp-btn-primary"
href="javascript:void(0);"
onclick="api.testInline(5)">提 交
</button>
</div>
</div>
</form>
</div>
</div>
<div class="layui-card" id="response_card_5">
<div class="layui-card-header" style="background-color: #F2F2F2;">响应输出</div>
<div class="layui-card-body">
<pre><code class="json" id="response_5"></code></pre>
<pre class="layui-code" id="response_headers_5"></pre>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="api-page-tab-content" id="api_6" style="display:none;">
<div class="layui-tab layui-tab-brief">
<ul class="layui-tab-title api-tab-title">
<li class="layui-this">接口说明</li>
<li>在线测试</li>
</ul>
<div class="layui-tab-content markdown-body api-content">
<div class="layui-tab-item layui-show editormd-html-preview">
<p><strong>简要说明</strong></p>
<ul>
<li>订单状态查询</li>
</ul>
<p><strong>请求方式</strong></p>
<ul>
<li><code class="api-url">GET</code></li>
</ul>
<p><strong>请求地址</strong></p>
<ul>
<li><code class="api-url" route="/api.member/QueryOrder">/api.member/QueryOrder</code></li>
</ul>
<p><strong>Headers参数</strong></p>
<ul>
<li></li>
</ul>
<p><strong>Body参数</strong></p>
<div style="width: 100%;overflow-x: auto;">
<table class="table table-bordered table-hover">
<thead>
<tr>
<th style="text-align: left;">名称</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">uid</td>
<td style="text-align:left">string</td>
<td style="text-align:left"></td>
<td>uid </td>
</tr>
<tr>
<td style="text-align:left">order</td>
<td style="text-align:left">string</td>
<td style="text-align:left"></td>
<td>订单号 </td>
</tr>
<tr>
<td style="text-align:left">time</td>
<td style="text-align:left">string</td>
<td style="text-align:left"></td>
<td>十位时间戳 </td>
</tr>
<tr>
<td style="text-align:left">sign</td>
<td style="text-align:left">string</td>
<td style="text-align:left"></td>
<td>签名顺序 uid+time+order+key </td>
</tr>
</tbody>
</table>
</div>
<p><strong>返回示例</strong></p>
<pre><code class="json">{
&quot;code&quot;: 0,
&quot;msg&quot;: &quot;查询成功&quot;,
&quot;time&quot;: 1747391435,
&quot;data&quot;: {
&quot;username&quot;: &quot;@kuiba&quot;,
&quot;start&quot;: &quot;2&quot;,
&quot;orderid&quot;: &quot;20231005123456&quot;
}
}</code></pre>
<p><strong>返回说明</strong></p>
<div style="width: 100%;overflow-x: auto;">
<table class="table table-bordered table-hover">
<thead>
<tr>
<th style="text-align: left;">名称</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">code</td>
<td style="text-align:left">integer</td>
<td style="text-align:left">接口返回码.0=常规正确码,表示常规操作成功;1=常规错误码,客户端仅需提示msg;其他返回码与具体业务相关。框架实现了的唯一其他返回码:10401,前端需要跳转至登录界面。在一个复杂的交互过程中,你可能需要自行定义其他返回码</td>
</tr>
<tr>
<td style="text-align:left">msg</td>
<td style="text-align:left">string</td>
<td style="text-align:left">返回描述</td>
</tr>
<tr>
<td style="text-align:left">time</td>
<td style="text-align:left">integer</td>
<td style="text-align:left">请求时间,Unix时间戳,单位秒</td>
</tr>
<tr>
<td style="text-align:left">data</td>
<td style="text-align:left">null</td>
<td style="text-align:left">只会返回null</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="layui-tab-item editormd-html-preview">
<div class="layui-card">
<div class="layui-card-header" style="background-color: #F2F2F2;">Body传参</div>
<div class="layui-card-body main-container">
<form class="layui-form layui-form-pane" method="GET"
route="/api.member/QueryOrder"
lay-filter="test_inline_6" id="test_inline_6">
<div class="layui-form-item">
<label class="layui-form-label">uid</label>
<div class="layui-input-block">
<input type="text"
name="uid" autocomplete="off"
placeholder="请输入uid"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">order</label>
<div class="layui-input-block">
<input type="text"
name="order" autocomplete="off"
placeholder="请输入订单号"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">time</label>
<div class="layui-input-block">
<input type="text"
name="time" autocomplete="off"
placeholder="请输入十位时间戳"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">sign</label>
<div class="layui-input-block">
<input type="text"
name="sign" autocomplete="off"
placeholder="请输入签名顺序 uid+time+order+key"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button type="button" class="laytp-btn laytp-btn-primary"
href="javascript:void(0);"
onclick="api.testInline(6)">提 交
</button>
</div>
</div>
</form>
</div>
</div>
<div class="layui-card" id="response_card_6">
<div class="layui-card-header" style="background-color: #F2F2F2;">响应输出</div>
<div class="layui-card-body">
<pre><code class="json" id="response_6"></code></pre>
<pre class="layui-code" id="response_headers_6"></pre>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 遮 盖 层 -->
<div class="laytp-cover"></div>
<!-- 加 载 动 画-->
<div class="loader-main">
<div class="loader"></div>
</div>
</div>
<!-- 移 动 端 便 捷 操 作 -->
<div class="laytp-collasped-pe collaspe">
<a href="javascript:void(0);" class="layui-icon layui-icon-shrink-right"></a>
</div>
<!-- 请求配置弹出层内容开始 -->
<script type="text/html" id="set">
<div class="popup-content">
<div class="api-page-tab-content">
<form class="layui-form" lay-filter="setDataForm" id="setDataForm">
<div class="layui-form-item">
<label class="layui-form-label">Api请求域名</label>
<div class="layui-input-block">
<input type="text" name="apiUrl"
placeholder="完整的请求前缀,以http://或者https://开头,不以/结尾" autocomplete="off" class="layui-input"
value="{{d.apiUrl}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" title="开关">签名验证</label>
<div class="layui-input-block">
<!-- 隐藏域设置开关未选中时需要传递的参数值 -->
<input type="hidden" name="createSign" id="createSign-2" value="2"/>
<input type="checkbox" name="createSign" id="createSign-1" lay-skin="switch" lay-text="验证|不验证"
{{# if(d.createSign== 1){ }}checked="checked" {{# } }} value="1"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" title="Header参数">Header参数</label>
<div class="layui-input-block">
<table class="layui-table">
<thead>
<tr>
<th>参数Key</th>
<th>参数Value</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr>
<td align="right">
<input type="text" class="layui-input" value="token" readonly="readonly"/>
</td>
<td>
<input type="text" class="layui-input" name="token" value="{{d.headerJson.token}}"
autocomplete="off"/>
</td>
<td></td>
</tr>
{{# let k; }}
{{# for(k in d.headerJson){ }}
{{# if(k !== "token" && k !== "sign" && k !== "request-time"){ }}
<tr>
<td align="right">
<input type="text" class="layui-input" name="header[key][]" value="{{k}}"
autocomplete="off"/>
</td>
<td>
<input type="text" class="layui-input" name="header[value][]"
value="{{d.headerJson[k]}}" autocomplete="off"/>
</td>
<td>
<a class="layui-btn layui-btn-primary layui-btn-sm layui-icon layui-icon-delete del-header-param"></a>
</td>
</tr>
{{# } }}
{{# } }}
<tr>
<td colspan="4">
<a class="layui-btn layui-btn-primary layui-btn-sm layui-icon layui-icon-add-1 add-header-param">追加参数</a>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</form>
</div>
</div>
</script>
<!-- 请求配置弹出层内容结束 -->
<script type="text/html" id="arrayParam">
<table class="layui-table">
<tbody>
<tr>
<td align="right">
<input type="text" class="layui-input" name="{{d.field}}[]" autocomplete="off"/>
</td>
<td>
<a class="layui-btn layui-btn-primary layui-btn-sm layui-icon layui-icon-delete del-array-param"></a>
</td>
</tr>
<tr>
<td colspan="4">
<a class="layui-btn layui-btn-primary layui-btn-sm layui-icon layui-icon-add-1 add-array-param">追加参数</a>
</td>
</tr>
</tbody>
</table>
</script>
<!-- 依 赖 脚 本 -->
<script type="text/javascript" src="/static/component/jquery_3.3.1.js" charset="utf-8"></script>
<script type="text/javascript" src="/static/component/jquery.serializejson.min.js" charset="utf-8"></script>
<script type="text/javascript" src="/static/component/highlight/highlight.pack.js" charset="utf-8"></script>
<link rel="stylesheet" type="text/css" href="/static/component/highlight/styles/docco.css"/>
<link rel="stylesheet" href="/static/plugin/meditor/css/editormd.css"/>
<script src="/static/plugin/meditor/lib/marked.min.js"></script>
<script src="/static/plugin/meditor/lib/prettify.min.js"></script>
<script src="/static/plugin/meditor/lib/flowchart.min.js"></script>
<script src="/static/plugin/meditor/lib/raphael.min.js"></script>
<script src="/static/plugin/meditor/lib/underscore.min.js"></script>
<script src="/static/plugin/meditor/lib/sequence-diagram.min.js"></script>
<script src="/static/plugin/meditor/lib/jquery.flowchart.min.js"></script>
<script src="/static/plugin/meditor/editormd.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/blueimp-md5/2.18.0/js/md5.js"></script>
<script>
// 初始化静态文件版本号
localStorage.setItem("version","1.0.2.Release");
document.write("<script src='/static/component/layui/layui.js?v="+localStorage.getItem("version")+"'><\/script>");
document.write("<script src='/static/component/laytp/layuiConfig.js?v="+localStorage.getItem("version")+"'><\/script>");
</script>
<!-- 框 架 初 始 化 -->
<script>
//定义storage
let storage = (function () {
let storage;
try {
storage = window.localStorage;
return storage;
} catch (exception) {
return false;
}
}());
layui.use(['laytp','apidoc','popup'], function() {
let createSignKey = "";
let apiDomain = "";
let apiUrl = (apiDomain.length > 0) ? apiDomain : window.location.protocol + "//" + window.location.host;
//请求配置
let nowSetJson = storage.getItem("setJson") ? JSON.parse(storage.getItem("setJson")) : {
apiUrl: apiUrl,
createSign: 2,
headerJson: {token: ""}
};
//渲染所有的meditor编辑器内容
layui.each($(".meditorContent"), function (key, item) {
editormd.markdownToHTML($(item).attr('id'), {
htmlDecode: "style,script,iframe", // you can filter tags decode
emoji: true,
taskList: true,
tex: true, // 默认不解析
flowChart: true, // 默认不解析
sequenceDiagram: true, // 默认不解析
});
});
//当表格列数过长时将自动出现滚动条
var themeColorContext = layui.context.get('theme-color-context');
$.each($('table'), function (i, item) {
if($(this).attr('class') !== 'layui-table'){
$('thead > tr', this).attr('style', 'background-color: '+themeColorContext+';color:white;');
$(this).prop('outerHTML', '<div style="width: 95%;overflow-x: auto;">' + $(this).prop('outerHTML') + '</div>');
}
});
//弹窗展示请求配置
$(document).off("click", ".apiSet").on("click", ".apiSet", function () {
let layerDiv = layui.layer.open({
type: 1,
offset: 'r',
area: ['600px', '100%'],
title: "请求配置",
content: layui.laytpl($("#set").html()).render(nowSetJson),
shade: 0.1,
closeBtn: 0,
shadeClose: false,
anim: -1,
skin: 'layer-anim-right',
move: false,
success: function (layero, index) {
$(document).off("click", '#layui-layer-shade' + index).on("click", '#layui-layer-shade' + index, function () {
var $layero = $('#layui-layer' + index);
$layero.animate({
left: $layero.offset().left + $layero.width()
}, 200, function() {
let formJson = $('#setDataForm').serializeJSON();
let headerJson = {
token: formJson.token
};
let keyJson = {};
if (formJson.hasOwnProperty("header") && formJson.header.hasOwnProperty("key")) {
keyJson = formJson.header.key;
}
let valueJson = {};
if (formJson.hasOwnProperty("header") && formJson.header.hasOwnProperty("value")) {
valueJson = formJson.header.value;
}
$.each(keyJson, function (key, item) {
if(keyJson[key]){
headerJson[keyJson[key]] = valueJson[key];
}
});
let setJson = {
apiUrl: formJson.apiUrl,
createSign: formJson.createSign,
headerJson: headerJson
};
nowSetJson = setJson;
storage.setItem("setJson", JSON.stringify(setJson));
facade.success("保存成功");
layer.close(index);
});
});
},
btn: ['保 存', '取 消'],
yes: function (index, layero) {
let formJson = $('#setDataForm').serializeJSON();
let headerJson = {
token: formJson.token
};
let keyJson = {};
if (formJson.hasOwnProperty("header") && formJson.header.hasOwnProperty("key")) {
keyJson = formJson.header.key;
}
let valueJson = {};
if (formJson.hasOwnProperty("header") && formJson.header.hasOwnProperty("value")) {
valueJson = formJson.header.value;
}
$.each(keyJson, function (key, item) {
if(keyJson[key]){
headerJson[keyJson[key]] = valueJson[key];
}
});
let setJson = {
apiUrl: formJson.apiUrl,
createSign: formJson.createSign,
headerJson: headerJson
};
nowSetJson = setJson;
storage.setItem("setJson", JSON.stringify(setJson));
facade.success("保存成功");
layer.close(index);
}
});
layui.laytpForm.render("#layui-layer" + layerDiv);
});
//追加Header参数
$(document).off("click", ".add-header-param").on("click", ".add-header-param", function () {
let clickObj = $(this);
let template = '<tr>' +
'<td align="right">' +
'<input type="text" class="layui-input" name="header[key][]" autocomplete="off" />' +
'</td>' +
'<td>' +
'<input type="text" class="layui-input" name="header[value][]" autocomplete="off" />' +
'</td>' +
'<td>' +
'<a class="layui-btn layui-btn-primary layui-btn-sm layui-icon layui-icon-delete del-header-param"></a>' +
'</td>' +
'</tr>';
clickObj.parent().parent().before(template);
});
//追加数组参数
$(document).off("click", ".add-array-param").on("click", ".add-array-param", function () {
let clickObj = $(this);
let field = clickObj.data('field');
let template = '<tr>' +
'<td align="right">' +
'<input type="text" class="layui-input" name="' + field + '[]" autocomplete="off" />' +
'</td>' +
'<td>' +
'<a class="layui-btn layui-btn-primary layui-btn-sm layui-icon layui-icon-delete del-array-param"></a>' +
'</td>' +
'</tr>';
clickObj.parent().parent().before(template);
});
//删除header参数
$(document).off("click", ".del-header-param").on("click", ".del-header-param", function () {
let clickObj = $(this);
clickObj.parent().parent().remove();
});
//删除array参数
$(document).off("click", ".del-array-param").on("click", ".del-array-param", function () {
let clickObj = $(this);
clickObj.parent().parent().remove();
});
layui.apidoc.setConfigType("yml");
layui.apidoc.setConfigPath("/static/component/laytp/config/api.config.yml?v=" + localStorage.getItem("version"));
layui.apidoc.render();
// 搜索菜单功能添加在这里,不要添加到js组件里面,因为会在子页面进行调用,这里只会在父页面执行
// 这里被注释的代码,触发搜索菜单要按下回车键
$(".search-menu").focus(
function(){
$(document).on("keydown",
function(event){
if( event.keyCode === 13 ){
window.searchMenuData = [];
var searchKey = $(".search-menu").val();
if(searchKey){
searchMenu(window.menuData, searchKey);
layui.apidoc.setConfigType("yml");
layui.apidoc.setConfigPath("/static/component/laytp/config/api.config.yml?v=" + localStorage.getItem("version"));
var param = layui.apidoc.readConfig();
param.menu.async = false;
param.menu.data = window.searchMenuData;
param.isSearch = true;
layui.apidoc.render(param);
}else{
$("#sideMenu").show();
$("#searchSideMenu").hide();
renderMenu();
}
}
}
);
$(".search-menu").unbind();
}
);
// 递归搜索菜单
window.searchMenu = function(menuData, searchKey){
searchKey = searchKey.toLowerCase();
$.each(menuData, function(i, item) {
var oldTitle = item.title;
item.title = item.title.toLowerCase();
if(item.title.indexOf(searchKey) > -1){
item.title = oldTitle;
window.searchMenuData.push(item);
}else{
item.title = oldTitle;
if(item.children && item.children.length > 0){
searchMenu(item.children, searchKey);
}
}
});
};
// 重新渲染菜单
window.renderMenu = function(){
$(".search-menu").val('');
layui.apidoc.setConfigType("yml");
layui.apidoc.setConfigPath("/static/component/laytp/config/api.config.yml?v=" + localStorage.getItem("version"));
var config = layui.apidoc.readConfig();
layui.apidoc.menuRender(config);
};
window.api = {
testInline: function (id) {
let route = $("#test_inline_" + id).attr('route');
let url = nowSetJson.apiUrl + route;
let method = $("#test_inline_" + id).attr('method');
if (nowSetJson.createSign === "1") {
nowSetJson.headerJson['request-time'] = Date.now();
nowSetJson.headerJson.sign = api.createSign(nowSetJson.headerJson['request-time']);
}
let formData = new FormData();
$('#test_inline_'+id).find('input').each(function (i, input) {
if ($(input).attr('type') == 'file') {
formData.append($(input).attr('name'), $(input)[0].files[0]);
} else {
formData.append($(input).attr('name'), $(input).val())
}
});
$.ajax({
url: url,
headers: nowSetJson.headerJson,
data: $('#test_inline_'+id).prop('method').toLowerCase() == 'get' ? $('#test_inline_'+id).serialize() : formData,
type: method,
dataType: 'json',
contentType: false,
processData: false,
success: function (data, textStatus, xhr) {
if (typeof data === 'object') {
var str = JSON.stringify(data, null, 2);
if(str) {
$('#response_' + id).html(hljs.highlightAuto(str).value);
}
} else {
$('#response_' + id).html(data || '');
}
$('#response_headers_' + id).html('HTTP ' + xhr.status + ' ' + xhr.statusText + '<br/><br/>' + xhr.getAllResponseHeaders());
$('#response_card_' + id).show();
facade.success('请求成功');
},
error: function (xhr) {
try {
var str = JSON.stringify($.parseJSON(xhr.responseText), null, 2);
} catch (e) {
var str = xhr.responseText;
}
$('#response_headers_' + id).html('HTTP ' + xhr.status + ' ' + xhr.statusText + '<br/><br/>' + xhr.getAllResponseHeaders());
if(str){
$('#response_' + id).html(hljs.highlightAuto(str).value);
}
$('#response_card_' + id).show();
facade.error('请求失败');
}
});
return false;
},
createSign: function (requestTime) {
return md5(md5(requestTime) + md5(createSignKey)).toUpperCase();
},
};
});
</script>
</body>
</html>