简要描述:

  • 微信状态
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e178aca3677a48c&redirect_uri=http%3A%2F%2Fbt.sandieji.tech%2Fbs-plugins-wechat.html%3F_uri%3DaHR0cDovL2xvY2FsaG9zdDo1Nzc1Lz9fYXV0aFR5cGU9d2VjaGF0&response_type=code&scope=snsapi_userinfo&state=bt01002095cb1-f85c-4a2a-82f2-a72788c&connect_redirect=1&uin=MjQ5MTk1OTQyMQ%3D%3D&key=3d79cc18edb7d7372a2c84c1b56b3a7b6792addf2f8bf8dd300a22cc2aed71641a516fd278642dfd44b23fe672d03368&pass_ticket=25G85nadR2cbP3AVncXt4MdMkbwuBpHmziRSRzQ7XAQA8eR24A9vyATxaZ5n4qajvIrK8quKPpiZN3I09CjaUA==
  • 重定向回首页面
http://localhost:5775/?_authType=wechat&_code=071Tja0007vEhL1auI200E67Yw0Tja04&_state=bt010cac7ea48-a7ca-4f4e-8f28-497983c&code=071Tja0007vEhL1auI200E67Yw0Tja04&state=bt010cac7ea48-a7ca-4f4e-8f28-497983c

接口版本:

版本号 制定人 制定日期 修订日期
v3 陈碧贵 2019-01-20 xxxx-xx-xx

请求URL:

请求方式:

  • GET

请求头:

