//方法
[HttpPost]
[Produces("application/json")]
public ActionResult DingDingBackEntity([FromQuery] string signature, [FromQuery] string timestamp, [FromQuery] string nonce, [FromBody] Encrypt encrypt)
{
//实例化钉钉解密类构造参数为对应的 应用中的token、appkeys、AppKey值
DingTalkEncryptor dingTalkEncryptor = new DingTalkEncryptor("", "", "");
//定义字符串接收解密后的值
string returnDate = dingTalkEncryptor.getDecryptMsg(signature, timestamp, nonce, encrypt.encrypt);
JToken jToken = JToken.Parse(returnDate);
//取出事件类型字段
string EventType = jToken["EventType"].ToString();
//这里解密以后取出的这个EventType这个参数对应的就是你所要匹配的事件了具体的事件参数类型可查看钉钉的接口文档
//https://open.dingtalk.com/document/org/event-list-1
if (EventType == "check_url")
{
_logger.LogInformation("check_url 测试成功!");
}
else if (EventType == "bpms_task_change" )
{
}
else if( EventType == "bpms_instance_change")
{
}
else
{
}
//将json串中的指定值取出
var msg = dingTalkEncryptor.getEncryptedMap("success");
DingDingBackEntity back = new DingDingBackEntity();
back.msg_signature = msg["msg_signature"];
back.encrypt = msg["encrypt"];
back.timeStamp = msg["timeStamp"];
back.nonce = msg["nonce"];
return Ok(back);
}
//接收参数的类
public class Encrypt
{
public string encrypt { get; set; }
}
//返回参数的类
public class DingDingBackEntity
{
public string msg_signature { get; set; }
public string encrypt { get; set; }
public string timeStamp { get; set; }
public string nonce { get; set; }
}