点菜宝基站信道设置_点菜宝怎么连接基站

点菜宝基站信道设置_点菜宝怎么连接基站最近在跟菜鸟天地系统对接,业务中涉及到单点接入,感觉其实现思想很不错,现分享一下,供大家参考:从CP内部系统进入菜鸟天地,也就是从菜鸟的合作伙伴(物流或快递公司内部系统)单点跳转进入菜鸟天地系统红

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

最近在跟菜鸟天地系统对接,业务中涉及到单点接入,感觉其实现思想很不错,现分享一下,供大家参考:

从CP内部系统进入菜鸟天地,也就是从菜鸟的合作伙伴(物流或快递公司内部系统)单点跳转进入菜鸟天地系统

点菜宝基站信道设置_点菜宝怎么连接基站

 

红色的请求需要CP实现(合作方):

1、LINK接口( ):服务器端获取快速登录菜鸟的令牌(loginToken) CNUSER_GET_LOGIN_TOKEN 请求参数:员工工号 返回参数:loginToken

2、生成快速登录菜鸟的URL,并从浏览器发起302跳转 #*http://login.cainiao.com/cplogin.htm?loginToken=2nAiCDsSZVXBS8kLApj9iA&redirectUrl=http%3a%2f%2ffly.cainiao.com goto:登陆后的目标跳转地址。如菜鸟天地的地址为:http%3a%2f%2ffly.cainiao.com login_token:菜鸟返回的令牌(注意:login_token使用一次后即失效,且LINK接口返回起60秒后超时失效)

 

 

功能实现:用户在合作方系统登录后,访问菜鸟天地链接时调用菜鸟接口返回认证token,再构造地址跳转到菜鸟天地系统,token使用一次后失效

从合作方登录菜鸟天地

 

 

        /// <summary>
        /// 登录菜鸟天地系统
        /// </summary>
        /// <returns></returns>
public ActionResult CaiNiaoTianDi()
        {
            string userCode = UserInfo.Code;
            try
            {
                JsonResult<string> result = CaiNiaoAPIUtilities.GetCaiNiaoLoginToken(userCode);
                if (result.Status)
                {
                    string token = result.ResultValue;
                    string url = string.Format("http://login.cainiao.com/cplogin.htm?loginToken={0}&redirectUrl=https://fly.cainiao.com", token);

                    return Redirect(url);
                }
                else
                {
                    return Content("登录菜鸟系统出错" + result.Data);
                }
            }
            catch (Exception ex)
            {
                NLogHelper.Warn(ex, "登录菜鸟系统异常");
                return Content("登录菜鸟系统异常");
            }
        }

 

        /// <summary>
        /// 获取登录菜鸟系统的token
        /// </summary>
        /// <param name="userCode"></param>
        /// <returns></returns>
        public static JsonResult<string> GetCaiNiaoLoginToken(string userCode)
        {
            JsonResult<string> result = new JsonResult<string>();
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            serializer.RegisterConverters(new JavaScriptConverter[] { new ExpandoJsonConverter() });
            result.Status = false;
            result.StatusMessage = "未知错误";
            string response = string.Empty;
            string logisticsInterface = string.Empty;
            string dataDigest = string.Empty;
            // 已在菜鸟平台配置json格式数据传输
            using (WebClient webClient = new WebClient())
            {
                NameValueCollection postValues = Init();
                dynamic user = new ExpandoObject();
                user.employee_no = userCode;
                // 调用删除
                logisticsInterface = serializer.Serialize(user);
                dataDigest = CaiNiaoApiUtilities.SignSdkRequest(logisticsInterface, secretKey);

                // 根据员工工号删除用户信息
                postValues.Add("employee_no", userCode);
                postValues.Add("msg_type", "CNUSER_GET_LOGIN_TOKEN");
                postValues.Add("data_digest", dataDigest);
                postValues.Add("logistics_interface", logisticsInterface);
                byte[] responseArray = webClient.UploadValues(url, postValues);
                response = Encoding.UTF8.GetString(responseArray);
                // 根据返回值判断
                dynamic obj = serializer.Deserialize<ExpandoObject>(response);
                // 逻辑判断 
                if (IsPropertyExist(obj, "success") && obj.success == "true")
                {
                    result.Status = true;
                    result.ResultValue = obj.login_token;
                    result.Data = response;
                    result.StatusMessage = "成功返回";
                }
                else
                {
                    result.Status = false;
                    result.Data = response;
                    result.StatusMessage = "调用失败";
                }
            }

            return result;
        }

 

        /// <summary>
        /// 签名
        /// </summary>
        /// <param name="content"></param>
        /// <param name="secretKey"></param>
        /// <returns></returns>
        public static string SignSdkRequest(string content, string secretKey)
        {
            byte[] binaryData = Encoding.UTF8.GetBytes(content + secretKey);
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] output = md5.ComputeHash(binaryData);
            string dataDigest = Convert.ToBase64String(output);
            return dataDigest;
        }

 

        /// <summary>
        /// 初始化
        /// </summary>
        /// <returns></returns>
        private static NameValueCollection Init()
        {
            NameValueCollection postValues = new NameValueCollection();
            postValues.Add("logistic_provider_id", logisticProviderId);
            postValues.Add("to_code", "");
            return postValues;
        }

 

