开发者社区> 问答> 正文

ISV 创建套件,回调URL 解析eventType 老是返回 checkcreatesuiteurl

ISV 创建套件,回调URL 解析eventType 老是返回 check_create_suite_url,因此没办法获取SuiteTicket
哪位小伙伴有解决过这个问题的,求指导……

展开
收起
蓝微 2016-05-04 05:03:51 4451 0
3 条回答
写回答
取消 提交回答
  • 套件要创建成功后才能获取ticket,这个回调的处理,可以参考下文档
    https://open-doc.dingtalk.com/doc2/detail.htm?spm=a219a.7629140.0.0.4Cz7GU&treeId=175&articleId=104945&docType=1
    2016-07-27 17:16:31
    赞同 展开评论 打赏
  • ReISV 创建套件,回调URL 解析eventType 老是返回 checkcreatesuiteurl
    楼主 这个问题怎么解决的呢  ,我也遇到了
    2016-07-27 16:51:56
    赞同 展开评论 打赏
  • ReISV 创建套件,回调URL 解析eventType 老是返回 checkcreatesuiteurl
                  #region 获取套件配置参数
                    string mToken = ConfigurationManager.AppSettings["Token"];
                    string mSuiteKey = "";
                    string mEncodingAesKey = ConfigurationManager.AppSettings["EncodingAESKey"];
                    mSuiteKey = "suite4xxxxxxxxxxxxxxx";
                    #endregion

                    #region 获取回调URL里面的参数
                    //url中的签名
                    string msgSignature = context.Request["signature"];
                    //url中的时间戳
                    string timeStamp = context.Request["timestamp"];
                    //url中的随机字符串
                    string nonce = context.Request["nonce"];
                    //post数据包数据中的加密数据
                    string encryptStr = GetPostParam(context);
                    #endregion

                    Helper.WriteLog("post方法");

                  
                    string sEchoStr = "";

                    #region 验证回调的url
                    SuiteAuth suiteAuth = new SuiteAuth();

                    Helper.WriteLog("mToken: " + mToken);
                    Helper.WriteLog("mEncodingAesKey: " + mEncodingAesKey);
                    Helper.WriteLog("msgSignature: " + msgSignature);
                    Helper.WriteLog("timeStamp: " + timeStamp);
                    Helper.WriteLog("nonce: " + nonce);
                    Helper.WriteLog("encryptStr: " + encryptStr);


                    var ret = suiteAuth.VerifyURL(mToken, mEncodingAesKey, msgSignature, timeStamp, nonce, encryptStr,
                        ref mSuiteKey);

                    if (ret != 0)
                    {
                        Helper.WriteLog("ERR: VerifyURL fail, ret: " + ret);
                        return;
                    }
                    #endregion

                    #region
                    //构造DingTalkCrypt

                    DingTalkCrypt dingTalk = new DingTalkCrypt(mToken, mEncodingAesKey, mSuiteKey);

                    string plainText = "";
                    dingTalk.DecryptMsg(msgSignature, timeStamp, nonce, encryptStr, ref plainText);

                    Hashtable tb = (Hashtable)JsonConvert.DeserializeObject(plainText, typeof(Hashtable));
                    string eventType = tb["EventType"].ToString();
                    string res = "success";
                    Helper.WriteLog("plainText:" + plainText);
                    Helper.WriteLog("eventType:" + eventType);
                    switch (eventType)-----------------------------------------------------------------------就是在这里,老是获取的是 check_create_suite_url
                    {
                      
                        case "suite_ticket"://定时推送Ticket
                            ConfigurationManager.AppSettings["SuiteTicket"] = tb["SuiteTicket"].ToString();
                            mSuiteKey = tb["SuiteKey"].ToString();
                            suiteAuth.SaveSuiteTicket(tb);
                            break;
                        case "tmp_auth_code"://钉钉推送过来的临时授权码
                            ConfigurationManager.AppSettings["TmpAuthCode"] = tb["AuthCode"].ToString();
                            suiteAuth.SaveTmpAuthCode(tb);
                            break;
                        case "change_auth":// do something;
                            break;
                        case "check_update_suite_url":
                            res = tb["Random"].ToString();
                            mSuiteKey = tb["TestSuiteKey"].ToString();
                            break;
                    }

                    timeStamp = Helper.GetTimeStamp().ToString();
                    string encrypt = "";
                    string signature = "";
                    dingTalk = new DingTalkCrypt(mToken, mEncodingAesKey, mSuiteKey);
                    dingTalk.EncryptMsg(res, timeStamp, nonce, ref encrypt, ref signature);
                    Hashtable jsonMap = new Hashtable
                    {
                        {"msg_signature", signature},
                        {"encrypt", encrypt},
                        {"timeStamp", timeStamp},
                        {"nonce", nonce}
                    };
                    string result = JsonConvert.SerializeObject(jsonMap);
                    Helper.WriteLog("result: " + result);

                    context.Response.Write(result);
    2016-05-04 05:05:17
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
神龙云服务器产品及技术深度解析 立即下载
弹性创造价值:基于ECS的最佳性价比实践解析 立即下载
又快又稳:阿里云下一代虚拟交换机解析 立即下载

相关镜像