参数名 是否必须 类型 说明
XownerId string 项目唯一ID,对应bo_project {ownerId}
XsysId string 所属系统 对应 bo_system 表
XuserFromFirstShareId string 一级分享用户ID, bo_user user_id
XuserFromSecondShareId string 二级分享用户ID, bo_user user_id
XverifyApi string 加密规则encryptByDES(`${newGuid()}
XfilterAreaCode string 行政区编码, 对应 bo_sys_area area_code
Content-Type: string application/json; charset=utf-8 请求类型

请求参数:



参数名 是否必须 类型 说明
_fromSource string Wechat 来源微信公众号/wechatpc来源微信P
_nodejs string common-data 对应/Config/AppNodeJs/Plugins/fn- common-data.js, 通过nodejs插件,对响应结果进行二次处理 common-data 普通数据(小写驼峰)common-data-under 普通数据下划线
path参数名 是否必须 类型 说明
code string 微信返回码
state string 随机状态码

返回示例:

正确时返回:

{"data":"cUKy1ElLVNnAeN/t/ccklquf2h+QMhthFWBm/9dLP30cfngDsZ0Odw4ZxmkEQtN3Fdr14Qsi3QxGVvWePuqvGEiDfFSpUsuwResSDPtqWgP5ztyzYPkHhxPwV4S2QGhsU/+SApUkMGe0eiGwb35ItWoH6ejuvtEzYheBeRFRCi9sfJWhLNna7aIi5+TcypDUJfWE6fFBV9iobTlVTHWfRYapgV0b51ND72AJGtqOv4ZiBfp73tDkITHRcJF0M8cj7N3sw1r/Jbk7+6VznO00QjZBOuEPqpI3PzGR4Yua3DLgxKyWAbEv7ak0DFDon0x7NzXXoTOeBV5ETuxgvWaMBSXKKSeqmFr7EEqcickXNqkOt15rzMNXiwjNFmXiVjMYz0QHkE5Wn440I/MKEHA5DMItrkAp0DCnF9ux2J9Y39lBn2JTroGQ6SujbtLS6riX5DX4WGJxq/cvvsaLoK2d54Fg/AH1V5Hyf1gxG4dZQghi+tRvxbOyh7y7zldMIldSh9t9zB9Mpp4gkdptwy8StjdauZNGbQFqh2kMilee5YIMyxx3pvGXR50iGcs/f9iiRH2whrIIdXttYEFzkZN4RLWKcHcYISHI/MGGaFIeSQYQKcc9xeNlkaKvqONuFxAC","code":0,"success":true}

错误时返回:

{
    "code": 0,
    "message": ""
    "error":{
      errorCode:null,
      errorText:null
    }
    "success": false,
}

返回参数说明:

参数名 类型 说明
success bool true 表示数据请求成功(跟code=0一致),调用者优先使用
code int true 表示数据请求成功(跟code=0一致),调用者优先使用
data string Data 参数为加密的值, 结果作为微信登录的参数
cacheType string redis/sqlite/local 数据来源缓存 的类型(便于开发调试和性能优化)
cacheDate date 最后数据获取时间

前端加密代码:

let dataStr = decryptByDES(token);
        //解密
        let dataN = JSON.parse(dataStr);
        let dataT = {
            userId: null,
            account: {
                "userId": null,
                "batO": "ui",
                "nikeName": dataN.nikeName,
                "wxUnionId": dataN.wxUnionId
            },
            "sex": {
                "value": dataN.gender
            },
            "headIcon": dataN.headIcon
        }
        if (dataN.wxOpenId) {
            dataT.account.wxOpenId = dataN.wxOpenId;
        }
        if (dataN.wxAppOpenId) {
            dataT.account.wxAppOpenId = dataN.wxAppOpenId;
        }
        let userT = {
            loginType: "wechat",
            openUser: encryptByDES(JSON.stringify(dataT))
            // ,
            // openMKey: "",
            // openField: ""
        }
 doLogin(userT).then((temp) => {
            if (!temp) {
                //进入注册页面
                if (callback) callback({
                    success: false,
                    error: {
                        errorCode: 77000,
                        errorText: "微信登录失败",
                    }
                });
                store.dispatch("dataLoading", false);
                return;
            }
            if (!temp.data) {
                //进入注册页面
                if (callback) callback({
                    success: false,
                    error: {
                        errorCode: 77001,
                        errorText: "微信登录失败",
                    }
                });
                store.dispatch("dataLoading", false);
                return;
            }
            if (!temp.data.success) {
                //进入注册页面
                if (callback) callback({
                    success: false,
                    error: {
                        errorCode: 77003,
                        errorText: (temp.data.error || {}).errorText,
                    }
                });
                store.dispatch("dataLoading", false);
                return;
            }

            loginAuth.saveAuth(this, temp.data.user, temp.data.token);
            //跳转到指定页面
            // doRedirectUri(null, to, router);
            if (callback) callback(temp);
            store.dispatch("dataLoading", false);
        });

后端解密代码:

UserBo userBO = new UserBo
    {
        NikeName = jobjectU["nickname"].GetString(),
        Gender = jobjectU["sex"].GetInt32().ToString(),
        WxOpenId = tokenData.OpenId,
        WxUnionId = tokenData.UnionId,
        OpenId = tokenData.UnionId ?? tokenData.OpenId,//用于前端登录
        HeadIcon = jobjectU["headimgurl"].GetString(),
        Province = jobjectU["province"].GetString(),
        City = jobjectU["city"].GetString(),
        Country = jobjectU["country"].GetString()
    };
    if (!string.IsNullOrEmpty(userBO.Gender))
    {
        userBO.Gender = userBO.Gender == "1" ? "1" : "0";
    }
    string outToken = _desRepository.EncryptDefault(ownerId, sysId, JsonUtilText.Serialize(userBO, true, true, false));
    result.Data = outToken;
    result.Success = true;
    result.Error = null;
 /// <summary>
        /// 进行加密  系统默认的
        /// </summary>
        /// <param name="data">数据</param>
        /// <returns></returns>
        public string EncryptDefault(string ownerId, string sysId, string data)
        {
            try
            {
                var webSecurityVI = _configurationBuilderService.GetConfigurationAppAuthSecurity(ownerId, sysId).GetValue<string>($"security:webSecurityVI");
                var webSecurityKey = _configurationBuilderService.GetConfigurationAppAuthSecurity(ownerId, sysId).GetValue<string>($"security:webSecurityKey");
                string result = Encrypt(ownerId, sysId, data, webSecurityKey, webSecurityVI).Result;
                return result;
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "【加密错误】");
                return null;
            }
        }
文档更新时间: 2021-06-25 08:00   作者:admin