java版本的签名方法

        String logisticsInterface = JSONArray.toJSONString(userMap);
        String dataSign = logisticsInterface + secretKey;
        byte[] binaryData=dataSign.getBytes("UTF-8");
        byte[] signatureData = DigestUtils.md5Digest(binaryData);
        String  dataDigest = Base64.encodeBase64String(signatureData);

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167864.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android手机上使用Socks5全局代理-教程+软件

    Android手机上使用Socks5全局代理-教程+软件前言:在Android上使用系统自带的代理,限制灰常大,仅支持系统自带的浏览器。这样像QQ、飞信、微博等这些单独的App都不能使用系统的代理。如何让所有软件都能正常代理呢?ProxyDroid这个软件能帮你解决!使用方法及步骤如下:一、推荐从GooglePlay下载ProxyDroid,目前最新版本是v2.6.6。二、对ProxyDroid进行配置(基本配置:)…

    2022年6月24日
    609
  • 物联网的架构_物联网的应用有哪些

    物联网的架构_物联网的应用有哪些物联网是一个层次化的网络,从下往上可分为四层:感知层、网络层、平台层和应用层。在各层之间,信息不是单向传递的,也有交互或控制。在所传递的信息中,主要是物的信息,包括物的识别码、物的静态信息、物的动态信息等。感知层:感知层是物联网的皮肤和五官,可以识别物体,采集信息。数据采集与感知主要用于采集物理世界中发生的物理事件和数据,包括各类物理量、标识、音频、视频数据。物联网的数据采集涉及传感器、…

    2022年9月18日
    1
  • 5.4 图层样式面板的实例讲解 [原创Ps教程][通俗易懂]

    5.4 图层样式面板的实例讲解 [原创Ps教程][通俗易懂]原文:http://coolketang.com/staticPhotoshop/5a98d4abac502e0032ef2fae.html1.本节课程将为您演示,[图层样式面板]的使用。为了方便使用图层的各种样式,首先点击工具箱中的[横排文字工具],创建一个文本图层。 2.然后在画面的适当位置上点击,确定输入文字的起点位置。 3.接着输入一行文字。 4.最后点击对号图标,完成文字的输入。…

    2025年9月12日
    4
  • 详解 傅里叶变换的物理意义

    详解 傅里叶变换的物理意义这是一篇辅助理解傅里叶变换的博客,下面如果有不适合或错误的表达,请大家在评论区给我留言,我一定积极修改。一、傅里叶分析关于任意函数的傅里叶变换频域(频率,振幅、相位三维正交)图像,韩同学给出一个形象的解释,这里借用韩同学的图片准确表达一下,一个函数的傅里叶级数展开如下式,二、傅里叶变换在了解了时域与频域的空间特征后,那我们再来看下傅里叶变换,这里可以看潘工的文章,潘工有趣的引入了:简单→分解→正交→内积思想,并提出函数之间内积(投影)的定义,,其中g表示共轭。e^ix本质上是一个单位圆,则原

    2025年7月27日
    5
  • xmind真正有用的几个快捷键(私人总结)

    xmind真正有用的几个快捷键(私人总结)自己总结的常用并且有用的快捷键,不是百度来的,自己一个个地摸索出来的:Ctrl+Shift+L快捷键助手Ctrl+Home返回中心主题Enter插入主题Tab插入子主题F2编辑主题F3添加/编辑标签F4添加/编辑备注F6下钻Shift+F6上钻Delete删除Ctrl+]插入摘要Ctrl+I插入图片Ctrl+Shift+H

    2022年5月27日
    41
  • 网页中嵌入特殊字体

    网页中嵌入特殊字体

    2021年5月26日
    104

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号