用户登录
<h5>简要描述</h5>
<ul>
<li>请求URL不是固定的,生成方式请查看[API总体说明]</li>
</ul>
<h5>请求URL</h5>
<ul>
<li><code>https://52.yunhu365.com/ErpServer/h5api/12116/st0908_1</code> </li>
</ul>
<h5>请求方式</h5>
<ul>
<li>post</li>
</ul>
<h5>Header</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">header</th>
<th style="text-align: left;">必选</th>
<th>类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">sign</td>
<td style="text-align: left;">是</td>
<td>string</td>
<td>上传的json字符串经过md5签名的值</td>
</tr>
<tr>
<td style="text-align: left;">token</td>
<td style="text-align: left;">是</td>
<td>string</td>
<td>登录成功后返回的用户token,登录前传入空字符串</td>
</tr>
</tbody>
</table>
<h5>请求参数示例</h5>
<pre><code>{
"actionName": "login",
"logintype": 0,
"mbphone": "18062639596",
"upw": "123456",
"openid": ""
}
</code></pre>
<h5>json字段说明</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">字段名</th>
<th style="text-align: left;">必选</th>
<th>类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">actionName</td>
<td style="text-align: left;">是</td>
<td>string</td>
<td>固定传login</td>
</tr>
<tr>
<td style="text-align: left;">logintype</td>
<td style="text-align: left;">是</td>
<td>int</td>
<td>登录类型0表示手机号+密码登录,1表示手机号+短信+图形验证码登录,2邮箱+密码登录,3用户名+密码登录</td>
</tr>
<tr>
<td style="text-align: left;">mbphone</td>
<td style="text-align: left;">是</td>
<td>string</td>
<td>手机号码</td>
</tr>
<tr>
<td style="text-align: left;">upw</td>
<td style="text-align: left;">是</td>
<td>string</td>
<td>密码,logintype=0时必传</td>
</tr>
<tr>
<td style="text-align: left;">codeid</td>
<td style="text-align: left;">是</td>
<td>int</td>
<td>短信ID,logintype=1时必传</td>
</tr>
<tr>
<td style="text-align: left;">msgcode</td>
<td style="text-align: left;">是</td>
<td>string</td>
<td>用户录入的短信验证码,logintype=1时必传</td>
</tr>
</tbody>
</table>
<h5>成功返回示例</h5>
<pre><code>{
"code": 1,
"msg": "",
"data": {
"userid": 1,
"username": "18062639596",
"userkey": "ed0113fe20eda14cd178dcceb986e932",
"token": "d1381caefec66ccc06e06d4ab5d2da23",
"nickname": "明记",
"usermode": 1,
"userimg": "",
"mbphone": "18062639596",
"sex": "男"
}
}
</code></pre>
<h5>成功返回示例的参数说明</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">code</td>
<td style="text-align: left;">string</td>
<td>错误码,1表示成功</td>
</tr>
<tr>
<td style="text-align: left;">msg</td>
<td style="text-align: left;">string</td>
<td>如果有错误此值不为空,否则值为空字符串</td>
</tr>
<tr>
<td style="text-align: left;">data</td>
<td style="text-align: left;">object</td>
<td>返回的数据对象</td>
</tr>
<tr>
<td style="text-align: left;">userid</td>
<td style="text-align: left;">string</td>
<td>用户ID</td>
</tr>
<tr>
<td style="text-align: left;">username</td>
<td style="text-align: left;">string</td>
<td>用户名</td>
</tr>
<tr>
<td style="text-align: left;">userkey</td>
<td style="text-align: left;">string</td>
<td>用户密钥,请全局存放,用于数据签名</td>
</tr>
<tr>
<td style="text-align: left;">token</td>
<td style="text-align: left;">string</td>
<td>用户token,请全局存放,用于参与签名</td>
</tr>
<tr>
<td style="text-align: left;">nickname</td>
<td style="text-align: left;">string</td>
<td>用户昵称</td>
</tr>
<tr>
<td style="text-align: left;">usermode</td>
<td style="text-align: left;">string</td>
<td>0游客,1会员,2分销商,3内部职员</td>
</tr>
<tr>
<td style="text-align: left;">userimg</td>
<td style="text-align: left;">string</td>
<td>用户图像url</td>
</tr>
<tr>
<td style="text-align: left;">mbphone</td>
<td style="text-align: left;">string</td>
<td>手机号</td>
</tr>
<tr>
<td style="text-align: left;">sex</td>
<td style="text-align: left;">string</td>
<td>性别</td>
</tr>
</tbody>
</table>
<h5>失败返回示例</h5>
<pre><code>{
"code": 0,
"msg": "请求不合法"
}
</code></pre>
<h5>失败返回示例的参数说明</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">code</td>
<td style="text-align: left;">string</td>
<td>0表示产生错误</td>
</tr>
<tr>
<td style="text-align: left;">msg</td>
<td style="text-align: left;">string</td>
<td>如果有错误时此值不为空</td>
</tr>
</tbody>
</table>
<h5>备注</h5>
<p><strong>示例代码:</strong> </p>
<pre><code class="language-language"><!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<div>sign:</div>
<div id="id_sign"></div>
<br />
<div>json:</div>
<div id="id_json"></div>
<br />
<div id="id_error"></div>
<img alt="" src="" id="id_img" style="display:none">
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>
<script>
//全局对象AppConfig存放服务器传来的数据
var AppConfig = {};
//AppConfig.serverurl = "http://127.0.0.1/ErpServer/h5api/10001/sa2022_1";
AppConfig.serverurl= GetServerURL();
AppConfig.token = "";
AppConfig.singkey = "";
AppConfig.userid = 0;//用户登录后服务器传来的用户id
AppConfig.username = "";//用户登录后服务器传来的用户名
AppConfig.shopid = 0;//用户登录后服务器传来的店铺id
AppConfig.shopname = "";//用户登录后服务器传来的店铺名
AppConfig.shoplogo = "";//用户登录后服务器传来的店铺logo
//用户注册
function reguser() {
var obj = new Object();
obj.actionName = "reguser";
obj.mbphone = "18012345678";
obj.codeid = 2;
obj.msgcode = "123456";
obj.regtype = 0;
obj.username = "测试用户";
obj.nickname = "测试用户";
obj.userimg = "";
obj.sex = "";
obj.usermode = 1;
obj.upw = "123456";
postdata(obj);
}
//重置密码
function resetpw() {
var obj = new Object();
obj.actionName = "resetpwd";
obj.mbphone = "18062639596";
obj.codeid = 1;
obj.msgcode = "123456";
obj.upw = "123456";
obj.resettype = 0;
postdata(obj);
}
//获取手机短信验证码
function getmsgcode() {
var obj = new Object();
obj.actionName = "getmsgcode";
obj.mbphone = "18062639596";
obj.codeid = 1;
obj.checkcode = "123456";
obj.msgfor = 0;
postdata(obj);
}
//获取图形验证码
function getcode() {
var obj = new Object();
obj.actionName = "getcode";
postdata(obj);
}
//获取店铺信息
function getshop() {
var obj = new Object();
obj.actionName = "getshop";
postdata(obj);
}
//用户登录
function login() {
debugger;
var obj = new Object();
obj.actionName = "login";
obj.logintype = 0;
obj.mbphone = "18062639596";
obj.upw = "123456";
postdata(obj);
}
function postdata(obj) {
//将对象obj转换为json字符串
var jsondata = JSON.stringify(obj);
document.getElementById("id_json").innerHTML = jsondata;
//数据签名
var sign = "";
if (AppConfig.token == null || AppConfig.token.length == 0)
sign = calculateMD5("json=" + jsondata);
else
sign = calculateMD5("json=" + jsondata + "&key=" + AppConfig.singkey + AppConfig.token);
sign = sign.toUpperCase();
document.getElementById("id_sign").innerHTML = sign;
debugger;
//发送请求
var xhr = new XMLHttpRequest();
xhr.open('POST', AppConfig.serverurl, true);
xhr.setRequestHeader('Content-Type', 'application/json');
//在header中传递token
xhr.setRequestHeader('token', AppConfig.token);
//将sign放在header中传递
xhr.setRequestHeader('sign', sign);
xhr.onload = function () {
if (this.status == 200) {
var res = this.responseText;
if (res == null || res.length == 0) {
alert("返回数据为空");
return;
}
document.getElementById("id_error").innerHTML = res;
//解析返回数据
var obj = JSON.parse(res);
if (obj.code == 1) {
debugger;
if (obj.actionName == "getcode") {
document.getElementById("id_img").src = obj.data.img;
document.getElementById("id_img").style.display = "";
}
} else {
if (obj.code == 2) {
//店铺未上线,跳转店铺建立中的页面
} else if (obj.code == 3) {
//店铺已关闭,跳转到警请期待页面
} else if (obj.code == 4) {
//店铺已到期,跳转到续费页面
} else if (obj.code == 5) {
//请重新登录,跳转到登录页面
} else if (obj.code == 6) {
//超时或未登录,跳转到登录页面
} else if (obj.code == 7) {
//签名不正确,跳转到登录页面
}
}
}
};
//发送数据
xhr.send(jsondata);
}
// 使用 CryptoJS 计算 MD5 哈希值
function calculateMD5(value) {
return CryptoJS.MD5(value).toString();
}
function GetServerURL() {
//获取浏览器中域名的部分
var domain = window.location.origin;
//获取浏览器中参数部分cmid=12116&acdb=st0908_1
var search = window.location.search.toLowerCase();
//解析参数部分
var params = new URLSearchParams(search);
//获取参数cmid的值
var cmid = params.get("cmid");
var acdb = params.get("acdb");
var serverurl = domain + "/ErpServer/h5api/" + cmid + "/" + acdb;
return serverurl;
}
login();
</script>
</body>
</html></code></pre>