unlee个人页面-阿里云开发者社区

个人介绍

暂无个人介绍

擅长的技术

获得更多能力
通用技术能力:

暂时未有相关通用技术能力~

云产品技术能力:

暂时未有相关云产品技术能力~

阿里云技能认证

详细说明
  • 高分内容
  • 最新动态
  • 文章
  • 问答
  • 提交了问题 2017-06-12

    C钉钉企业服务端开发获取Token项目源码示例

  • 提交了问题 2016-12-19

    个人承接企业对钉钉的二次开发业务

  • 提交了问题 2016-08-25

    各位大神,给个NET的ISV接入DEMO吧

  • 提交了问题 2016-08-14

    关于各种Token及Ticket问题的终级解决办法

  • 提交了问题 2016-08-01

    真实项目开源-签到提醒

正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
正在加载, 请稍后...
暂无更多信息
  • 回答了问题 2017-06-12

    关于调用扫码API的问题

    Re关于调用扫码API的问题
    客户端开发,都需要先调用 dd.config()函数
    踩0 评论0
  • 回答了问题 2017-06-12

    请求后台取不到code值获得userId有问题,一直验证失败(.NET)

    Re请求后台取不到code值获得userId有问题,一直验证失败(.NET)
    using System;
    using System.Security.Cryptography;
    using System.Text;

    namespace DingTalkApp.Services
    {
        public class DingTalkEncrypt
        {
            public static string GetSwcSH1(string value)
            {
                SHA1 algorithm = SHA1.Create();
                byte[] data = algorithm.ComputeHash(Encoding.UTF8.GetBytes(value));
                string sh1 = "";
                for (int i = 0; i < data.Length; i++)
                {
                    sh1 += data.ToString("x2").ToUpperInvariant();
                }
                return sh1;
            }
            /// <summary>
            /// 创建随机字符串
            /// </summary>
            /// <returns></returns>
            public static string createNonceStr()
            {
                int length = 16;
                string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
                string str = "";
                Random rad = new Random();
                for (int i = 0; i < length; i++)
                {
                    str += chars.Substring(rad.Next(0, chars.Length - 1), 1);
                }
                return str;
            }

            /// 将c# DateTime时间格式转换为Unix时间戳格式  
            /// <summary>  
            /// 将c# DateTime时间格式转换为Unix时间戳格式  
            /// </summary>  
            /// <param name="time">时间</param>  
            /// <returns>double</returns>  
            public static int ConvertDateTimeInt(System.DateTime time)
            {
                int intResult = 0;
                System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
                intResult = Convert.ToInt32((time - startTime).TotalSeconds);
                return intResult;
            }
        }
    }

    使用时如下
            [HttpGet]
            public System.Collections.IEnumerable GetDtConfig(string userid, string corpid)
            {
                if (!string.IsNullOrEmpty(corpid) && _context.DT_CorpTbs.Where(p => p.CorpID == corpid).Count() > 0)
                {

                    try
                    {
                        string jsurl;
                        var corptbid = _context.DT_CorpTbs.Where(p => p.CorpID == corpid).First();
                        DT_AppTb da = _context.DT_AppTbs.Where(p => p.DT_CorpTbCorpID == corpid).First();

                        jsurl = da.Url;



                        int timestamp = Services.DingTalkEncrypt.ConvertDateTimeInt(DateTime.Now);
                        string nonceStr = Services.DingTalkEncrypt.createNonceStr();
                        string[] paramArr = new String[] { "jsapi_ticket=" + _context.DT_TicketTbs.Where(p => p.DT_TokenTb.DT_CorpTbCorpID == corpid).Select(p => p.ticket).First(), "timestamp=" + timestamp, "noncestr=" + nonceStr, "url=" + jsurl };
                        // 这里参数的顺序要按照 key 值 ASCII 码升序排序
                        Array.Sort(paramArr);
                        // 将排序后的结果拼接成一个字符串
                        string content = string.Concat(paramArr[0], "&", paramArr[1], "&", paramArr[2], "&", paramArr[3]);

                        string signature = Services.DingTalkEncrypt.GetSwcSH1(content).ToLower();

                        ViewData["access_token"] = _context.DT_TokenTbs.Where(p => p.DT_CorpTbCorpID == corpid).Select(p => p.access_token).First();
                        ViewData["agentId"] = da.AgentID;
                        ViewData["corpId"] = corptbid.CorpID;
                        ViewData["timeStamp"] = timestamp;
                        ViewData["nonceStr"] = nonceStr;
                        ViewData["signature"] = signature;
                        ViewData["corpName"] = corptbid.CorpName;
                        ViewData["url"] = da.Url;
                        ViewData["dd_nav_bgcolor"] = da.Dd_nav_bgcolor;
                        return ViewData;

                    }
                    catch
                    {
                        return null;
                    }
                }
                else
                {
                    return null;
                }

            }


    踩0 评论0
  • 提交了问题 2017-06-12

    C钉钉企业服务端开发获取Token项目源码示例

  • 回答了问题 2017-06-12

    招聘钉钉二次开发程序员

    Re招聘钉钉二次开发程序员
    实现没问题,我前端UI比较弱,如果有个前端配合的话,可以帮你实现。
    踩0 评论0
  • 回答了问题 2017-02-13

    关于钉钉与自己线上项目管理项目相结合

    Re关于钉钉与自己线上项目管理项目相结合
    如果光是推送消息的话,可以实现,我帮你开发
    踩0 评论0
  • 回答了问题 2016-12-19

    希望开发团队尽快与我联系,为我企业量身打造OA办公系统

    Re希望开发团队尽快与我联系,为我企业量身打造OA办公系统
    楼主,如果仅仅想实现消息推送功能的话,你们自己应该能开发的
    踩0 评论0
  • 回答了问题 2016-12-19

    想让钉钉和我公司自己的购物平台訂單、售后系统衔接数据

    Re想让钉钉和我公司自己的购物平台訂單、售后系统衔接数据
    楼主,已经加你钉钉,了解一下具体需求,我是个人开发者
    踩0 评论0
  • 回答了问题 2016-12-19

    在实践中所反馈的真实感受(管理类)

    Re在实践中所反馈的真实感受(管理类)
    支持楼主,另外,楼主家公司如果有需要对钉钉自建应用及二次开发对接企业自有应用的,请联系我哟!
    踩0 评论0
  • 提交了问题 2016-12-19

    个人承接企业对钉钉的二次开发业务

  • 回答了问题 2016-12-19

    钉钉服务端的code

    Re钉钉服务端的code
    楼主,如果需要二次开发钉钉这个九宫格界面,请联系我。
    踩0 评论0
  • 回答了问题 2016-12-19

    支付宝收款商户流水钉钉怎么授权查询

    Re支付宝收款商户流水钉钉怎么授权查询
    一,用简道云,二、自己开发
    踩0 评论0
  • 回答了问题 2016-12-19

    如何将审批流程对接到我司自有系统?

    Re如何将审批流程对接到我司自有系统?
    你们是不是有个自己的审批?可以这样实现:在自有原审批里开发,然后推送OA消息到需要审批人那里。
    踩0 评论0
  • 回答了问题 2016-12-05

    钉钉能否和企业ERP对接?

    Re钉钉能否和企业ERP对接?
    那个K3有BOS服务端吗?我们这边EAS有BOS服务端的,然后金蝶的BOS服务端提供了接口,可以进行二次开发的,最近我打算研究金蝶EAS与钉钉的二次开发,有这方面需求的企业可以联系我,或者有需要做企业钉钉二次开发与自身业务做对接的,也可以联系我,我对企业自建应用开发比较在行,对ISV不太在行
    踩0 评论0
  • 提交了问题 2016-08-25

    各位大神,给个NET的ISV接入DEMO吧

  • 回答了问题 2016-08-25

    钉钉推送OA消息问题

    回 5楼摸摸哒、的帖子
    别看是手机或者桌面端,实际是h5,所以全都是H5页面
    踩0 评论0
  • 提交了问题 2016-08-14

    关于各种Token及Ticket问题的终级解决办法

  • 回答了问题 2016-08-14

    ISV接入钉钉详细示例以及代码(JAVA版本)  --服务窗代码部分放出

    ReISV接入钉钉详细示例以及代码JAVA版本
    我竟然是第一个回复的,支持楼主,顶个
    踩0 评论0
  • 回答了问题 2016-08-10

    谁能帮我用nowa工具在SaltUI上写一个简单的表单提交demo

    Re谁能帮我用nowa工具在SaltUI上写一个简单的表单提交demo
    参考nodejs的POST与GET
    踩0 评论0
  • 回答了问题 2016-08-08

    企业会话消息里的link链接,可以跳转到企业微应用吗

    Re企业会话消息里的link链接,可以跳转到企业微应用吗
    可以跳转
    踩0 评论0
  • 回答了问题 2016-08-08

    jsapi 发ding 没反应

    Rejsapi 发ding 没反应
    指的 userid
    踩0 评论0
正在加载, 请稍后...
滑动查看更多