打通应用系统商接口要求
<p>[TOC]</p>
<h5>应用说明</h5>
<ul>
<li>1: 此应用中心思想是 通过认证后,免登录跳转</li>
<li>2: 此文件展示系统商系统需要返回的接口数据示例</li>
<li>3: 认证(检查已有账户), 注册, 登录逻辑需要系统商根据自身系统编辑逻辑; 认证,注册需要返回值, 数据格式,参考返回值; 登录则是有框架重定向到 系统商编辑登录方法</li>
</ul>
<h5>配置</h5>
<p>双方系统需共同绑定key,key默认 0KRJ04auDJJof3fNv, 上线之后需更换(建议后台做上配置,用户可随时更换)</p>
<h5>框架请求</h5>
<p>说明: 框架应用请求共三个方法, 认证(检查已有账户), 注册, 登录
框架执行逻辑: 1: 认证->登录 2:注册->登录
下面是访问系统商接口的路由:</p>
<ul>
<li><code>http://xx.com/路由? 加密字符串</code>
注: 加密字符串,框架通过 双方系统共同的 key,通过加密获得的加密字符串,加密字符串解密之后,参数为数组格式, 具体参考参数, 解密方法参考代码示例, 对于加解密方式, 可以和平台方沟通, 用不同的加密方式</li>
</ul>
<h5>请求方式</h5>
<ul>
<li>GET </li>
</ul>
<h5>参数</h5>
<p>解密之后的参数:
check: ["username"=>"ddad","pasword"=>"dada","method"=>"check"]
register: ["username"=>"ddad","pasword"=>"dada","method"=>"register"]
login: ["username"=>"ddad","method"=>"login"] </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">username</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>用户名, 此参数在三个方法中必存在</td>
</tr>
<tr>
<td style="text-align: left;">pasword</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">string</td>
<td>密码, 此参数在 认证,注册 中必存在</td>
</tr>
<tr>
<td style="text-align: left;">method</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>方式: check: 认证, register: 注册, login:登录</td>
</tr>
</tbody>
</table>
<h5>系统商系统代码示例</h5>
<pre><code> <?php
/*
* 注意:
* 1: 此文件展示 接口示例,
* 2: 此应用中心思想是 通过认证后,免登录跳转
*/
//可根据自身系统编辑逻辑
class ktadmin
{
protected $key = "0KRJ04auDJJof3fNv"; //建议总后台做个配置,可以直接修改此处key(修改此key,需要和框架配置统一),也可以不做
private $data; //解密后的参数
public function __construct()
{
$this->data = $this->getParam(); //获取传的参数,数组
}
//已有账户认证, 根据自身系统编写
public function check(){
$data = $this->data; //["username"=>"ddad","pasword"=>"dada","method"=>"check"]
//认证逻辑
//根据账户和密码查询账户, 存在即返回值 success, 失败为 error,
// $msg 即为状态描述
$code = "success";
return json(['code'=>$code,"msg"=>$msg]);
}
//注册账户, 根据自身系统编写
public function register(){
$data = $this->data; //["username"=>"ddad","pasword"=>"dada","method"=>"register"]
//注册逻辑
//根据账户,密码注册账户, 如果还需其它字段,可与平台沟通, 注册即返回值 success, 失败为 error,
// $msg 即为状态描述,
$code = "success";
return json(['code'=>$code,"msg"=>$msg]); //返回值结构
}
//登录账户, 根据自身系统编写
public function login(){
$data = $this->data; //["username"=>"ddad","method"=>"login"]
//登录逻辑,注意,此时参数只有账户
//认证通过之后, 框架会通过header跳转系统商系统,
//登录跳转逻辑
$url = "https://www.baidu.com";
header($url);
}
//获取参数
private function getParam()
{
$data = $this->decrypt(); //执行解密获取参数
if (!$data || !isset($data['username']) || !$data['username'] || !isset($data['method']) || !$data['method']) {
exit('参数错误');
}
return $data;
}
//解密
private function decrypt()
{
$str = $_SERVER['QUERY_STRING']; //确保此参数为加密后的字符串, 不同框架获取参数方式不一样, 可与平台方沟通调整参数传递方式,
if(!$str) return [];
$str = str_replace(array('-','_'),array('+','/'),$str);
$str = base64_decode($str);
$key = md5($this->key);
$lenKey = strlen($key);
$sign = substr($str,0,$lenKey);
if($sign != $key) exit('参数错误');
$paramStr = substr($str,$lenKey);
$param = json_decode(base64_decode($paramStr),true);
return $param;
}
}</code></pre>
<h5>系统商需要返回的结果</h5>
<p>注: 认证, 注册, 需要有返回值, 登录 则会有框架 重定向到系统商系统login方法
注: 返回值需要按一定规则
返回值示例,
{"code":"success","mgs":"认证成功"}</p>